diff --git a/.gitignore b/.gitignore index c47ffece..a6603873 100644 --- a/.gitignore +++ b/.gitignore
@@ -43,6 +43,7 @@ .project .pydevproject .checkstyle +compile_commands.json cscope.* GPATH GRTAGS
diff --git a/DEPS b/DEPS index ba5735a..5193581 100644 --- a/DEPS +++ b/DEPS
@@ -121,11 +121,11 @@ # 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': 'fad5c773f7b60d2528dae4ccefef7bb5501f0f7b', + 'skia_revision': 'ede88ab2b4144bef441a928003cb2147abbdbb2c', # 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': '9df9418edf64d6a080ba569ef43cd5ca0171a820', + 'v8_revision': '6bf2d7999b7d4193221f058a70962b181abf58d3', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. @@ -1036,7 +1036,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + '71b05185eb636b7325e42376892a6b4ce6e63b98', + Var('android_git') + '/platform/external/perfetto.git' + '@' + '0e3138ee22917db8e6e24cb809b9a384fe07662e', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + 'ac0d98b5cee6c024b0cffeb4f8f45b6fc5ccdb78', @@ -1199,7 +1199,7 @@ Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + 'db52df17f0d012983dc281e4864c71485a86bd0e', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + 'b0397d69a93a909fc0b29ffdb9236bab1e1b2db7', + Var('webrtc_git') + '/src.git' + '@' + '190713c7cd0fc02b95ccd94baae5f184d6529596', 'src/third_party/xdg-utils': { 'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d', @@ -1240,7 +1240,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@fbbf7a4393acfe639869265fc1bebdeafa85bfee', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@80ca3eda94ce278ca56f5c180aa87bbeadd95949', 'condition': 'checkout_src_internal', },
diff --git a/WATCHLISTS b/WATCHLISTS index fba0621..db0a3c53 100644 --- a/WATCHLISTS +++ b/WATCHLISTS
@@ -2065,7 +2065,6 @@ 'cc-resources': ['danakj+watch@chromium.org'], 'cc-scheduler': ['scheduler-bugs+cc@chromium.org'], 'certificate_transparency': ['certificate-transparency-chrome@googlegroups.com', - 'eranm@chromium.org', 'martijn+crwatch@martijnc.be', 'rsleevi+watch@chromium.org'], 'chrome_cleaner': ['csharp+watch@chromium.org',
diff --git a/android_webview/browser/aw_draw_fn_impl.cc b/android_webview/browser/aw_draw_fn_impl.cc index 51ad6ca58..168e2c8 100644 --- a/android_webview/browser/aw_draw_fn_impl.cc +++ b/android_webview/browser/aw_draw_fn_impl.cc
@@ -21,6 +21,7 @@ #include "third_party/skia/include/gpu/vk/GrVkBackendContext.h" #include "third_party/skia/include/gpu/vk/GrVkExtensions.h" #include "third_party/skia/src/gpu/vk/GrVkSecondaryCBDrawContext.h" +#include "ui/gfx/color_space.h" #include "ui/gl/gl_bindings.h" #include "ui/gl/gl_context_egl.h" #include "ui/gl/gl_image_ahardwarebuffer.h" @@ -360,6 +361,23 @@ for (size_t i = 0; i < base::size(hr_params.transform); ++i) { hr_params.transform[i] = params->transform[i]; } + + if (params->version >= 2) { + skcms_TransferFunction transfer_fn{ + params->transfer_function_g, params->transfer_function_a, + params->transfer_function_b, params->transfer_function_c, + params->transfer_function_d, params->transfer_function_e, + params->transfer_function_f}; + skcms_Matrix3x3 to_xyz; + static_assert(sizeof(to_xyz.vals) == sizeof(params->color_space_toXYZD50), + "Color space matrix sizes do not match"); + memcpy(&to_xyz.vals[0][0], ¶ms->color_space_toXYZD50[0], + sizeof(to_xyz.vals)); + sk_sp<SkColorSpace> color_space = + SkColorSpace::MakeRGB(transfer_fn, to_xyz); + if (color_space) + hr_params.color_space = gfx::ColorSpace(*color_space); + } render_thread_manager_.DrawOnRT(false /* save_restore */, &hr_params); } @@ -485,7 +503,8 @@ skcms_TransferFunction transfer_fn{ params->transfer_function_g, params->transfer_function_a, params->transfer_function_b, params->transfer_function_c, - params->transfer_function_e, params->transfer_function_f}; + params->transfer_function_d, params->transfer_function_e, + params->transfer_function_f}; skcms_Matrix3x3 to_xyz; static_assert(sizeof(to_xyz.vals) == sizeof(params->color_space_toXYZD50), "Color space matrix sizes do not match");
diff --git a/android_webview/browser/aw_proxying_url_loader_factory.cc b/android_webview/browser/aw_proxying_url_loader_factory.cc index 5785cf4..ae8b18fa8 100644 --- a/android_webview/browser/aw_proxying_url_loader_factory.cc +++ b/android_webview/browser/aw_proxying_url_loader_factory.cc
@@ -518,6 +518,10 @@ std::unique_ptr<AwContentsIoThreadClient> InterceptedRequest::GetIoThreadClient() { + if (request_.originated_from_service_worker) { + return AwContentsIoThreadClient::GetServiceWorkerIoThreadClient(); + } + // |process_id_| == 0 indicates this is a navigation, and so we should use the // frame_tree_node_id API (with request_.render_frame_id). return process_id_
diff --git a/android_webview/browser/hardware_renderer.cc b/android_webview/browser/hardware_renderer.cc index 10b51a1..37a82d4 100644 --- a/android_webview/browser/hardware_renderer.cc +++ b/android_webview/browser/hardware_renderer.cc
@@ -158,7 +158,7 @@ params->clip_bottom - params->clip_top); surfaces_->DrawAndSwap(viewport, clip, transform, surface_size_, viz::SurfaceId(frame_sink_id_, child_id_), - device_scale_factor_); + device_scale_factor_, params->color_space); } void HardwareRenderer::AllocateSurface() {
diff --git a/android_webview/browser/hardware_renderer.h b/android_webview/browser/hardware_renderer.h index 1fdcd6b..642475d 100644 --- a/android_webview/browser/hardware_renderer.h +++ b/android_webview/browser/hardware_renderer.h
@@ -13,6 +13,7 @@ #include "base/memory/ref_counted.h" #include "components/viz/common/surfaces/frame_sink_id.h" #include "services/viz/public/interfaces/compositing/compositor_frame_sink.mojom.h" +#include "ui/gfx/color_space.h" namespace viz { class CompositorFrameSinkSupport; @@ -34,6 +35,7 @@ int height; bool is_layer; float transform[16]; + gfx::ColorSpace color_space; }; class HardwareRenderer : public viz::mojom::CompositorFrameSinkClient {
diff --git a/android_webview/browser/net/aw_cookie_store_wrapper_unittest.cc b/android_webview/browser/net/aw_cookie_store_wrapper_unittest.cc index 4fee9204..fb58ad0 100644 --- a/android_webview/browser/net/aw_cookie_store_wrapper_unittest.cc +++ b/android_webview/browser/net/aw_cookie_store_wrapper_unittest.cc
@@ -66,16 +66,16 @@ // Run the standard cookie tests with AwCookieStoreWrapper. Macro must be in // net namespace. namespace net { -INSTANTIATE_TYPED_TEST_CASE_P(AwCookieStoreWrapper, - CookieStoreTest, - android_webview::AwCookieStoreWrapperTestTraits); -INSTANTIATE_TYPED_TEST_CASE_P(AwCookieStoreWrapper, - CookieStoreChangeGlobalTest, - android_webview::AwCookieStoreWrapperTestTraits); -INSTANTIATE_TYPED_TEST_CASE_P(AwCookieStoreWrapper, - CookieStoreChangeUrlTest, - android_webview::AwCookieStoreWrapperTestTraits); -INSTANTIATE_TYPED_TEST_CASE_P(AwCookieStoreWrapper, - CookieStoreChangeNamedTest, - android_webview::AwCookieStoreWrapperTestTraits); +INSTANTIATE_TYPED_TEST_SUITE_P(AwCookieStoreWrapper, + CookieStoreTest, + android_webview::AwCookieStoreWrapperTestTraits); +INSTANTIATE_TYPED_TEST_SUITE_P(AwCookieStoreWrapper, + CookieStoreChangeGlobalTest, + android_webview::AwCookieStoreWrapperTestTraits); +INSTANTIATE_TYPED_TEST_SUITE_P(AwCookieStoreWrapper, + CookieStoreChangeUrlTest, + android_webview::AwCookieStoreWrapperTestTraits); +INSTANTIATE_TYPED_TEST_SUITE_P(AwCookieStoreWrapper, + CookieStoreChangeNamedTest, + android_webview::AwCookieStoreWrapperTestTraits); } // namespace net
diff --git a/android_webview/browser/surfaces_instance.cc b/android_webview/browser/surfaces_instance.cc index 8917d97..824dc4c 100644 --- a/android_webview/browser/surfaces_instance.cc +++ b/android_webview/browser/surfaces_instance.cc
@@ -81,12 +81,6 @@ std::move(output_surface_holder), std::move(scheduler), nullptr /* current_task_runner */); display_->Initialize(this, frame_sink_manager_->surface_manager()); - // TODO(ccameron): WebViews that are embedded in WCG windows will want to - // specify gfx::ColorSpace::CreateExtendedSRGB(). This situation is not yet - // detected. - // https://crbug.com/735658 - gfx::ColorSpace display_color_space = gfx::ColorSpace::CreateSRGB(); - display_->SetColorSpace(display_color_space, display_color_space); frame_sink_manager_->RegisterBeginFrameSource(begin_frame_source_.get(), frame_sink_id_); @@ -121,9 +115,14 @@ const gfx::Transform& transform, const gfx::Size& frame_size, const viz::SurfaceId& child_id, - float device_scale_factor) { + float device_scale_factor, + const gfx::ColorSpace& color_space) { DCHECK(base::ContainsValue(child_ids_, child_id)); + gfx::ColorSpace display_color_space = + color_space.IsValid() ? color_space : gfx::ColorSpace::CreateSRGB(); + display_->SetColorSpace(display_color_space, display_color_space); + // Create a frame with a single SurfaceDrawQuad referencing the child // Surface and transformed using the given transform. std::unique_ptr<viz::RenderPass> render_pass = viz::RenderPass::Create();
diff --git a/android_webview/browser/surfaces_instance.h b/android_webview/browser/surfaces_instance.h index 834ab5dc..b9dc83d 100644 --- a/android_webview/browser/surfaces_instance.h +++ b/android_webview/browser/surfaces_instance.h
@@ -15,6 +15,7 @@ #include "components/viz/common/surfaces/surface_id.h" #include "components/viz/service/display/display_client.h" #include "services/viz/public/interfaces/compositing/compositor_frame_sink.mojom.h" +#include "ui/gfx/color_space.h" namespace gfx { class Rect; @@ -48,7 +49,8 @@ const gfx::Transform& transform, const gfx::Size& frame_size, const viz::SurfaceId& child_id, - float device_scale_factor); + float device_scale_factor, + const gfx::ColorSpace& color_space); void AddChildId(const viz::SurfaceId& child_id); void RemoveChildId(const viz::SurfaceId& child_id);
diff --git a/android_webview/public/browser/draw_fn.h b/android_webview/public/browser/draw_fn.h index 7c4ee42..767c8924 100644 --- a/android_webview/public/browser/draw_fn.h +++ b/android_webview/public/browser/draw_fn.h
@@ -15,7 +15,8 @@ // android to chromium are versioned. // // 1 is Android Q. This matches kAwDrawGLInfoVersion version 3. -static const int kAwDrawFnVersion = 1; +// 2 Adds transfer_function_* and color_space_toXYZD50 to AwDrawFn_DrawGLParams. +static const int kAwDrawFnVersion = 2; struct AwDrawFn_OnSyncParams { int version; @@ -59,6 +60,16 @@ // Input: current transformation matrix in surface pixels. // Uses the column-based OpenGL matrix format. float transform[16]; + + // Input: Color space parameters. + float transfer_function_g; + float transfer_function_a; + float transfer_function_b; + float transfer_function_c; + float transfer_function_d; + float transfer_function_e; + float transfer_function_f; + float color_space_toXYZD50[9]; }; struct AwDrawFn_InitVkParams {
diff --git a/android_webview/test/shell/src/draw_gl/draw_fn.cc b/android_webview/test/shell/src/draw_gl/draw_fn.cc index e3a0abe..1903098 100644 --- a/android_webview/test/shell/src/draw_gl/draw_fn.cc +++ b/android_webview/test/shell/src/draw_gl/draw_fn.cc
@@ -154,6 +154,24 @@ params.transform[13] = -scroll_y; params.transform[14] = 0.0; params.transform[15] = 1.0; + + // Hard coded value for sRGB. + params.transfer_function_g = 2.4f; + params.transfer_function_a = 0.947867f; + params.transfer_function_b = 0.0521327f; + params.transfer_function_c = 0.0773994f; + params.transfer_function_d = 0.0404499f; + params.transfer_function_e = 0.f; + params.transfer_function_f = 0.f; + params.color_space_toXYZD50[0] = 0.436028f; + params.color_space_toXYZD50[1] = 0.385101f; + params.color_space_toXYZD50[2] = 0.143091f; + params.color_space_toXYZD50[3] = 0.222479f; + params.color_space_toXYZD50[4] = 0.716897f; + params.color_space_toXYZD50[5] = 0.0606241f; + params.color_space_toXYZD50[6] = 0.0139264f; + params.color_space_toXYZD50[7] = 0.0970921f; + params.color_space_toXYZD50[8] = 0.714191; data.functor_callbacks->draw_gl(functor, data.data, ¶ms); }
diff --git a/ash/accelerators/accelerator_controller_unittest.cc b/ash/accelerators/accelerator_controller_unittest.cc index 3a81b1d..7a2ce32 100644 --- a/ash/accelerators/accelerator_controller_unittest.cc +++ b/ash/accelerators/accelerator_controller_unittest.cc
@@ -1641,7 +1641,7 @@ DISALLOW_COPY_AND_ASSIGN(MediaSessionAcceleratorTest); }; -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( , MediaSessionAcceleratorTest, testing::Values(
diff --git a/ash/components/strings/ash_components_strings_te.xtb b/ash/components/strings/ash_components_strings_te.xtb index ac5f2c5..0737fde 100644 --- a/ash/components/strings/ash_components_strings_te.xtb +++ b/ash/components/strings/ash_components_strings_te.xtb
@@ -9,7 +9,7 @@ <translation id="1290373024480130896"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="MODIFIER3" /><ph name="SEPARATOR3" /><ph name="KEY" /></translation> <translation id="1293699935367580298">Esc</translation> <translation id="1299858300159559687">మీ ప్రస్తుత పేజీని ముద్రించండి</translation> -<translation id="1383876407941801731">శోధించు</translation> +<translation id="1383876407941801731">వెతుకు</translation> <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> లేదా <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation> <translation id="1477442857810932985">పంక్తి చివరికి వెళ్లు</translation> <translation id="1510238584712386396">లాంచర్</translation> @@ -25,7 +25,7 @@ <translation id="1996162290124031907">తదుపరి ట్యాబ్కు వెళ్లండి</translation> <translation id="2010818616644390445">విండోలో చివరి ట్యాబ్కు వెళ్లండి</translation> <translation id="2040706009561734834">లాంచర్ని తెరవండి/మూసివేయండి</translation> -<translation id="2088054208777350526">కీబోర్డ్ షార్ట్కట్ల కోసం శోధించు</translation> +<translation id="2088054208777350526">కీబోర్డ్ షార్ట్కట్ల కోసం వెతకండి</translation> <translation id="2125211348069077981"><ph name="ALT" /><ph name="SEPARATOR" /><ph name="E" /> లేదా <ph name="F" /></translation> <translation id="2145908266289632567">వచన సవరణ</translation> <translation id="215292019801409139"><ph name="SEARCH" /><ph name="SEPARATOR" /> 1 నుండి =</translation> @@ -62,7 +62,7 @@ <translation id="3256109297135787951">మీ అరలోని ఒక అంశానికి గల హైలైట్ని తీసివేయండి</translation> <translation id="3288816184963444640">ప్రస్తుత విండోను మూసివేయండి</translation> <translation id="3407560819924487926">కార్య నిర్వాహకుడిని తెరవండి</translation> -<translation id="3422679037938588196">మీ శోధన కోసం తరువాత సరిపోలికకు వెళ్లండి</translation> +<translation id="3422679037938588196">మీ శోధనకు వచ్చిన మునుపటి సరిపోలికకు వెళ్లండి</translation> <translation id="344577624355799426"><ph name="ALT" /> లేదా <ph name="SEARCH" /><ph name="SEPARATOR" /><ph name="DOWN" /></translation> <translation id="353037708190149633">మీ ప్రస్తుత విండోలో తెరిచి ఉన్న అన్ని పేజీలను బుక్మార్క్ల వలె కొత్త ఫోల్డర్లో సేవ్ చేయండి</translation> <translation id="355103131818127604">లింక్ను కొత్త ట్యాబ్లో బ్యాక్గ్రౌండ్లో తెరవండి</translation> @@ -108,7 +108,7 @@ <translation id="5316716239522500219">మానిటర్లను ప్రతిబింబించు</translation> <translation id="539072479502328326">డాక్ చేసిన మాగ్నిఫైయర్ను ఆన్ లేదా ఆఫ్ చేస్తుంది</translation> <translation id="5541719484267030947">ట్యాబ్ను లాగే సమయంలో, <ph name="ESC" />ని నొక్కండి</translation> -<translation id="5554139136362089836">ప్రస్తుత పేజీని శోధించండి</translation> +<translation id="5554139136362089836">ప్రస్తుత పేజీని వెతకండి</translation> <translation id="5563050856984839829"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" />ను నొక్కి, లింక్ను క్లిక్ చేయండి</translation> <translation id="561814908794220892">వెబ్పేజీని కొత్త ట్యాబ్లో తెరవండి</translation> <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> లేదా <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation> @@ -138,7 +138,7 @@ <translation id="649811797655257835">ఫైల్ని ఎంచుకుని, ఆపై <ph name="SPACE" />ని నొక్కండి</translation> <translation id="6556040137485212400">అత్యంత ఎక్కువ సమయం నుండి ఉపయోగించని విండోని తెరవండి</translation> <translation id="666343722268997814">హైలైట్ చేసిన అంశం కోసం కుడి-క్లిక్ మెనూను తెరవండి</translation> -<translation id="6671538777808758331">మీ శోధన కోసం తరువాత సరిపోలికకు వెళ్లండి</translation> +<translation id="6671538777808758331">మీ శోధనకు వచ్చిన తర్వాతి సరిపోలికకు వెళ్లండి</translation> <translation id="6681606577947445973"><ph name="REFRESH" /> లేదా <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="R" /></translation> <translation id="6690765639083431875">ఎడమ వైపున విండోని డాక్ చేయండి</translation> <translation id="6692847073476874842">ఫైల్స్ యాప్లో ఫైల్ను ప్రివ్యూ చేయండి</translation> @@ -176,7 +176,7 @@ <translation id="8388247778047144397">లింక్ను ట్యాబ్ స్ట్రిప్లోని ఖాళీ ప్రాంతంలోకి లాగండి</translation> <translation id="8389638407792712197">కొత్త విండోని తెరవండి</translation> <translation id="8429696719963529183">F కీలు (F1 నుండి F12 వరకు) ఉపయోగించండి</translation> -<translation id="8537650670971624753">శోధన మోడ్ నుండి నిష్క్రమించు</translation> +<translation id="8537650670971624753">శోధన మోడ్ నుండి నిష్క్రమించండి</translation> <translation id="85690795166292698">లింక్ను కొత్త ట్యాబ్లో తెరవండి</translation> <translation id="8609384513243082612">కొత్త ట్యాబ్ను తెరవండి</translation> <translation id="8644639153978066712">దాచబడిన ఫైల్లను ఫైల్స్ యాప్ ద్వారా ప్రదర్శించండి</translation> @@ -194,7 +194,7 @@ <translation id="906458777597946297">విండోను గరిష్టీకరించు</translation> <translation id="9091855755813503076">పంక్తి ప్రారంభానికి వెళ్లు</translation> <translation id="9106898733795143799">పేజీ & వెబ్ బ్రౌజర్</translation> -<translation id="9162942292291287644"><ph name="QUERY" /> కోసం శోధన ఫలితం లేదు</translation> +<translation id="9162942292291287644"><ph name="QUERY" />కు శోధన ఫలితాలేవీ లేవు</translation> <translation id="9179672198516322668">జనాదరణ పొందిన షార్ట్కట్లు</translation> <translation id="93603345341560814"><ph name="SHIFT" />ను నొక్కి, లింక్ను క్లిక్ చేయండి</translation> <translation id="945383118875625837">లింక్ని బుక్మార్క్ల బార్ వద్దకు లాగండి</translation>
diff --git a/ash/frame/non_client_frame_view_ash_unittest.cc b/ash/frame/non_client_frame_view_ash_unittest.cc index 9b386c2f..7315a6b 100644 --- a/ash/frame/non_client_frame_view_ash_unittest.cc +++ b/ash/frame/non_client_frame_view_ash_unittest.cc
@@ -904,6 +904,8 @@ } // Run frame color tests with and without custom wm::WindowStateDelegate. -INSTANTIATE_TEST_CASE_P(, NonClientFrameViewAshFrameColorTest, testing::Bool()); +INSTANTIATE_TEST_SUITE_P(, + NonClientFrameViewAshFrameColorTest, + testing::Bool()); } // namespace ash
diff --git a/ash/shelf/shelf_layout_manager_unittest.cc b/ash/shelf/shelf_layout_manager_unittest.cc index 618fcd5..be1a3336 100644 --- a/ash/shelf/shelf_layout_manager_unittest.cc +++ b/ash/shelf/shelf_layout_manager_unittest.cc
@@ -2582,6 +2582,56 @@ EXPECT_TRUE(GetPrimaryUnifiedSystemTray()->IsBubbleShown()); } +// Tests that swiping up on the AUTO_HIDE_HIDDEN shelf, with various speeds, +// offsets, and angles, always shows the shelf. +TEST_F(ShelfLayoutManagerTest, SwipeUpAutoHideHiddenShelf) { + ui::test::EventGenerator* generator = GetEventGenerator(); + Shelf* shelf = GetPrimaryShelf(); + + // Create a window so that the shelf will hide. + const aura::Window* window = CreateTestWidget()->GetNativeWindow(); + const gfx::Point tap_to_hide_shelf_location = + window->GetBoundsInScreen().CenterPoint(); + const gfx::Rect display_bounds = + display::Screen::GetScreen()->GetPrimaryDisplay().bounds(); + + shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); + ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); + layout_manager->LayoutShelf(); + EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); + EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); + + const int time_deltas[] = {10, 50, 100, 500}; + const int num_scroll_steps[] = {2, 5, 10, 50}; + const int y_bezel_start_offsets[] = {5, 10, 50}; + const int x_offsets[] = {10, 20, 50}; + const int y_offsets[] = {70, 100, 300, 500}; + + for (int time_delta : time_deltas) { + for (int num_scroll_steps : num_scroll_steps) { + for (int x_offset : x_offsets) { + for (int y_offset : y_offsets) { + for (int y_bezel_start_offset : y_bezel_start_offsets) { + const gfx::Point start(display_bounds.bottom_center() + + gfx::Vector2d(0, y_bezel_start_offset)); + const gfx::Point end(start + gfx::Vector2d(x_offset, -y_offset)); + generator->GestureScrollSequence( + start, end, base::TimeDelta::FromMilliseconds(time_delta), + num_scroll_steps); + EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()) + << "Failure to show shelf after a swipe up in " << time_delta + << "ms, " << num_scroll_steps << " steps, " + << y_bezel_start_offset << " Y bezel start offset, " << x_offset + << " X-offset and " << y_offset << " Y-offset."; + generator->GestureTapAt(tap_to_hide_shelf_location); + EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); + } + } + } + } + } +} + // Tests the auto-hide shelf status with mouse events. TEST_F(ShelfLayoutManagerTest, AutoHideShelfOnMouseEvents) { views::Widget* widget = CreateTestWidget();
diff --git a/ash/shelf/shelf_view.cc b/ash/shelf/shelf_view.cc index a625c04d..aa5a564 100644 --- a/ash/shelf/shelf_view.cc +++ b/ash/shelf/shelf_view.cc
@@ -620,8 +620,10 @@ // None of the checks in ShouldEventActivateButton() affects overflow button. // So, it is safe to be checked after handling overflow button. - if (!ShouldEventActivateButton(sender, event)) + if (!ShouldEventActivateButton(sender, event)) { + ink_drop->SnapToHidden(); return; + } // Prevent concurrent requests that may show application or context menus. // If a second request is sent before the first one can respond, the Chrome
diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc index 67df6bb..1f39ad8 100644 --- a/ash/shelf/shelf_view_unittest.cc +++ b/ash/shelf/shelf_view_unittest.cc
@@ -2927,6 +2927,30 @@ views::InkDropState::DEACTIVATED)); } +TEST_F(ShelfViewInkDropTest, DismissingMenuWithDoubleClickDoesntShowInkDrop) { + ui::test::EventGenerator* generator = GetEventGenerator(); + InitBrowserButtonInkDrop(); + + views::Button* button = browser_button_; + + // Show a context menu on the app list button. + generator->MoveMouseTo( + shelf_view_->GetAppListButton()->GetBoundsInScreen().CenterPoint()); + generator->PressRightButton(); + generator->ReleaseRightButton(); + EXPECT_TRUE(shelf_view_->IsShowingMenu()); + + // Now check that double-clicking on the browser button dismisses the context + // menu, and does not show an ink drop. + EXPECT_EQ(views::InkDropState::HIDDEN, + browser_button_ink_drop_->GetTargetInkDropState()); + generator->MoveMouseTo(button->GetBoundsInScreen().CenterPoint()); + generator->DoubleClickLeftButton(); + EXPECT_FALSE(shelf_view_->IsShowingMenu()); + EXPECT_EQ(views::InkDropState::HIDDEN, + browser_button_ink_drop_->GetTargetInkDropState()); +} + // Test fixture for testing material design ink drop on overflow button. class OverflowButtonInkDropTest : public ShelfViewInkDropTest { public:
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb index fe616322..af393da 100644 --- a/ash/strings/ash_strings_fil.xtb +++ b/ash/strings/ash_strings_fil.xtb
@@ -305,7 +305,7 @@ <translation id="6106745654298855237">China-charge ang <ph name="POWER_SOURCE" /></translation> <translation id="615957422585914272">Ipakita ang on-screen na keyboard</translation> <translation id="6164005077879661055">Permanenteng matatanggal ang lahat ng file at lokal na data na kaugnay ng pinangangasiwaang user sa oras na alisin ang pinangangasiwaang user na ito. Maaari pa ring makita ng manager ang mga nabisitang website at setting para sa pinangangasiwaang user na ito sa <ph name="MANAGEMENT_URL" />.</translation> -<translation id="6165508094623778733">Matuto nang higit pa</translation> +<translation id="6165508094623778733">Matuto pa</translation> <translation id="6254629735336163724">Naka-lock sa horizontal</translation> <translation id="6259254695169772643">Gamitin ang iyong stylus para pumili</translation> <translation id="6267036997247669271"><ph name="NAME" />: Ina-activate...</translation>
diff --git a/ash/strings/ash_strings_hi.xtb b/ash/strings/ash_strings_hi.xtb index efe5a0b..f50540c6 100644 --- a/ash/strings/ash_strings_hi.xtb +++ b/ash/strings/ash_strings_hi.xtb
@@ -306,7 +306,7 @@ <translation id="6106745654298855237"><ph name="POWER_SOURCE" /> चार्ज हो रहा है</translation> <translation id="615957422585914272">ऑन-स्क्रीन कीबोर्ड दिखाएं</translation> <translation id="6164005077879661055">'निगरानी में रखे गए इस उपयोगकर्ता' को हटाने के बाद, निगरानी में रखे गए उपयोगकर्ता से जुड़ीं सभी फ़ाइलें और 'स्थानीय डेटा' हमेशा के लिए मिट जाएंगे. 'निगरानी में रखे गए इस उपयोगकर्ता' की देखी गईं वेबसाइटें और सेटिंग <ph name="MANAGEMENT_URL" /> पर प्रबंधक को अब भी दिखेंगी.</translation> -<translation id="6165508094623778733">अधिक जानें</translation> +<translation id="6165508094623778733">ज़्यादा जानें</translation> <translation id="6254629735336163724">क्षैतिज पर लॉक किया गया</translation> <translation id="6259254695169772643">चुनने के लिए अपने स्टाइलस का इस्तेमाल करें</translation> <translation id="6267036997247669271"><ph name="NAME" />: सक्रिय हो रहा है...</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb index 7e344429..e4622b5 100644 --- a/ash/strings/ash_strings_ja.xtb +++ b/ash/strings/ash_strings_ja.xtb
@@ -305,7 +305,7 @@ <translation id="6106745654298855237"><ph name="POWER_SOURCE" /> を充電しています</translation> <translation id="615957422585914272">画面キーボードを表示する</translation> <translation id="6164005077879661055">この監視対象ユーザーを削除すると、このユーザーに関連付けられたすべてのファイルとローカル データも完全に削除されます。この監視対象ユーザーがアクセスしたウェブサイトやこのユーザーの設定は引き続き、管理者が <ph name="MANAGEMENT_URL" /> で見ることができます。</translation> -<translation id="6165508094623778733">詳しく見る</translation> +<translation id="6165508094623778733">詳細</translation> <translation id="6254629735336163724">横に固定</translation> <translation id="6259254695169772643">タッチペンを使って選択してください</translation> <translation id="6267036997247669271"><ph name="NAME" />: 有効にしています...</translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb index 858c5721..c8a7c83 100644 --- a/ash/strings/ash_strings_ml.xtb +++ b/ash/strings/ash_strings_ml.xtb
@@ -305,7 +305,7 @@ <translation id="6106745654298855237"><ph name="POWER_SOURCE" /> ചാർജ്ജുചെയ്യുന്നു</translation> <translation id="615957422585914272">ഓൺ-സ്ക്രീൻ കീബോർഡ് ദൃശ്യമാക്കുക</translation> <translation id="6164005077879661055">സൂപ്പർവൈസുചെയ്ത ഉപയോക്താവിനെ നീക്കംചെയ്താൽ, സൂപ്പർവൈസുചെയ്ത ഉപയോക്താവുമായി ബന്ധപ്പെടുത്തിയിട്ടുള്ള എല്ലാ ഫയലുകളും പ്രാദേശിക ഡാറ്റയും ശാശ്വതമായി ഇല്ലാതാക്കപ്പെടും. സൂപ്പർവൈസുചെയ്ത ഈ ഉപയോക്താവിനായി സന്ദർശിച്ച വെബ്സൈറ്റുകളും ക്രമീകരണങ്ങളും <ph name="MANAGEMENT_URL" />-ൽ മാനേജർക്ക് തുടർന്നും കാണാനായേക്കും.</translation> -<translation id="6165508094623778733">കൂടുതൽ മനസിലാക്കുക</translation> +<translation id="6165508094623778733">കൂടുതലറിയുക</translation> <translation id="6254629735336163724">സമാന്തരമായി ലോക്ക് ചെയ്തു</translation> <translation id="6259254695169772643">തിരഞ്ഞെടുക്കാൻ നിങ്ങളുടെ സ്റ്റൈലസ് ഉപയോഗിക്കുക</translation> <translation id="6267036997247669271"><ph name="NAME" />: സജീവമാക്കുന്നു...</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb index 6cbccbd5..15170cb 100644 --- a/ash/strings/ash_strings_no.xtb +++ b/ash/strings/ash_strings_no.xtb
@@ -305,7 +305,7 @@ <translation id="6106745654298855237">Lader <ph name="POWER_SOURCE" /></translation> <translation id="615957422585914272">Vis skjermtastaturet</translation> <translation id="6164005077879661055">Alle filer og lokale data tilknyttet den administrerte brukeren slettes permanent når den administrerte brukeren fjernes. Besøkte nettsteder og innstillinger for denne administrerte brukeren kan fortsatt ses av administratoren på <ph name="MANAGEMENT_URL" />.</translation> -<translation id="6165508094623778733">Les mer</translation> +<translation id="6165508094623778733">Finn ut mer</translation> <translation id="6254629735336163724">Låst til horisontal</translation> <translation id="6259254695169772643">Bruk pekepennen til å velge</translation> <translation id="6267036997247669271"><ph name="NAME" />: aktiveres …</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb index 742a17f6..daf23fbe 100644 --- a/ash/strings/ash_strings_te.xtb +++ b/ash/strings/ash_strings_te.xtb
@@ -17,7 +17,7 @@ <translation id="1247372569136754018">మైక్రోఫోన్ (అంతర్గతం)</translation> <translation id="1252999807265626933"><ph name="POWER_SOURCE" /> నుండి ఛార్జ్ అవుతోంది</translation> <translation id="1255033239764210633">వాతావరణం ఎలా ఉంది?</translation> -<translation id="1267032506238418139">సత్వరమార్గం మార్పు</translation> +<translation id="1267032506238418139">షార్ట్కట్ మార్పు</translation> <translation id="1270290102613614947">స్క్రీన్పై కనిపించే కీబోర్డ్ నిలిపివేయబడింది</translation> <translation id="1272079795634619415">ఆపు</translation> <translation id="1279938420744323401"><ph name="DISPLAY_NAME" /> (<ph name="ANNOTATION" />)</translation> @@ -29,7 +29,7 @@ <translation id="1316069254387866896">ఎల్లప్పుడూ అరను చూపించు</translation> <translation id="1346748346194534595">కుడి</translation> <translation id="1351937230027495976">మెనూను కుదించు</translation> -<translation id="1383876407941801731">శోధించు</translation> +<translation id="1383876407941801731">వెతుకు</translation> <translation id="1419738280318246476">నోటిఫికేషన్ చర్యను నిర్వహించడానికి పరికరాన్ని అన్లాక్ చేయండి</translation> <translation id="1455242230282523554">భాష సెట్టింగ్లను చూపుతుంది</translation> <translation id="1467432559032391204">ఎడమ</translation> @@ -58,7 +58,7 @@ <translation id="1864454756846565995">USB-C పరికరం (వెనుకవైపు పోర్ట్)</translation> <translation id="1882897271359938046"><ph name="DISPLAY_NAME" />కు మిర్రరింగ్ చేస్తోంది</translation> <translation id="1885785240814121742">వేలిముద్రతో అన్లాక్ చేయండి</translation> -<translation id="1919743966458266018">విధి నిర్వాహికిని తెరిచే సత్వరమార్గం మార్చబడింది. దయచేసి <ph name="OLD_SHORTCUT" />కి బదులుగా <ph name="NEW_SHORTCUT" />ని ఉపయోగించండి.</translation> +<translation id="1919743966458266018">టాస్క్ మేనేజర్ను తెరిచే షార్ట్కట్ మార్చబడింది. దయచేసి <ph name="OLD_SHORTCUT" />కు బదులుగా <ph name="NEW_SHORTCUT" />ను ఉపయోగించండి.</translation> <translation id="1923539912171292317">స్వయంచాలక క్లిక్లు</translation> <translation id="1928739107511554905">అప్డేట్ని పొందడానికి, కీబోర్డ్ని అలానే జోడించి ఉంచి మీ Chromebookని పునఃప్రారంభించడం కోసం టచ్స్క్రీన్ని ఉపయోగించండి.</translation> <translation id="1942830294380034169">అతివ్యాప్తి బటన్</translation> @@ -222,7 +222,7 @@ <translation id="4513946894732546136">అభిప్రాయం</translation> <translation id="4527045527269911712">బ్లూటూత్ పరికరం "<ph name="DEVICE_NAME" />" జత కావడానికి అనుమతి కోరుతోంది.</translation> <translation id="453661520163887813">పూర్తి కావడానికి <ph name="TIME" /> పడుతుంది</translation> -<translation id="4544944664594876241">స్క్రీన్ని లాక్ చేసే సత్వరమార్గం మార్చబడింది. దయచేసి <ph name="OLD_SHORTCUT" />కి బదులుగా <ph name="NEW_SHORTCUT" />ని ఉపయోగించండి.</translation> +<translation id="4544944664594876241">స్క్రీన్ను లాక్ చేసే షార్ట్కట్ మార్చబడింది. దయచేసి <ph name="OLD_SHORTCUT" />కు బదులుగా <ph name="NEW_SHORTCUT" />ను ఉపయోగించండి.</translation> <translation id="4570957409596482333">వినడానికి ఎంచుకోండి బటన్</translation> <translation id="4585337515783392668">తెలియని రిసీవర్లో ప్రసారం చేయడాన్ని ఆపివేయి</translation> <translation id="4628757576491864469">పరికరాలు</translation> @@ -240,7 +240,7 @@ <translation id="4890187583552566966">మీ నిర్వాహకునిచే Google సహాయకం నిలిపివేయబడింది.</translation> <translation id="4895488851634969361">బ్యాటరీ నిండింది.</translation> <translation id="490375751687810070">నిలువుగా ఉంది</translation> -<translation id="4905614135390995787">అధిక కాంట్రాస్ట్ మోడ్ను టోగుల్ చేయడానికి ఉన్న షార్ట్కట్ మార్చబడింది. దయచేసి <ph name="OLD_SHORTCUT" />కు బదులుగా <ph name="NEW_SHORTCUT" /> ఉపయోగించండి.</translation> +<translation id="4905614135390995787">అధిక కాంట్రాస్ట్ మోడ్ను టోగుల్ చేయడానికి ఉన్న షార్ట్కట్ మార్చబడింది. దయచేసి <ph name="OLD_SHORTCUT" />కు బదులుగా <ph name="NEW_SHORTCUT" /> ఉపయోగించండి.</translation> <translation id="4917385247580444890">బలమైన</translation> <translation id="4918086044614829423">ఆమోదించు</translation> <translation id="4924411785043111640">మళ్లీ ప్రారంభించి, రీసెట్ చేయండి</translation> @@ -295,7 +295,7 @@ <translation id="5978382165065462689">రిమోట్ సహాయం విధానంలో మీ స్క్రీన్ నియంత్రణను భాగస్వామ్యం చేస్తోంది.</translation> <translation id="5980301590375426705">అతిథిగా నిష్క్రమించు</translation> <translation id="598882571027504733">అప్డేట్ని పొందడానికి, కీబోర్డ్ని అలానే జోడించి ఉంచి మీ Chromebookని పునఃప్రారంభించండి.</translation> -<translation id="5992218262414051481">అధిక క్రాంటాస్ట్ మోడ్ ఆరంభించబడింది. దాన్ని ఆఫ్కు టోగుల్ చేయడం కోసం మళ్లీ Ctrl+Search+Hని నొక్కండి.</translation> +<translation id="5992218262414051481">అధిక క్రాంటాస్ట్ మోడ్ ఆరంభించబడింది. దానిని ఆఫ్కు టోగుల్ చేయడం కోసం మళ్లీ Ctrl+Search+Hను నొక్కండి.</translation> <translation id="6018164090099858612">ప్రతిబింబ మోడ్ నుండి నిష్క్రమిస్తోంది</translation> <translation id="6043212731627905357">మీ <ph name="DEVICE_TYPE" />తో ఈ మానిటర్ పని చేయడం లేదు (మానిటర్కు మద్దతు లేదు).</translation> <translation id="6043994281159824495">ఇప్పుడే సైన్ అవుట్ చేయి</translation> @@ -445,7 +445,7 @@ <translation id="8427213022735114808">మీరు రాయాలనుకునేది Googleకి చెబితే చాలు వెంటనే వచన రూపంలోకి మారుస్తుంది.</translation> <translation id="8428213095426709021">సెట్టింగ్లు</translation> <translation id="8433186206711564395">నెట్వర్క్ సెట్టింగ్లు</translation> -<translation id="8433977262951327081">అరలో ఇన్పుట్ ఎంపికల మెను బబుల్ను చూపడానికి ఉపయోగించే షార్ట్కట్ మార్చబడింది. దయచేసి <ph name="OLD_SHORTCUT" />కు బదులుగా <ph name="NEW_SHORTCUT" />ను ఉపయోగించండి.</translation> +<translation id="8433977262951327081">అరలో ఇన్పుట్ ఎంపికల మెనూ బబుల్ను చూపడానికి ఉపయోగించే షార్ట్కట్ మార్చబడింది. దయచేసి <ph name="OLD_SHORTCUT" />కు బదులుగా <ph name="NEW_SHORTCUT" />ను ఉపయోగించండి.</translation> <translation id="8452135315243592079">SIM కార్డ్ లేదు</translation> <translation id="8454013096329229812">Wi-Fi ఆన్ చేయబడింది.</translation> <translation id="847056008324733326">స్కేల్ సెట్టింగ్లను ప్రదర్శించండి</translation>
diff --git a/base/message_loop/message_loop.cc b/base/message_loop/message_loop.cc index 9eedb721..05707db 100644 --- a/base/message_loop/message_loop.cc +++ b/base/message_loop/message_loop.cc
@@ -12,7 +12,6 @@ #include "base/callback_helpers.h" #include "base/compiler_specific.h" #include "base/debug/task_annotator.h" -#include "base/feature_list.h" #include "base/logging.h" #include "base/memory/ptr_util.h" #include "base/message_loop/message_loop_impl.h" @@ -37,6 +36,10 @@ #endif namespace base { +namespace features { +const Feature kMessageLoopUsesSequenceManager{"MessageLoopUsesSequenceManager", + FEATURE_ENABLED_BY_DEFAULT}; +} // namespace features namespace { @@ -184,15 +187,13 @@ return WrapUnique(new MessageLoop(type, std::move(pump_factory))); } -const Feature kMessageLoopUsesSequenceManager{"MessageLoopUsesSequenceManager", - FEATURE_ENABLED_BY_DEFAULT}; - MessageLoop::MessageLoop(Type type, MessagePumpFactoryCallback pump_factory) - : MessageLoop(type, - std::move(pump_factory), - FeatureList::IsEnabled(kMessageLoopUsesSequenceManager) - ? BackendType::SEQUENCE_MANAGER - : BackendType::MESSAGE_LOOP_IMPL) {} + : MessageLoop( + type, + std::move(pump_factory), + FeatureList::IsEnabled(features::kMessageLoopUsesSequenceManager) + ? BackendType::SEQUENCE_MANAGER + : BackendType::MESSAGE_LOOP_IMPL) {} MessageLoop::MessageLoop(Type type, MessagePumpFactoryCallback pump_factory,
diff --git a/base/message_loop/message_loop.h b/base/message_loop/message_loop.h index 1adfd4cd..5dc38c86 100644 --- a/base/message_loop/message_loop.h +++ b/base/message_loop/message_loop.h
@@ -11,6 +11,7 @@ #include "base/base_export.h" #include "base/callback_forward.h" +#include "base/feature_list.h" #include "base/gtest_prod_util.h" #include "base/macros.h" #include "base/memory/scoped_refptr.h" @@ -27,6 +28,10 @@ #include "build/build_config.h" namespace base { +namespace features { +BASE_EXPORT extern const Feature kMessageLoopUsesSequenceManager; +} // namespace features + class MessageLoopImpl; namespace sequence_manager {
diff --git a/base/task/sequence_manager/sequence_manager_perftest.cc b/base/task/sequence_manager/sequence_manager_perftest.cc index 9376068..1448a5a 100644 --- a/base/task/sequence_manager/sequence_manager_perftest.cc +++ b/base/task/sequence_manager/sequence_manager_perftest.cc
@@ -25,6 +25,7 @@ #include "base/task/task_scheduler/task_scheduler.h" #include "base/task/task_scheduler/task_scheduler_impl.h" #include "base/task/task_traits.h" +#include "base/test/scoped_feature_list.h" #include "base/threading/thread.h" #include "base/threading/thread_task_runner_handle.h" #include "base/time/default_tick_clock.h" @@ -572,10 +573,15 @@ class SequenceManagerPerfTest : public testing::TestWithParam<PerfTestType> { public: - void SetUp() override { - delegate_ = CreateDelegate(); + SequenceManagerPerfTest() { + // We want to compare performance against the original MessageLoop back-end, + // so disable the SequenceManager version. + scoped_feature_list_.InitAndDisableFeature( + features::kMessageLoopUsesSequenceManager); } + void SetUp() override { delegate_ = CreateDelegate(); } + void TearDown() override { delegate_.reset(); } std::unique_ptr<PerfTestDelegate> CreateDelegate() { @@ -667,6 +673,7 @@ } std::unique_ptr<PerfTestDelegate> delegate_; + test::ScopedFeatureList scoped_feature_list_; }; INSTANTIATE_TEST_CASE_P(
diff --git a/base/win/embedded_i18n/language_selector_unittest.cc b/base/win/embedded_i18n/language_selector_unittest.cc index 4a6e9835..2341f73 100644 --- a/base/win/embedded_i18n/language_selector_unittest.cc +++ b/base/win/embedded_i18n/language_selector_unittest.cc
@@ -101,7 +101,7 @@ } // Test that all existing translations can be found by exact match. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( TestExactMatches, LanguageSelectorMatchCandidateTest, ::testing::ValuesIn( @@ -109,7 +109,7 @@ &kExactMatchCandidates[base::size(kExactMatchCandidates)])); // Test the alias matches. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( TestAliasMatches, LanguageSelectorMatchCandidateTest, ::testing::ValuesIn( @@ -117,7 +117,7 @@ &kAliasMatchCandidates[base::size(kAliasMatchCandidates)])); // Test a few wildcard matches. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( TestWildcardMatches, LanguageSelectorMatchCandidateTest, ::testing::ValuesIn( @@ -138,42 +138,42 @@ EXPECT_EQ(std::get<0>(GetParam()), instance.selected_translation()); } -INSTANTIATE_TEST_CASE_P(EnGbAliases, - LanguageSelectorAliasTest, - ::testing::Combine(::testing::Values(L"en-gb"), - ::testing::Values(L"en-au", - L"en-ca", - L"en-nz", - L"en-za"))); +INSTANTIATE_TEST_SUITE_P(EnGbAliases, + LanguageSelectorAliasTest, + ::testing::Combine(::testing::Values(L"en-gb"), + ::testing::Values(L"en-au", + L"en-ca", + L"en-nz", + L"en-za"))); -INSTANTIATE_TEST_CASE_P(IwAliases, - LanguageSelectorAliasTest, - ::testing::Combine(::testing::Values(L"iw"), - ::testing::Values(L"he"))); +INSTANTIATE_TEST_SUITE_P(IwAliases, + LanguageSelectorAliasTest, + ::testing::Combine(::testing::Values(L"iw"), + ::testing::Values(L"he"))); -INSTANTIATE_TEST_CASE_P(NoAliases, - LanguageSelectorAliasTest, - ::testing::Combine(::testing::Values(L"no"), - ::testing::Values(L"nb"))); +INSTANTIATE_TEST_SUITE_P(NoAliases, + LanguageSelectorAliasTest, + ::testing::Combine(::testing::Values(L"no"), + ::testing::Values(L"nb"))); -INSTANTIATE_TEST_CASE_P(FilAliases, - LanguageSelectorAliasTest, - ::testing::Combine(::testing::Values(L"fil"), - ::testing::Values(L"tl"))); +INSTANTIATE_TEST_SUITE_P(FilAliases, + LanguageSelectorAliasTest, + ::testing::Combine(::testing::Values(L"fil"), + ::testing::Values(L"tl"))); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ZhCnAliases, LanguageSelectorAliasTest, ::testing::Combine(::testing::Values(L"zh-cn"), ::testing::Values(L"zh-chs", L"zh-hans", L"zh-sg"))); -INSTANTIATE_TEST_CASE_P(ZhTwAliases, - LanguageSelectorAliasTest, - ::testing::Combine(::testing::Values(L"zh-tw"), - ::testing::Values(L"zh-cht", - L"zh-hant", - L"zh-hk", - L"zh-mo"))); +INSTANTIATE_TEST_SUITE_P(ZhTwAliases, + LanguageSelectorAliasTest, + ::testing::Combine(::testing::Values(L"zh-tw"), + ::testing::Values(L"zh-cht", + L"zh-hant", + L"zh-hk", + L"zh-mo"))); // Test that we can get a match of the default language. TEST(LanguageSelectorTest, DefaultLanguageName) {
diff --git a/build/config/android/extract_unwind_tables.gni b/build/config/android/extract_unwind_tables.gni index 2cf9887..d0b0532 100644 --- a/build/config/android/extract_unwind_tables.gni +++ b/build/config/android/extract_unwind_tables.gni
@@ -14,24 +14,18 @@ testonly = invoker.testonly } - _root_dir = "$root_out_dir" - if (build_apk_secondary_abi && defined(android_secondary_abi_cpu)) { - _root_dir = get_label_info(":foo($android_secondary_abi_toolchain)", - "root_out_dir") - } - script = "//build/android/gyp/extract_unwind_tables.py" outputs = [ _asset_path, ] inputs = [ - "${_root_dir}/lib.unstripped/$shlib_prefix${invoker.library_target}$shlib_extension", + "$root_out_dir/lib.unstripped/$shlib_prefix${invoker.library_target}$shlib_extension", ] args = [ "--input_path", rebase_path( - "${_root_dir}/lib.unstripped/$shlib_prefix${invoker.library_target}$shlib_extension", + "$root_out_dir/lib.unstripped/$shlib_prefix${invoker.library_target}$shlib_extension", root_build_dir), "--output_path", rebase_path(_asset_path, root_build_dir),
diff --git a/build/config/mac/mac_sdk_overrides.gni b/build/config/mac/mac_sdk_overrides.gni index 3632678..b05bc6a 100644 --- a/build/config/mac/mac_sdk_overrides.gni +++ b/build/config/mac/mac_sdk_overrides.gni
@@ -9,14 +9,8 @@ declare_args() { # Minimum supported version of the Mac SDK. if (_sdk_min_from_env == "") { - mac_sdk_min = "10.12" + mac_sdk_min = "10.13" } else { mac_sdk_min = _sdk_min_from_env } -} - -# Always assert that mac_sdk_min is used on non-macOS platforms to prevent -# unused args warnings. -if (!is_mac) { - assert(mac_sdk_min == "10.12" || true) -} +} \ No newline at end of file
diff --git a/build/mac_toolchain.py b/build/mac_toolchain.py index 9f9d274..9d393c67 100755 --- a/build/mac_toolchain.py +++ b/build/mac_toolchain.py
@@ -25,18 +25,12 @@ # This can be changed after running: # mac_toolchain upload -xcode-path path/to/Xcode.app -MAC_TOOLCHAIN_VERSION = '8E2002' +MAC_TOOLCHAIN_VERSION = '9E145' # The toolchain will not be downloaded if the minimum OS version is not met. -# 16 is the major version number for macOS 10.12. -MAC_MINIMUM_OS_VERSION = 16 - -# The toolchain will not be downloaded if the maximum OS version is exceeded. -# 17 is the major version number for macOS 10.13. Xcode 8 does not run on macOS -# 10.14. -# TODO(https://crbug.com/780980): Once we build with 10.13 SDK, Xcode 9, we -# should be able to remove this upper bound. -MAC_MAXIMUM_OS_VERSION = 17 +# 17 is the major version number for macOS 10.13. +# 9E145 (Xcode 9.3) only runs on 10.13.2 and newer. +MAC_MINIMUM_OS_VERSION = 17 MAC_TOOLCHAIN_INSTALLER = 'mac_toolchain' @@ -54,8 +48,7 @@ def PlatformMeetsHermeticXcodeRequirements(): major_version = int(platform.release().split('.')[0]) - return (major_version >= MAC_MINIMUM_OS_VERSION and - major_version <= MAC_MAXIMUM_OS_VERSION) + return major_version >= MAC_MINIMUM_OS_VERSION def _UseHermeticToolchain():
diff --git a/cc/animation/timing_function.cc b/cc/animation/timing_function.cc index ad73588c6..cf93d9b 100644 --- a/cc/animation/timing_function.cc +++ b/cc/animation/timing_function.cc
@@ -57,12 +57,12 @@ return Type::CUBIC_BEZIER; } -float CubicBezierTimingFunction::GetValue(double x) const { - return static_cast<float>(bezier_.Solve(x)); +double CubicBezierTimingFunction::GetValue(double x) const { + return bezier_.Solve(x); } -float CubicBezierTimingFunction::Velocity(double x) const { - return static_cast<float>(bezier_.Slope(x)); +double CubicBezierTimingFunction::Velocity(double x) const { + return bezier_.Slope(x); } std::unique_ptr<TimingFunction> CubicBezierTimingFunction::Clone() const { @@ -84,16 +84,16 @@ return Type::STEPS; } -float StepsTimingFunction::GetValue(double t) const { - return static_cast<float>(GetPreciseValue(t)); +double StepsTimingFunction::GetValue(double t) const { + return GetPreciseValue(t); } std::unique_ptr<TimingFunction> StepsTimingFunction::Clone() const { return base::WrapUnique(new StepsTimingFunction(*this)); } -float StepsTimingFunction::Velocity(double x) const { - return 0.0f; +double StepsTimingFunction::Velocity(double x) const { + return 0; } double StepsTimingFunction::GetPreciseValue(double t) const { @@ -132,16 +132,16 @@ return Type::FRAMES; } -float FramesTimingFunction::GetValue(double t) const { - return static_cast<float>(GetPreciseValue(t)); +double FramesTimingFunction::GetValue(double t) const { + return GetPreciseValue(t); } std::unique_ptr<TimingFunction> FramesTimingFunction::Clone() const { return base::WrapUnique(new FramesTimingFunction(*this)); } -float FramesTimingFunction::Velocity(double x) const { - return 0.0f; +double FramesTimingFunction::Velocity(double x) const { + return 0; } double FramesTimingFunction::GetPreciseValue(double t) const {
diff --git a/cc/animation/timing_function.h b/cc/animation/timing_function.h index 32bbf95f..0aa2863 100644 --- a/cc/animation/timing_function.h +++ b/cc/animation/timing_function.h
@@ -22,8 +22,8 @@ enum class Type { LINEAR, CUBIC_BEZIER, STEPS, FRAMES }; virtual Type GetType() const = 0; - virtual float GetValue(double t) const = 0; - virtual float Velocity(double time) const = 0; + virtual double GetValue(double t) const = 0; + virtual double Velocity(double time) const = 0; virtual std::unique_ptr<TimingFunction> Clone() const = 0; protected: @@ -46,8 +46,8 @@ // TimingFunction implementation. Type GetType() const override; - float GetValue(double time) const override; - float Velocity(double time) const override; + double GetValue(double time) const override; + double Velocity(double time) const override; std::unique_ptr<TimingFunction> Clone() const override; EaseType ease_type() const { return ease_type_; } @@ -78,9 +78,9 @@ // TimingFunction implementation. Type GetType() const override; - float GetValue(double t) const override; + double GetValue(double t) const override; std::unique_ptr<TimingFunction> Clone() const override; - float Velocity(double time) const override; + double Velocity(double time) const override; int steps() const { return steps_; } StepPosition step_position() const { return step_position_; } @@ -104,9 +104,9 @@ // TimingFunction implementation. Type GetType() const override; - float GetValue(double t) const override; + double GetValue(double t) const override; std::unique_ptr<TimingFunction> Clone() const override; - float Velocity(double time) const override; + double Velocity(double time) const override; int frames() const { return frames_; } double GetPreciseValue(double t) const;
diff --git a/cc/paint/paint_cache_unittest.cc b/cc/paint/paint_cache_unittest.cc index ea4e9b6..fa8448d8 100644 --- a/cc/paint/paint_cache_unittest.cc +++ b/cc/paint/paint_cache_unittest.cc
@@ -18,7 +18,7 @@ SkTextBlobBuilder builder; int glyph_count = 5; - const auto& run = builder.allocRun(font, glyph_count, 1.2f, 2.3f, nullptr); + const auto& run = builder.allocRun(font, glyph_count, 1.2f, 2.3f); // allocRun() allocates only the glyph buffer. std::fill(run.glyphs, run.glyphs + glyph_count, 0); return builder.make();
diff --git a/cc/paint/paint_op_perftest.cc b/cc/paint/paint_op_perftest.cc index 8a4e78df..d137118 100644 --- a/cc/paint/paint_op_perftest.cc +++ b/cc/paint/paint_op_perftest.cc
@@ -169,8 +169,7 @@ SkTextBlobBuilder builder; int glyph_count = 5; - SkRect rect = SkRect::MakeXYWH(1, 1, 1, 1); - const auto& run = builder.allocRun(font, glyph_count, 1.2f, 2.3f, &rect); + const auto& run = builder.allocRun(font, glyph_count, 1.2f, 2.3f); std::fill(run.glyphs, run.glyphs + glyph_count, 0); auto blob = builder.make();
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn index 3c7b8760..14f9c13 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn
@@ -1407,9 +1407,8 @@ # Unwind tables are added to only official builds (public_apk(s)) so that # developer builds are not affected. -_add_unwind_tables_in_chrome_32bit_apk = - is_android && !is_component_build && is_official_build && - (target_cpu == "arm" || target_cpu == "arm64") +_add_unwind_tables_in_chrome_public_apk = + can_unwind_with_cfi_table && is_official_build # Defines a target that derives from the chrome public application. This # can be either an APK or an app bundle module. This supports both the @@ -1463,9 +1462,8 @@ } shared_libraries = [ ":libchrome${_suffix}" ] - add_unwind_tables_in_apk = - _add_unwind_tables_in_chrome_32bit_apk && target_cpu == "arm" - if (add_unwind_tables_in_apk) { + add_unwind_tables_in_apk = _add_unwind_tables_in_chrome_public_apk + if (_add_unwind_tables_in_chrome_public_apk) { shared_library_for_unwind_asset = "chrome${_suffix}" } @@ -1577,10 +1575,8 @@ "//chrome/android:chrome_java", ] - _needs_arm32_lib = target_cpu == "arm" || - (target_cpu == "arm64" && build_apk_secondary_abi) add_unwind_tables_in_apk = - _add_unwind_tables_in_chrome_32bit_apk && _needs_arm32_lib && + _add_unwind_tables_in_chrome_public_apk && (!defined(use_trichrome_library) || !use_trichrome_library) version_name = chrome_version_name @@ -1688,9 +1684,8 @@ testonly = true target_type = "instrumentation_test_apk" - add_unwind_tables_in_apk = - _add_unwind_tables_in_chrome_32bit_apk && target_cpu == "arm" - if (add_unwind_tables_in_apk) { + add_unwind_tables_in_apk = _add_unwind_tables_in_chrome_public_apk + if (_add_unwind_tables_in_chrome_public_apk) { shared_library_for_unwind_asset = "chromefortest" }
diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni index c8b0740..e6b7772b 100644 --- a/chrome/android/chrome_public_apk_tmpl.gni +++ b/chrome/android/chrome_public_apk_tmpl.gni
@@ -96,9 +96,6 @@ library_target = invoker.shared_library_for_unwind_asset deps = invoker.shared_libraries - if (defined(invoker.secondary_abi_shared_libraries)) { - deps += invoker.secondary_abi_shared_libraries - } } }
diff --git a/chrome/android/java/res/layout/keyboard_accessory_suggestion_modern.xml b/chrome/android/java/res/layout/keyboard_accessory_suggestion_modern.xml new file mode 100644 index 0000000..5d22bdf --- /dev/null +++ b/chrome/android/java/res/layout/keyboard_accessory_suggestion_modern.xml
@@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2019 The Chromium Authors. All rights reserved. + Use of this source code is governed by a BSD-style license that can be + found in the LICENSE file. --> + +<org.chromium.ui.widget.ChipView + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:gravity="center" + android:layout_height="wrap_content" + android:layout_width="wrap_content" + android:layout_marginEnd="@dimen/keyboard_accessory_half_padding" + android:layout_marginStart="@dimen/keyboard_accessory_half_padding" + android:layout_marginBottom="@dimen/keyboard_accessory_suggestion_top_bottom_margin" + android:layout_marginTop="@dimen/keyboard_accessory_suggestion_top_bottom_margin" + app:iconWidth="32dp" + style="@style/AssistiveChip" />
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml index 5e85b28..978efa7 100644 --- a/chrome/android/java/res/values/dimens.xml +++ b/chrome/android/java/res/values/dimens.xml
@@ -136,6 +136,7 @@ <dimen name="keyboard_accessory_sheet_height">330dp</dimen> <dimen name="keyboard_accessory_sheet_padding">8dp</dimen> <dimen name="keyboard_accessory_suggestion_padding">16dp</dimen> + <dimen name="keyboard_accessory_suggestion_top_bottom_margin">8dp</dimen> <dimen name="keyboard_accessory_suggestion_offset">12dp</dimen> <dimen name="keyboard_accessory_suggestion_height">48dp</dimen> <dimen name="keyboard_accessory_suggestion_icon_size">20dp</dimen>
diff --git a/chrome/android/java/res_autofill_assistant/layout/autofill_assistant_sheet.xml b/chrome/android/java/res_autofill_assistant/layout/autofill_assistant_sheet.xml index 94ce66bb..07e8b8b 100644 --- a/chrome/android/java/res_autofill_assistant/layout/autofill_assistant_sheet.xml +++ b/chrome/android/java/res_autofill_assistant/layout/autofill_assistant_sheet.xml
@@ -11,7 +11,7 @@ android:layout_height="match_parent" android:gravity="bottom"> - <org.chromium.chrome.browser.autofill_assistant.TouchEventFilterView + <org.chromium.chrome.browser.autofill_assistant.overlay.TouchEventFilterView android:id="@+id/touch_event_filter" android:layout_width="match_parent" android:layout_height="match_parent"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetView.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetView.java index ade7c62f..7778ed0e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetView.java
@@ -4,6 +4,8 @@ package org.chromium.chrome.browser.autofill.keyboard_accessory; +import static org.chromium.ui.base.LocalizationUtils.isLayoutRtl; + import android.content.Context; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; @@ -12,6 +14,8 @@ import android.widget.FrameLayout; import android.widget.ImageView; +import org.chromium.base.ApiCompatibilityUtils; + /** * Displays the data provided by the {@link AccessorySheetViewBinder}. */ @@ -31,6 +35,10 @@ super.onFinishInflate(); mViewPager = findViewById(org.chromium.chrome.R.id.keyboard_accessory_sheet); mTopShadow = findViewById(org.chromium.chrome.R.id.accessory_sheet_shadow); + + // Ensure that sub components of the sheet use the RTL direction: + ApiCompatibilityUtils.setLayoutDirection( + mViewPager, isLayoutRtl() ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR); } void setAdapter(PagerAdapter adapter) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryModernViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryModernViewBinder.java index 093b131b3..0cc3449 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryModernViewBinder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryModernViewBinder.java
@@ -14,6 +14,7 @@ import org.chromium.chrome.browser.autofill.keyboard_accessory.KeyboardAccessoryViewBinder.BarItemViewHolder; import org.chromium.ui.modelutil.PropertyKey; import org.chromium.ui.modelutil.PropertyModel; +import org.chromium.ui.widget.ChipView; /** * Observes {@link KeyboardAccessoryProperties} changes (like a newly available tab) and triggers @@ -23,8 +24,7 @@ public static BarItemViewHolder create(ViewGroup parent, @BarItem.Type int viewType) { switch (viewType) { case BarItem.Type.SUGGESTION: - return new KeyboardAccessoryViewBinder.BarItemTextViewHolder( - parent, R.layout.keyboard_accessory_suggestion); + return new BarItemChipViewHolder(parent); case BarItem.Type.TAB_SWITCHER: return new TabItemViewHolder(parent); case BarItem.Type.ACTION_BUTTON: // Intentional fallthrough. Use legacy handling. @@ -34,6 +34,20 @@ return KeyboardAccessoryViewBinder.create(parent, viewType); } + static class BarItemChipViewHolder extends BarItemViewHolder<BarItem, ChipView> { + BarItemChipViewHolder(ViewGroup parent) { + super(parent, R.layout.keyboard_accessory_suggestion_modern); + } + + @Override + protected void bind(BarItem item, ChipView chipView) { + KeyboardAccessoryData.Action action = item.getAction(); + assert action != null : "Tried to bind item without action. Chose a wrong ViewHolder?"; + chipView.getPrimaryTextView().setText(action.getCaption()); + chipView.setOnClickListener(view -> action.getCallback().onResult(action)); + } + } + static class TabItemViewHolder extends BarItemViewHolder<BarItem, KeyboardAccessoryTabLayoutView> { private KeyboardAccessoryTabLayoutView mTabLayout;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryViewBinder.java index a3c5e18f..2445d42 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryViewBinder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryViewBinder.java
@@ -75,7 +75,7 @@ @Override public void bind(BarItem barItem, TextView textView) { KeyboardAccessoryData.Action action = barItem.getAction(); - assert action != null : ""; + assert action != null : "Tried to bind item without action. Chose a wrong ViewHolder?"; textView.setText(action.getCaption()); textView.setOnClickListener(view -> action.getCallback().onResult(action)); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/PasswordAccessorySheetModernViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/PasswordAccessorySheetModernViewBinder.java index 3850d07e..55ad0a5 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/PasswordAccessorySheetModernViewBinder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/PasswordAccessorySheetModernViewBinder.java
@@ -55,10 +55,10 @@ } void bindChipView(ChipView chip, KeyboardAccessoryData.UserInfo.Field field) { - chip.getInnerTextView().setTransformationMethod( + chip.getPrimaryTextView().setTransformationMethod( field.isObfuscated() ? new PasswordTransformationMethod() : null); - chip.getInnerTextView().setText(field.getDisplayText()); - chip.getInnerTextView().setContentDescription(field.getA11yDescription()); + chip.getPrimaryTextView().setText(field.getDisplayText()); + chip.getPrimaryTextView().setContentDescription(field.getA11yDescription()); chip.setOnClickListener(!field.isSelectable() ? null : src -> field.triggerSelection()); chip.setClickable(field.isSelectable()); chip.setEnabled(field.isSelectable());
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantBottomBarCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantBottomBarCoordinator.java index cb82257..046e227 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantBottomBarCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantBottomBarCoordinator.java
@@ -17,6 +17,7 @@ import org.chromium.chrome.browser.autofill_assistant.details.AssistantDetailsCoordinator; import org.chromium.chrome.browser.autofill_assistant.header.AssistantHeaderCoordinator; import org.chromium.chrome.browser.autofill_assistant.payment.AssistantPaymentRequestCoordinator; +import org.chromium.content_public.browser.WebContents; /** * Coordinator responsible for the Autofill Assistant bottom bar. This coordinator allows to enable @@ -50,8 +51,8 @@ private final AssistantPaymentRequestCoordinator mPaymentRequestCoordinator; private final AssistantCarouselCoordinator mCarouselCoordinator; - AssistantBottomBarCoordinator( - ChromeActivity activity, View assistantView, AssistantModel model) { + AssistantBottomBarCoordinator(ChromeActivity activity, WebContents webContents, + View assistantView, AssistantModel model) { mBottomBarView = assistantView.findViewById( org.chromium.chrome.autofill_assistant.R.id.autofill_assistant_bottombar); mSwipeIndicatorView = mBottomBarView.findViewById( @@ -73,7 +74,7 @@ mHeaderCoordinator = new AssistantHeaderCoordinator(activity, mBottomBarView, model.getHeaderModel()); mDetailsCoordinator = new AssistantDetailsCoordinator(activity, model.getDetailsModel()); - mPaymentRequestCoordinator = new AssistantPaymentRequestCoordinator(activity); + mPaymentRequestCoordinator = new AssistantPaymentRequestCoordinator(activity, webContents); mCarouselCoordinator = new AssistantCarouselCoordinator(activity, model.getCarouselModel()); // Add child views to bottom bar.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantCoordinator.java index ed014c8..782b2fd 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantCoordinator.java
@@ -11,10 +11,15 @@ import org.chromium.chrome.autofill_assistant.R; import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.autofill_assistant.header.AssistantHeaderModel; +import org.chromium.chrome.browser.autofill_assistant.metrics.DropOutReason; +import org.chromium.chrome.browser.autofill_assistant.overlay.AssistantOverlayCoordinator; +import org.chromium.chrome.browser.autofill_assistant.overlay.AssistantOverlayState; +import org.chromium.chrome.browser.autofill_assistant.overlay.TouchEventFilterView; import org.chromium.chrome.browser.help.HelpAndFeedback; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.snackbar.Snackbar; import org.chromium.chrome.browser.snackbar.SnackbarManager; +import org.chromium.content_public.browser.WebContents; /** * The main coordinator for the Autofill Assistant, responsible for instantiating all other @@ -55,8 +60,9 @@ private final AssistantOverlayCoordinator mOverlayCoordinator; private boolean mIsShuttingDownGracefully; + private boolean mIsDropOutRecorded; - AssistantCoordinator(ChromeActivity activity, Delegate delegate) { + AssistantCoordinator(ChromeActivity activity, WebContents webContents, Delegate delegate) { mActivity = activity; mDelegate = delegate; mModel = new AssistantModel(); @@ -69,7 +75,7 @@ // Instantiate child components. mBottomBarCoordinator = - new AssistantBottomBarCoordinator(mActivity, mAssistantView, mModel); + new AssistantBottomBarCoordinator(activity, webContents, mAssistantView, mModel); mKeyboardCoordinator = new AssistantKeyboardCoordinator(activity); mOverlayCoordinator = new AssistantOverlayCoordinator(activity, mAssistantView, this); @@ -79,7 +85,11 @@ /** * Shut down the Autofill Assistant immediately, without showing a message. */ - public void shutdownImmediately() { + public void shutdownImmediately(@DropOutReason int reason) { + if (!mIsDropOutRecorded) { + AutofillAssistantMetrics.recordDropOut(reason); + mIsDropOutRecorded = true; + } detachAssistantView(); mOverlayCoordinator.destroy(); mDelegate.stop(); @@ -91,14 +101,14 @@ * the status message with a generic error message iff {@code showGiveUpMessage} is true. */ // TODO(crbug.com/806868): Move this method to native. - public void gracefulShutdown(boolean showGiveUpMessage) { + public void gracefulShutdown(boolean showGiveUpMessage, @DropOutReason int reason) { mIsShuttingDownGracefully = true; // Make sure bottom bar is expanded. mBottomBarCoordinator.expand(); // Hide everything except header. - mOverlayCoordinator.hide(); + mOverlayCoordinator.setState(AssistantOverlayState.hidden()); mModel.getDetailsModel().clearDetails(); mBottomBarCoordinator.getPaymentRequestCoordinator().setVisible(false); mModel.getCarouselModel().clearChips(); @@ -107,14 +117,15 @@ mModel.getHeaderModel().set(AssistantHeaderModel.STATUS_MESSAGE, mActivity.getString(R.string.autofill_assistant_give_up)); } - ThreadUtils.postOnUiThreadDelayed(this::shutdownImmediately, GRACEFUL_SHUTDOWN_DELAY_MS); + ThreadUtils.postOnUiThreadDelayed( + () -> shutdownImmediately(reason), GRACEFUL_SHUTDOWN_DELAY_MS); } /** * Shut down the Autofill Assistant and close the current Chrome tab. */ public void close() { - shutdownImmediately(); + shutdownImmediately(DropOutReason.CUSTOM_TAB_CLOSED); mActivity.finish(); } @@ -128,12 +139,12 @@ mModel.getHeaderModel().set(AssistantHeaderModel.CLOSE_VISIBLE, false); // Show overlay to prevent user from interacting with the page during onboarding. - mOverlayCoordinator.showFullOverlay(); + mOverlayCoordinator.setState(AssistantOverlayState.full()); AssistantOnboardingCoordinator.show(mActivity, mBottomBarCoordinator.getView()) .then(accepted -> { if (!accepted) { - shutdownImmediately(); + shutdownImmediately(DropOutReason.DECLINED); return; } @@ -142,7 +153,7 @@ mModel.getHeaderModel().set(AssistantHeaderModel.CLOSE_VISIBLE, true); // Hide overlay. - mOverlayCoordinator.hide(); + mOverlayCoordinator.setState(AssistantOverlayState.hidden()); onAccept.run(); }); @@ -174,9 +185,9 @@ * Dismiss the assistant view and show a cancellable snackbar alerting the user that the * Autofill assistant is shutting down. */ - public void dismissAndShowSnackbar(String message) { + public void dismissAndShowSnackbar(String message, @DropOutReason int reason) { if (mIsShuttingDownGracefully) { - shutdownImmediately(); + shutdownImmediately(reason); return; } @@ -193,7 +204,7 @@ @Override public void onDismissNoAction(Object actionData) { - shutdownImmediately(); + shutdownImmediately(reason); } }, Snackbar.TYPE_ACTION, Snackbar.UMA_AUTOFILL_ASSISTANT_STOP_UNDO) @@ -203,8 +214,8 @@ mActivity.getSnackbarManager().showSnackbar(snackBar); } - private void dismissAndShowSnackbar(int message) { - dismissAndShowSnackbar(mActivity.getString(message)); + private void dismissAndShowSnackbar(int message, @DropOutReason int reason) { + dismissAndShowSnackbar(mActivity.getString(message), reason); } /** @@ -220,7 +231,8 @@ @Override public void onUnexpectedTaps() { - dismissAndShowSnackbar(R.string.autofill_assistant_maybe_give_up); + dismissAndShowSnackbar( + R.string.autofill_assistant_maybe_give_up, DropOutReason.OVERLAY_STOP); } @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantOverlayCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantOverlayCoordinator.java deleted file mode 100644 index 3aa61f98..0000000 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantOverlayCoordinator.java +++ /dev/null
@@ -1,74 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.chrome.browser.autofill_assistant; - -import android.graphics.RectF; -import android.view.View; - -import org.chromium.chrome.browser.ChromeActivity; -import org.chromium.chrome.browser.autofill_assistant.TouchEventFilterView.Delegate; - -import java.util.List; - -/** - * Coordinator responsible for showing a full or partial overlay on top of the web page currently - * displayed. - */ -class AssistantOverlayCoordinator { - private final ChromeActivity mActivity; - private final TouchEventFilterView mTouchEventFilter; - private final Delegate mTouchEventFilterDelegate; - - AssistantOverlayCoordinator( - ChromeActivity activity, View assistantView, Delegate touchEventFilterDelegate) { - mActivity = activity; - mTouchEventFilter = assistantView.findViewById( - org.chromium.chrome.autofill_assistant.R.id.touch_event_filter); - mTouchEventFilterDelegate = touchEventFilterDelegate; - - mTouchEventFilter.init(mTouchEventFilterDelegate, mActivity.getFullscreenManager(), - mActivity.getActivityTab().getWebContents(), mActivity.getCompositorViewHolder()); - } - - /** - * Destroy this coordinator. - */ - public void destroy() { - if (mActivity.isViewObscuringAllTabs()) - mActivity.removeViewObscuringAllTabs(mTouchEventFilter); - - // Removes the TouchEventFilter from the ChromeFullscreenManager and GestureListenerManager - // listeners. - mTouchEventFilter.deInit(); - } - - /** - * Enable an overlay that will fully cover the web page. - */ - public void showFullOverlay() { - if (!mActivity.isViewObscuringAllTabs()) - mActivity.addViewObscuringAllTabs(mTouchEventFilter); - mTouchEventFilter.setFullOverlay(true); - } - - /** - * Enable a partial overlay that doesn't cover the portion of the web page whose coordinates - * are given by {@code coords}. - */ - public void showPartialOverlay(boolean enabled, List<RectF> coords) { - if (mActivity.isViewObscuringAllTabs()) - mActivity.removeViewObscuringAllTabs(mTouchEventFilter); - mTouchEventFilter.setPartialOverlay(enabled, coords); - } - - /** - * Hide any (partial or full) overlay previously shown. - */ - public void hide() { - if (mActivity.isViewObscuringAllTabs()) - mActivity.removeViewObscuringAllTabs(mTouchEventFilter); - mTouchEventFilter.setFullOverlay(false); - } -}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantFacade.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantFacade.java index fa34574..e0a647e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantFacade.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantFacade.java
@@ -13,6 +13,7 @@ import org.chromium.base.Callback; import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.ChromeActivity; +import org.chromium.chrome.browser.autofill_assistant.metrics.DropOutReason; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.util.IntentUtils; @@ -57,13 +58,15 @@ /** Starts Autofill Assistant on the given {@code activity}. */ public static void start(ChromeActivity activity) { + // Have an "attempted starts" baseline for the drop out histogram. + AutofillAssistantMetrics.recordDropOut(DropOutReason.AA_START); if (canStart(activity.getInitialIntent())) { - getCurrentTab(activity, tab -> startNow(activity, tab)); + getTab(activity, tab -> startNow(activity, tab)); return; } if (AutofillAssistantPreferencesUtil.getShowOnboarding()) { - getCurrentTab(activity, tab -> { + getTab(activity, tab -> { AutofillAssistantClient client = AutofillAssistantClient.fromWebContents(tab.getWebContents()); client.showOnboarding(() -> startNow(activity, tab)); @@ -82,8 +85,9 @@ client.start(initialUrl, parameters, activity.getInitialIntent().getExtras()); } - private static void getCurrentTab(ChromeActivity activity, Callback<Tab> callback) { - if (activity.getActivityTab() != null) { + private static void getTab(ChromeActivity activity, Callback<Tab> callback) { + if (activity.getActivityTab() != null + && activity.getActivityTab().getWebContents() != null) { callback.onResult(activity.getActivityTab()); return; } @@ -95,6 +99,7 @@ public void onActivityTabChanged(Tab tab) { if (tab == null) return; activity.getActivityTabProvider().removeObserver(this); + assert tab.getWebContents() != null; callback.onResult(tab); } });
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantMetrics.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantMetrics.java new file mode 100644 index 0000000..513560e2 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantMetrics.java
@@ -0,0 +1,27 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.autofill_assistant; + +import org.chromium.base.metrics.CachedMetrics.EnumeratedHistogramSample; +import org.chromium.chrome.browser.autofill_assistant.metrics.DropOutReason; + +/** + * Records user actions and histograms related to Autofill Assistant. + * + * The |DropOutReason| enum is auto generated from + * components/autofill_assistant/browser/metrics.h. + */ +/* package */ class AutofillAssistantMetrics { + private static final EnumeratedHistogramSample ENUMERATED_DROP_OUT_REASON = + new EnumeratedHistogramSample( + "Android.AutofillAssistant.DropOutReason", DropOutReason.NUM_ENTRIES); + + /** + * Records the reason for a drop out. + */ + /* package */ static void recordDropOut(@DropOutReason int reason) { + ENUMERATED_DROP_OUT_REASON.record(reason); + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java index 6abd68f..7c232fb 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java
@@ -11,6 +11,8 @@ import org.chromium.base.annotations.JNINamespace; import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.autofill.PersonalDataManager; +import org.chromium.chrome.browser.autofill_assistant.metrics.DropOutReason; +import org.chromium.chrome.browser.autofill_assistant.overlay.AssistantOverlayState; import org.chromium.chrome.browser.autofill_assistant.payment.AutofillAssistantPaymentRequest.SelectedPaymentInformation; import org.chromium.chrome.browser.customtabs.CustomTabActivity; import org.chromium.chrome.browser.tab.EmptyTabObserver; @@ -43,12 +45,13 @@ private static AutofillAssistantUiController createAndStartUi( WebContents webContents, long nativeUiController) { return new AutofillAssistantUiController( - ChromeActivity.fromWebContents(webContents), nativeUiController); + ChromeActivity.fromWebContents(webContents), webContents, nativeUiController); } - private AutofillAssistantUiController(ChromeActivity activity, long nativeUiController) { + private AutofillAssistantUiController( + ChromeActivity activity, WebContents webContents, long nativeUiController) { mNativeUiController = nativeUiController; - mCoordinator = new AssistantCoordinator(activity, this); + mCoordinator = new AssistantCoordinator(activity, webContents, this); initForCustomTab(activity); } @@ -64,7 +67,7 @@ public void onActivityAttachmentChanged(Tab tab, boolean isAttached) { if (!isAttached) { activityTab.removeObserver(this); - mCoordinator.shutdownImmediately(); + mCoordinator.shutdownImmediately(DropOutReason.TAB_DETACHED); } } }); @@ -77,7 +80,8 @@ // Shutdown the Autofill Assistant if the user switches to another tab. if (!activityTab.equals(tab)) { currentTabModel.removeObserver(this); - mCoordinator.gracefulShutdown(/* showGiveUpMessage= */ true); + mCoordinator.gracefulShutdown( + /* showGiveUpMessage= */ true, DropOutReason.TAB_CHANGED); } } }); @@ -129,12 +133,12 @@ @CalledByNative private void onHideOverlay() { - mCoordinator.getOverlayCoordinator().hide(); + mCoordinator.getOverlayCoordinator().setState(AssistantOverlayState.hidden()); } @CalledByNative private void onShowOverlay() { - mCoordinator.getOverlayCoordinator().showFullOverlay(); + mCoordinator.getOverlayCoordinator().setState(AssistantOverlayState.full()); } @CalledByNative @@ -144,17 +148,17 @@ boxes.add(new RectF(/* left= */ coords[i], /* top= */ coords[i + 1], /* right= */ coords[i + 2], /* bottom= */ coords[i + 3])); } - mCoordinator.getOverlayCoordinator().showPartialOverlay(enabled, boxes); + mCoordinator.getOverlayCoordinator().setState(AssistantOverlayState.partial(boxes)); } @CalledByNative - private void onShutdown() { - mCoordinator.shutdownImmediately(); + private void onShutdown(@DropOutReason int reason) { + mCoordinator.shutdownImmediately(reason); } @CalledByNative - private void onShutdownGracefully() { - mCoordinator.gracefulShutdown(/* showGiveUpMessage= */ false); + private void onShutdownGracefully(@DropOutReason int reason) { + mCoordinator.gracefulShutdown(/* showGiveUpMessage= */ false, reason); } @CalledByNative @@ -192,7 +196,7 @@ private void onRequestPaymentInformationFailed(Exception unusedException) { mCoordinator.getBottomBarCoordinator().allowSwipingBottomSheet(true); - mCoordinator.gracefulShutdown(/* showGiveUpMessage= */ true); + mCoordinator.gracefulShutdown(/* showGiveUpMessage= */ true, DropOutReason.PR_FAILED); } @CalledByNative @@ -211,8 +215,8 @@ } @CalledByNative - private void dismissAndShowSnackbar(String message) { - mCoordinator.dismissAndShowSnackbar(message); + private void dismissAndShowSnackbar(String message, @DropOutReason int reason) { + mCoordinator.dismissAndShowSnackbar(message, reason); } // Native methods.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/overlay/AssistantOverlayCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/overlay/AssistantOverlayCoordinator.java new file mode 100644 index 0000000..35246d4c --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/overlay/AssistantOverlayCoordinator.java
@@ -0,0 +1,58 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.autofill_assistant.overlay; + +import android.view.View; + +import org.chromium.chrome.browser.ChromeActivity; +import org.chromium.chrome.browser.autofill_assistant.overlay.TouchEventFilterView.Delegate; + +/** + * Coordinator responsible for showing a full or partial overlay on top of the web page currently + * displayed. + */ +public class AssistantOverlayCoordinator { + private final ChromeActivity mActivity; + private final TouchEventFilterView mTouchEventFilter; + private final Delegate mTouchEventFilterDelegate; + + public AssistantOverlayCoordinator( + ChromeActivity activity, View assistantView, Delegate touchEventFilterDelegate) { + mActivity = activity; + mTouchEventFilter = assistantView.findViewById( + org.chromium.chrome.autofill_assistant.R.id.touch_event_filter); + mTouchEventFilterDelegate = touchEventFilterDelegate; + + mTouchEventFilter.init(mTouchEventFilterDelegate, mActivity.getFullscreenManager(), + mActivity.getActivityTab().getWebContents(), mActivity.getCompositorViewHolder()); + } + + /** + * Destroy this coordinator. + */ + public void destroy() { + if (mActivity.isViewObscuringAllTabs()) + mActivity.removeViewObscuringAllTabs(mTouchEventFilter); + + // Removes the TouchEventFilter from the ChromeFullscreenManager and GestureListenerManager + // listeners. + mTouchEventFilter.deInit(); + } + + /** + * Set the overlay state. + */ + public void setState(AssistantOverlayState state) { + if (state.isFull() && !mActivity.isViewObscuringAllTabs()) { + mActivity.addViewObscuringAllTabs(mTouchEventFilter); + } + + if (!state.isFull() && mActivity.isViewObscuringAllTabs()) { + mActivity.removeViewObscuringAllTabs(mTouchEventFilter); + } + + mTouchEventFilter.setState(state); + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/overlay/AssistantOverlayState.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/overlay/AssistantOverlayState.java new file mode 100644 index 0000000..affce18 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/overlay/AssistantOverlayState.java
@@ -0,0 +1,94 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.autofill_assistant.overlay; + +import android.graphics.RectF; + +import java.util.Collections; +import java.util.List; + +/** + * A state class for the overlay. + */ +public abstract class AssistantOverlayState { + private AssistantOverlayState() {} + + boolean isHidden() { + return this instanceof Hidden; + } + + boolean isFull() { + return this instanceof Full; + } + + boolean isPartial() { + return this instanceof Partial; + } + + List<RectF> boxes() { + if (this instanceof Partial) { + return ((Partial) this).mBoxes; + } + return Collections.emptyList(); + } + + /** + * Return an AssistantOverlayState representing a hidden overlay. + */ + public static AssistantOverlayState hidden() { + return Hidden.INSTANCE; + } + + /** + * Return an AssistantOverlayState representing a full overlay. + */ + public static AssistantOverlayState full() { + return Full.INSTANCE; + } + + /** + * Return an AssistantOverlayState representing a partial overlay. + */ + public static AssistantOverlayState partial(List<RectF> boxes) { + return new Partial(boxes); + } + + private static class Hidden extends AssistantOverlayState { + private static final AssistantOverlayState INSTANCE = new Hidden(); + + // Default equals method is correct as there can be only one instance of + // AssistantOverlayState.Hidden. + } + + private static class Full extends AssistantOverlayState { + private static final AssistantOverlayState INSTANCE = new Full(); + + // Default equals method is correct as there can be only one instance of + // AssistantOverlayState.Full. + } + + private static class Partial extends AssistantOverlayState { + private final List<RectF> mBoxes; + + private Partial(List<RectF> boxes /*, float[] coords*/) { + // this.coords = coords; + mBoxes = boxes; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + Partial partial = (Partial) o; + + return mBoxes.equals(partial.mBoxes); + } + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/TouchEventFilterView.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/overlay/TouchEventFilterView.java similarity index 90% rename from chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/TouchEventFilterView.java rename to chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/overlay/TouchEventFilterView.java index a79a2ac..012c49c3 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/TouchEventFilterView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/overlay/TouchEventFilterView.java
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -package org.chromium.chrome.browser.autofill_assistant; +package org.chromium.chrome.browser.autofill_assistant.overlay; import android.annotation.SuppressLint; import android.content.Context; @@ -31,7 +31,6 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; -import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -97,21 +96,10 @@ private ChromeFullscreenManager mFullscreenManager; private GestureListenerManager mGestureListenerManager; private View mCompositorView; - private final List<RectF> mTouchableArea = new ArrayList<>(); private final Paint mGrayOut; private final Paint mClear; - /** - * Whether a partial-screen overlay is enabled or not. Has precedence over {@link - * @mFullOverlayEnabled}. - */ - private boolean mPartialOverlayEnabled; - - /** - * Whether a full-screen overlay is enabled or not. Is overridden by {@link - * @mPartialOverlayEnabled}. - */ - private boolean mFullOverlayEnabled; + private AssistantOverlayState mCurrentState = AssistantOverlayState.hidden(); /** Padding added between the element area and the grayed-out area. */ private final float mPaddingPx; @@ -214,9 +202,6 @@ mClear = new Paint(); mClear.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); - setFullOverlay(false); - setPartialOverlay(false, Collections.emptyList()); - mTapDetector = new GestureDetector(context, new SimpleOnGestureListener() { @Override public boolean onSingleTapUp(MotionEvent e) { @@ -265,44 +250,34 @@ } /** - * Enables/disables a full screen overlay. - * - * If both a full and a partial screen overlay are set, the partial overlay has precedence. - * - * @param enabled if {@code false}, the full screen overlay is disabled + * Set the current state of the overlay. */ - public void setFullOverlay(boolean enabled) { - if (mFullOverlayEnabled != enabled) { - mFullOverlayEnabled = enabled; - - // reset tap counter each time the full screen overlay is disabled. - if (!mFullOverlayEnabled) mUnexpectedTapTimes.clear(); - updateVisibility(); - invalidate(); + public void setState(AssistantOverlayState newState) { + if (newState.equals(mCurrentState)) { + return; } - } - /** - * Enables/disables a partial screen overlay. - * - * If both a full and a partial screen overlay are set, the partial overlay has precedence. - * - * @param enabled if {@code false}, the partial overlay is disabled - * @param rectangles rectangles defining the area that can be used, may be empty - */ - public void setPartialOverlay(boolean enabled, List<RectF> rectangles) { - if (mPartialOverlayEnabled != enabled || (enabled && !mTouchableArea.equals(rectangles))) { - mPartialOverlayEnabled = enabled; - - clearTouchableArea(); - mTouchableArea.addAll(rectangles); - updateVisibility(); - invalidate(); + // Partial overlay has precedence over full overlay. + // TODO(crbug.com/806868): Remove this precedence by making sure we don't set a full overlay + // when there is a partial overlay already. This class shouldn't dictate whether it accepts + // its state or not. + if (mCurrentState.isPartial() && newState.isFull()) { + return; } - } - private boolean isOverlayShown() { - return mFullOverlayEnabled || mPartialOverlayEnabled; + mCurrentState = newState; + + // Reset tap counter each time we hide the overlay. + if (newState.isHidden()) { + mUnexpectedTapTimes.clear(); + } + + if (newState.isPartial()) { + clearOffsets(); + } + + updateVisibility(); + invalidate(); } private void updateVisibility() { @@ -313,15 +288,13 @@ // // TODO(crbug.com/806868): filter elements available to touch exploration, when it // is enabled. - setVisibility( - (mPartialOverlayEnabled || !mFullOverlayEnabled) ? View.GONE : View.VISIBLE); + setVisibility(!mCurrentState.isFull() ? View.GONE : View.VISIBLE); } - setAlpha(isOverlayShown() ? 1.0f : 0.0f); + setAlpha(mCurrentState.isHidden() ? 0.0f : 1.0f); } - private void clearTouchableArea() { - mTouchableArea.clear(); + private void clearOffsets() { mOffsetY = 0; mInitialBrowserScrollOffsetY += mBrowserScrollOffsetY; mBrowserScrollOffsetY = 0; @@ -335,8 +308,8 @@ } // Note that partial overlays have precedence over full overlays - if (mPartialOverlayEnabled) return dispatchTouchEventWithPartialOverlay(event); - if (mFullOverlayEnabled) return dispatchTouchEventWithFullOverlay(event); + if (mCurrentState.isPartial()) return dispatchTouchEventWithPartialOverlay(event); + if (mCurrentState.isFull()) return dispatchTouchEventWithFullOverlay(event); return dispatchTouchEventWithNoOverlay(); } @@ -501,7 +474,7 @@ @SuppressLint("CanvasSize") protected void onDraw(Canvas canvas) { super.onDraw(canvas); - if (!isOverlayShown()) { + if (mCurrentState.isHidden()) { return; } canvas.drawPaint(mGrayOut); @@ -517,7 +490,7 @@ } int height = yBottom - yTop; - for (RectF rect : mTouchableArea) { + for (RectF rect : mCurrentState.boxes()) { mDrawRect.left = rect.left * width - mPaddingPx; mDrawRect.top = yTop + rect.top * height - mPaddingPx - mBrowserScrollOffsetY - mOffsetY; @@ -611,7 +584,7 @@ } private boolean isInTouchableArea(float x, float y) { - for (RectF rect : mTouchableArea) { + for (RectF rect : mCurrentState.boxes()) { if (rect.contains(x, y, x, y)) { return true; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestCoordinator.java index c7b5682..9be5c33 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestCoordinator.java
@@ -28,8 +28,9 @@ private Promise<SelectedPaymentInformation> mCurrentPromise; - public AssistantPaymentRequestCoordinator(ChromeActivity activity) { - mWebContents = activity.getCurrentWebContents(); + public AssistantPaymentRequestCoordinator(ChromeActivity activity, WebContents webContents) { + mWebContents = webContents; + assert webContents != null; // TODO(crbug.com/806868): Remove this. mView = new LinearLayout(activity);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contacts_picker/OWNERS b/chrome/android/java/src/org/chromium/chrome/browser/contacts_picker/OWNERS new file mode 100644 index 0000000..9c49247 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/contacts_picker/OWNERS
@@ -0,0 +1,3 @@ +finnur@chromium.org +peter@chromium.org +twellington@chromium.org
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/home/filter/chips/ChipsViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/download/home/filter/chips/ChipsViewHolder.java index cfeb072d..ebd6f18 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/download/home/filter/chips/ChipsViewHolder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/home/filter/chips/ChipsViewHolder.java
@@ -46,8 +46,8 @@ getChipView().setEnabled(chip.enabled); getChipView().setSelected(chip.selected); getChipView().setOnClickListener(v -> chip.chipSelectedListener.run()); - getChipView().getInnerTextView().setText(chip.text); - getChipView().setIcon(chip.icon); - getChipView().getInnerTextView().setContentDescription(chip.contentDescription); + getChipView().getPrimaryTextView().setText(chip.text); + getChipView().setIcon(chip.icon, true); + getChipView().getPrimaryTextView().setContentDescription(chip.contentDescription); } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java index 3b5f3533..06f93ed 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
@@ -226,27 +226,25 @@ }); } - if (ChromeFeatureList.isEnabled(ChromeFeatureList.NEW_CONTACTS_PICKER)) { - UiUtils.setContactsPickerDelegate(new UiUtils.ContactsPickerDelegate() { - private ContactsPickerDialog mDialog; + UiUtils.setContactsPickerDelegate(new UiUtils.ContactsPickerDelegate() { + private ContactsPickerDialog mDialog; - @Override - public void showContactsPicker(Context context, ContactsPickerListener listener, - boolean allowMultiple, boolean includeNames, boolean includeEmails, - boolean includeTel) { - mDialog = new ContactsPickerDialog(context, listener, allowMultiple, - includeNames, includeEmails, includeTel); - mDialog.getWindow().getAttributes().windowAnimations = - R.style.PickerDialogAnimation; - mDialog.show(); - } + @Override + public void showContactsPicker(Context context, ContactsPickerListener listener, + boolean allowMultiple, boolean includeNames, boolean includeEmails, + boolean includeTel) { + mDialog = new ContactsPickerDialog( + context, listener, allowMultiple, includeNames, includeEmails, includeTel); + mDialog.getWindow().getAttributes().windowAnimations = + R.style.PickerDialogAnimation; + mDialog.show(); + } - @Override - public void onContactsPickerDismissed() { - mDialog = null; - } - }); - } + @Override + public void onContactsPickerDismissed() { + mDialog = null; + } + }); SearchWidgetProvider.initialize(); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferenceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferenceBridge.java index fadbe36..d574c31 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferenceBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferenceBridge.java
@@ -139,7 +139,7 @@ @SuppressWarnings("unchecked") @CalledByNative private static void insertLocalStorageInfoIntoMap( - HashMap map, String origin, String fullOrigin, long size, boolean important) { + HashMap map, String origin, long size, boolean important) { ((HashMap<String, LocalStorageInfo>) map) .put(origin, new LocalStorageInfo(origin, size, important)); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java index 46db4a3..469013b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java
@@ -600,10 +600,10 @@ void setTextureCaptureMode(boolean textureMode) {} boolean shouldIgnoreSwipeGesture() { + if (mUrlHasFocus || mFindInPageToolbarShowing) return true; + if (mMenuButtonWrapper == null) return false; final AppMenuButtonHelper appMenuButtonHelper = mMenuButtonWrapper.getAppMenuButtonHelper(); - return mUrlHasFocus - || (appMenuButtonHelper != null && appMenuButtonHelper.isAppMenuActive()) - || mFindInPageToolbarShowing; + return appMenuButtonHelper != null && appMenuButtonHelper.isAppMenuActive(); } /**
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_am.xtb b/chrome/android/java/strings/translations/android_chrome_strings_am.xtb index d7f595b..eb609e5 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_am.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_am.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="am"> <translation id="1006017844123154345">መስመር ላይ ክፈት</translation> +<translation id="1023450834687746199">ለ<ph name="APP_NAME" /> ውሂብን አጽድተዋል።</translation> <translation id="1036727731225946849"><ph name="WEBAPK_NAME" />ን በማከል ላይ...</translation> <translation id="1041308826830691739">ከድር ጣቢያዎች</translation> <translation id="1049743911850919806">ማንነት የማያሳውቅ</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">በአድራሻ አሞሌው ውስጥ ታሪክን እና ራስ-ሰር ማጠናቀቆችን ያጸዳል።</translation> <translation id="2021896219286479412">የሙሉ ማያ ገጽ ጣቢያ መቆጣጠሪያዎች</translation> <translation id="2038563949887743358">የዴስክቶፕ ጣቢያን ጠይቅን አብራ</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> እንዲሁም በChrome ውስጥ ውሂብ አለው</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> ጊባ ሌሎች መተግበሪያዎች</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">ለመፈለግ መታ ያድርጉ</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">ካርትን ያርትዑ</translation> <translation id="2154710561487035718">URL ቅዳ</translation> <translation id="2156074688469523661">ቀሪ ጣቢያዎች (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">የበይነመረብ ግኑኝነትዎን ይፈትሹ</translation> <translation id="2197557662829090533">እርስዎ የጎበኙዋቸው የድርጣቢያዎችን እንዲያሳይ ለDigital Wellbeing ይፍቀዱ</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />፣ የድር መተግበሪያ። <ph name="APP_URL" /></translation> <translation id="2227444325776770048">እንደ <ph name="USER_FULL_NAME" /> ሆነው ይቀጥሉ</translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">አልተሳካም</translation> <translation id="2781151931089541271">1 ሰከንድ ይቀራል</translation> <translation id="2784212955220061919">በቀላል ሁነታ ላይ Chrome ገጾችን በበለጠ ፍጥነት የሚጭን ሲሆን እስከ 60 በመቶ ያነሰ ውሂብ ይጠቀማል። የGoogle ደመና ቴክኖሎጂ እርስዎ የሚጎበኟቸውን ገጾች ያተባል።</translation> +<translation id="2785336755839207516"><ph name="APP_NAME" />ን አራግፈዋል።</translation> <translation id="2803478378562657435">የተቀመጡ የይለፍ ቃላትን እና የይለፍ ቃል አማራጮችን በማሳየት ላይ</translation> <translation id="2810645512293415242">ውሂብን ለመቆጠብ እና በበለጠ ፍጥነት ለመጫን የተቃለለ ገጽ።</translation> <translation id="281504910091592009">የተቀመጡ የይለፍ ቃላትን በእርስዎ <ph name="BEGIN_LINK" />Google መለያ<ph name="END_LINK" /> ውስጥ ይመልከቱ እና ያስተዳድሩ</translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">መረጃ አሳይ</translation> <translation id="3123473560110926937">በአንዳንድ ጣቢያዎች ላይ ታግዷል</translation> <translation id="3137521801621304719">ከማንነት የማያሳውቅ ሁነታ ይውጡ</translation> +<translation id="3143515551205905069">ስምረትን ሰርዝ</translation> <translation id="3148434565183091099">የእርስዎን ዕልባቶች በሁሉም መሣሪያዎችዎ ላይ ለማግኘት ወደ Chrome ይግቡ።</translation> <translation id="3157842584138209013">ከተጨማሪ አማራጮች አዝራር ላይ ምን ያህል ውሂብ እንዳስቀመጡ ይመልከቱ</translation> <translation id="3166827708714933426">የትር እና የመስኮት አቋራጮች</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">ምስል ጫን</translation> <translation id="3269956123044984603">ትሮችዎን ከሌሎች መሣሪያዎችዎ ለማግኘት በAndroid የመለያ ቅንብሮች ውስጥ «ውሂብን በራስ-አስምር»ን ያብሩ።</translation> <translation id="3282568296779691940">Chrome ውስጥ ይግቡ</translation> +<translation id="3288003805934695103">ገጹን እንደገና መጫን</translation> <translation id="32895400574683172">ማሳወቂያዎች ይፈቀዳሉ</translation> <translation id="3295530008794733555">በበለጠ ፍጥነት ያስሱ። ያነሰ ውሂብን ይጠቀሙ።</translation> <translation id="3295602654194328831">መረጃ ደብቅ</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> የሚወርዱ ተሰርዘዋል</translation> <translation id="3819562311292413223">ለእርስዎ የሚሆኑ ጽሑፎችን አይውርዱ</translation> <translation id="3822502789641063741">የጣቢያ ማከማቻ ይጽዳ?</translation> +<translation id="385051799172605136">ተመለስ</translation> <translation id="3859306556332390985">ወደፊት ፈልግ</translation> <translation id="3894427358181296146">አቃፊ ያክሉ</translation> <translation id="3895926599014793903">ማጉላት አንቃን ያስገድዱ</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">ይግቡ</translation> <translation id="395206256282351086">ፍለጋ እና የጣቢያ አስተያየት ጥቆማዎች ተሰናክለዋል</translation> <translation id="3955193568934677022">ጥበቃ የሚደረግበትን ይዘት እንዲያጫውቱ ለጣቢያዎች ፍቀድ (የሚመከር)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome ዝግጁ ሲሆን ገጽዎን ይጭነዋል}one{Chrome ዝግጁ ሲሆን ገጾችዎን ይጭነዋል}other{Chrome ዝግጁ ሲሆን ገጾችዎን ይጭነዋል}}</translation> <translation id="3963007978381181125">የእርስዎ የይለፍ ሐረግ ያለው ሰው ብቻ ነው የእርስዎን የተመሰጠረ ውሂብ ማንበብ የሚችለው። የይለፍ ሐረጉ ወደ Google አይላክም እንዲሁም አይከማችም። የእርስዎን የይለፍ ሐረግ ከረሱት ወይም ይህን ቅንብር መለወጥ ከፈለጉ ማሥመሩን ዳግም ማስጀመር ያስፈልገዎታል። <ph name="BEGIN_LINK" />የበለጠ ለመረዳት<ph name="END_LINK" /></translation> <translation id="3967822245660637423">ማውረድ ተጠናቅቋል</translation> <translation id="397583555483684758">ስምረት መሥራት አቁሟል</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">ማህደረ መረጃ</translation> <translation id="4278390842282768270">ተፈቅዷል</translation> <translation id="429312253194641664">አንድ ጣቢያ ሚዲያን በማጫወት ላይ ነው</translation> +<translation id="4298388696830689168">የተገናኙ ጣቢያዎች</translation> <translation id="4307992518367153382">መሠረታዊ</translation> <translation id="4314815835985389558">ስምረትን ያቀናብሩ</translation> <translation id="4351244548802238354">መገናኛ ዝጋ</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">«አትከታተል»ን ማንቃት ማለት አንድ ጥያቄ በአሰሳ ትራፊክዎ ላይ ይካተታል ማለት ነው። ማንኛውም ውጤት አንድ ድር ጣቢያ ለጥያቄው ምላሽ ከሰጠና ጥያቄውን በሚተረጎምበት መንገድ ላይ የሚወሰን ነው። ለምሳሌ፣ አንዳንድ ድር ጣቢያዎች ሌሎች በጎበኟቸው ድር ጣቢያዎች ላይ ያልተመሠረቱ ማስታወቂያዎችን በማሳየት ለዚህ ጥያቄ ምላሽ ሊሰጡ ይችላሉ። ብዙ ድር ጣቢያዎች አሁንም የአሰሳ ውሂብዎን ይሰበስቡና ይጠቀሙበታል — ለምሳሌ ደህንነትን ለማሻሻል፤ ይዘት፣ ማስታወቂያዎችና ምክሮች በድር ጣቢያዎች ላይ ለማቅረብ፤ እና የሪፖርት አደራረግ ስታቲስቲክስን ለማመንጨት።</translation> +<translation id="624789221780392884">ማዘመኛ ዝግጁ ነው</translation> <translation id="6255999984061454636">የይዘት አስተያየት ጥቆማዎች</translation> <translation id="6277522088822131679">ገጹን ማተም ላይ ችግር ነበር። እባክዎ እንደገና ይሞክሩ።</translation> <translation id="6295158916970320988">ሁሉም ጣቢያዎች</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">ቪድዮ አውርድ</translation> <translation id="6482749332252372425">በማከማቻ ቦታ ጥበት ምክንያት <ph name="FILE_NAME" />ን ማውረድ አልተሳካም።</translation> <translation id="6496823230996795692"><ph name="APP_NAME" />ን ለመጀመሪያ ጊዜ ለመጠቀም እባክዎ ከበይነመረብ ጋር ይገናኙ።</translation> +<translation id="6508722015517270189">Chromeን ዳግም ያስጀምሩት</translation> <translation id="6527303717912515753">አጋራ</translation> <translation id="6534565668554028783">Google ምላሽ ለመስጠት ከልክ በላይ ረዥም ጊዜ ወስዷል</translation> <translation id="6538442820324228105"><ph name="GBS" /> ጊባ ወርዷል</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">የGoogle Play አገልግሎቶች አዘምኖ እስኪጨርስ በመጠበቅ ላይ</translation> <translation id="7189598951263744875">አጋራ...</translation> <translation id="7191430249889272776">ትር ጀርባ ላይ ተከፍቷል።</translation> -<translation id="7221869452894271364">ይህን ገጽ ዳግም ጫን</translation> <translation id="723171743924126238">ምስሎችን ይምረጡ</translation> <translation id="7243308994586599757">አማራጮች ከማያ ገጹ ግርጌ አጠገብ ይገኛሉ</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> ተመርጠዋል</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">የጊዜ ወሰን</translation> <translation id="7851858861565204677">ሌሎች መሣሪያዎች</translation> <translation id="7854964836418414587">እንደዚህ ተጨማሪ ዝጋ</translation> +<translation id="7871791972254842204">በኋላ ላይ በ<ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ላይ ያሉ ደንቦች እና ሁኔታዎችን ያንብቡና በእነሱ ይስማሙ</translation> <translation id="7875915731392087153">ኢሜይል ይፍጠሩ</translation> <translation id="7876243839304621966">ሁሉንም አስወግድ</translation> <translation id="7882131421121961860">ምንም ታሪክ አልተገኘም</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">ከቆመበት ቀጥል</translation> <translation id="8209050860603202033">ምስል ክፈት</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> ጊባ ወርዷል</translation> +<translation id="8232956427053453090">ውሂብን አቆይ</translation> <translation id="8249310407154411074">ወደ ላይ ውሰድ</translation> <translation id="8250920743982581267">ሰነዶች</translation> <translation id="825412236959742607">ይህ ገጽ በጣም ብዙ ማህደረ ትውስታን ይጠቀማል፣ ስለዚህ Chrome አንዳንድ ይዘትን አስወግዷል።</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">የካርድ ያዢ ስም</translation> <translation id="8604763363205185560">Chrome እና ደህንነቱ እንዲሻሻል ያግዙ</translation> <translation id="8609465669617005112">ወደላይ አውጣ</translation> +<translation id="8611192991944347781">ውሂብን አቀናብር</translation> <translation id="8616006591992756292">የእርስዎ Google መለያ <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> ላይ ሌሎች የአሰሳ ታሪክ ዓይነቶች ሊኖረው ይችላል።</translation> <translation id="8617240290563765734">በወረደው ይዘት ላይ የተጠቆመው ዩአርኤል ይከፈት?</translation> <translation id="8636825310635137004">ትሮችዎን ከሌሎች መሣሪያዎችዎ ለማግኘት ስምረትን ያብሩ።</translation> <translation id="8641930654639604085">የአዋቂ ሰው ጣቢያዎችን ለማገድ ሞክር</translation> +<translation id="8655129584991699539">ውሂቡን በChrome ቅንብሮች ውስጥ ማጽዳት ይችላሉ</translation> <translation id="8662811608048051533">ከአብዛኛዎቹ ጣቢያዎች ዘግተው እንዲወጡ ያደርገዎታል።</translation> <translation id="8664979001105139458">የፋይል ስም አስቀድሞ አለ</translation> <translation id="8676374126336081632">ግቤቱን አጽዳ</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">እውቂያዎችዎን ይፈልጉ</translation> <translation id="869891660844655955">የሚያበቀበት ጊዜ</translation> <translation id="8719023831149562936">የአሁኑን ትር በሞገድ መላክ አልተቻለም</translation> +<translation id="8723954843026426558">በደንቦች እና ሁኔታዎች፣ የግላዊነት መመሪያ እና በ<ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> የመውጣት መብት እስማማለሁ</translation> <translation id="8725066075913043281">እንደገና ይሞክሩ</translation> <translation id="8728487861892616501">ይህን መተግበሪያ በመጠቀምዎ በChrome <ph name="BEGIN_LINK1" />አገልግሎት ውል<ph name="END_LINK1" /> እና <ph name="BEGIN_LINK2" />የግላዊነት ማሳወቂያ<ph name="END_LINK2" /> እንዲሁም <ph name="BEGIN_LINK3" />በFamily Link ለሚተዳደሩ የGoogle መለያዎች የግላዊነት ማሳወቂያ<ph name="END_LINK3" /> ይስማማሉ።</translation> <translation id="8730621377337864115">ተከናውኗል</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb index 78492178..b5fc812 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="ar"> <translation id="1006017844123154345">فتح على الإنترنت</translation> +<translation id="1023450834687746199">لقد محوت بيانات <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">جارٍ إضافة <ph name="WEBAPK_NAME" />...</translation> <translation id="1041308826830691739">من المواقع الإلكترونية</translation> <translation id="1049743911850919806">التصفح المتخفي</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">مسح السجل وعمليات الإكمال التلقائي في شريط العناوين.</translation> <translation id="2021896219286479412">عناصر التحكم لموقع في وضع ملء الشاشة</translation> <translation id="2038563949887743358">تشغيل طلب موقع الويب لسطح المكتب</translation> +<translation id="204321170514947529">تتوفَّر بيانات<ph name="APP_NAME" /> أيضًا في Chrome</translation> <translation id="2045104531052923016">تطبيقات أخرى بحجم <ph name="GIGABYTES" /> غيغابايت</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">انقر للبحث</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">تعديل البطاقة</translation> <translation id="2154710561487035718">نسخ عنوان URL</translation> <translation id="2156074688469523661">المواقع المتبقية (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">يُرجى التحقُّق من اتصال الإنترنت</translation> <translation id="2197557662829090533">السماح "للرفاهية الرقمية" بعرض مواقع الويب التي زرتها.</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />، تطبيق ويب. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">متابعة باسم <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">تعذَّر التنزيل</translation> <translation id="2781151931089541271">يتبقى ثانية واحدة</translation> <translation id="2784212955220061919">في الوضع البسيط، يُحمِّل Chrome الصفحات بشكلٍ أسرع ويستخدم بيانات أقل بنسبة تصل إلى 60 بالمائة. وتعمل تكنولوجيا السحابة الإلكترونية من Google على تحسين الصفحات التي تزورها.</translation> +<translation id="2785336755839207516">لقد ألغيت تثبيت <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">عرض كلمات المرور المحفوظة وخيارات كلمة المرور</translation> <translation id="2810645512293415242">صفحة مبسَّطة لحفظ البيانات والاستمتاع بتحميل أسرع.</translation> <translation id="281504910091592009">عرض كلمات المرور المحفوظة وإدارتها في <ph name="BEGIN_LINK" />حسابك على Google<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">عرض المعلومات</translation> <translation id="3123473560110926937">حظر الإعلانات في بعض المواقع</translation> <translation id="3137521801621304719">مغادرة وضع التصفح المتخفي</translation> +<translation id="3143515551205905069">إلغاء المزامنة</translation> <translation id="3148434565183091099">للحصول على الإشارات المرجعية على جميع أجهزتك، سجِّل الدخول إلى Chrome.</translation> <translation id="3157842584138209013">الاطّلاع على مقدار البيانات التي حفظتها من الزر "مزيد من الخيارات"</translation> <translation id="3166827708714933426">اختصارات علامات التبويب والنوافذ</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">تحميل الصورة</translation> <translation id="3269956123044984603">للحصول على علامات التبويب من أجهزتك الأخرى، شغِّل "المزامنة التلقائية للبيانات" في إعدادات حساب Android.</translation> <translation id="3282568296779691940">تسجيل الدخول إلى Chrome</translation> +<translation id="3288003805934695103">إعادة تحميل الصفحة</translation> <translation id="32895400574683172">مسموح بالإشعارات</translation> <translation id="3295530008794733555">تصفُّح أسرع. واستخدام بيانات أقل.</translation> <translation id="3295602654194328831">إخفاء المعلومات</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326">تم إلغاء <ph name="NUMBER_OF_DOWNLOADS" /> من التنزيلات</translation> <translation id="3819562311292413223">تنزيل مقالات لك</translation> <translation id="3822502789641063741">أتمحو مساحة تخزين الموقع؟</translation> +<translation id="385051799172605136">الرجوع إلى الوراء</translation> <translation id="3859306556332390985">الانتقال للأمام</translation> <translation id="3894427358181296146">إضافة مجلد</translation> <translation id="3895926599014793903">فرض تفعيل التكبير/التصغير</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">تسجيل الدخول</translation> <translation id="395206256282351086">اقتراحات البحث ومواقع الويب غير مفعّلة</translation> <translation id="3955193568934677022">السماح للمواقع الإلكترونية بتشغيل المحتوى المحمي (مُستحسَن)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{سيُحمِّل Chrome صفحة واحدة عندما تصبح جاهزة}zero{سيُحمِّل Chrome الصفحات عندما تصبح جاهزة}two{سيُحمِّل Chrome الصفحتين عندما تصبح جاهزة}few{سيُحمِّل Chrome الصفحات عندما تصبح جاهزة}many{سيُحمِّل Chrome الصفحات عندما تصبح جاهزة}other{سيُحمِّل Chrome الصفحات عندما تصبح جاهزة}}</translation> <translation id="3963007978381181125">لا يتضمّن التشفير باستخدام عبارة المرور طرق الدفع والعناوين من Google Pay. ولن يتمكّن أي شخص من الاطّلاع على بياناتك المشفرة إلا من يعرف عبارة مرورك. لا تُرسَل عبارة المرور إلى شركة Google ولا تُخزّن لديها. في حال نسيان عبارة المرور أو الرغبة في تغيير هذا الإعداد، ستحتاج إلى إعادة ضبط المزامنة. <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" /></translation> <translation id="3967822245660637423">اكتمل التنزيل</translation> <translation id="397583555483684758">توقفت المزامنة</translation> @@ -415,7 +421,7 @@ <translation id="4170011742729630528">الخدمة غير متاحة، أعد المحاولة لاحقًا.</translation> <translation id="4179980317383591987">تم استخدام <ph name="AMOUNT" /></translation> <translation id="4181841719683918333">اللغات</translation> -<translation id="4195643157523330669">فتح الإشارة في علامة تبويب جديدة</translation> +<translation id="4195643157523330669">فتح في علامة تبويب جديدة</translation> <translation id="4198423547019359126">ما من مواقع تنزيل متاحة</translation> <translation id="4209895695669353772">للحصول على محتوى مُخصَّص اقترحته Google، يُرجى تفعيل المزامنة.</translation> <translation id="4225719675976901337">لم يتم العثور على محتوى</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">الوسائط</translation> <translation id="4278390842282768270">مسموح بها</translation> <translation id="429312253194641664">تشغيل موقع ويب للوسائط</translation> +<translation id="4298388696830689168">المواقع المرتبطة</translation> <translation id="4307992518367153382">أساسيّات</translation> <translation id="4314815835985389558">إدارة المزامنة</translation> <translation id="4351244548802238354">إغلاق مربع الحوار</translation> @@ -534,7 +541,7 @@ <translation id="5004416275253351869">عناصر التحكم بالنشاط على Google</translation> <translation id="5005498671520578047">نسخ كلمة المرور</translation> <translation id="5011311129201317034">يريد <ph name="SITE" /> الاتصال</translation> -<translation id="5013696553129441713">ليست هناك اقتراحات جديدة</translation> +<translation id="5013696553129441713">ما من اقتراحات جديدة</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">سماح</translation> <translation id="5040262127954254034">الخصوصية</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">يعني تفعيل ميزة "عدم التعقب" تضمين الطلب مع عدد زيارات التصفح. ويعتمد أي تأثير على استجابة موقع الويب للطلب من عدمه، بالإضافة إلى كيفية تفسير الطلب. فعلى سبيل المثال، قد تستجيب بعض مواقع الويب لهذا الطلب بعرض إعلانات غير موجودة في مواقع الويب الأخرى التي زرتها. وستستمر العديد من مواقع الويب في جمع بيانات التصفح واستخدامها - على سبيل المثال لتحسين الأمان، وتقديم المحتوى والإعلانات والمقترحات، وإنشاء إحصاءات التقارير.</translation> +<translation id="624789221780392884">التحديث جاهز</translation> <translation id="6255999984061454636">اقتراحات المحتوى</translation> <translation id="6277522088822131679">حدثت مشكلة أثناء طباعة الصفحة. يُرجى إعادة المحاولة.</translation> <translation id="6295158916970320988">جميع المواقع</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">تنزيل الفيديو</translation> <translation id="6482749332252372425">تعذّر تنزيل الملف <ph name="FILE_NAME" /> لعدم توفر مساحة لتخزين.</translation> <translation id="6496823230996795692">لاستخدام <ph name="APP_NAME" /> للمرة الأولى، يُرجى الاتصال بالإنترنت.</translation> +<translation id="6508722015517270189">إعادة تشغيل Chrome</translation> <translation id="6527303717912515753">مشاركة</translation> <translation id="6534565668554028783">استغرقت Google وقتًا أطول مما يجب للاستجابة</translation> <translation id="6538442820324228105">تم التنزيل بحجم <ph name="GBS" /> غيغابايت</translation> @@ -828,11 +837,10 @@ <translation id="7149893636342594995">آخر 24 ساعة</translation> <translation id="7176368934862295254"><ph name="KILOBYTES" /> كيلوبايت</translation> <translation id="7177466738963138057">يمكنك تغيير ذلك لاحقًا من "الإعدادات"</translation> -<translation id="7180611975245234373">تحديث</translation> +<translation id="7180611975245234373">إعادة التحميل</translation> <translation id="7189372733857464326">انتظار انتهاء تحديث خدمات Google Play</translation> <translation id="7189598951263744875">مشاركة...</translation> <translation id="7191430249889272776">تم فتح علامة التبويب في الخلفية.</translation> -<translation id="7221869452894271364">إعادة تحميل هذه الصفحة</translation> <translation id="723171743924126238">تحديد الصور</translation> <translation id="7243308994586599757">الخيارات المتاحة بالقرب من الجزء السفلي من الشاشة</translation> <translation id="7250468141469952378">تم اختيار <ph name="ITEM_COUNT" /> عنصراً</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">النطاق الزمني</translation> <translation id="7851858861565204677">أجهزة أخرى</translation> <translation id="7854964836418414587">إغلاق "المزيد من النتائج المشابهة"</translation> +<translation id="7871791972254842204">يمكنك قراءة الأحكام والشروط والموافقة عليها <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> لاحقًا</translation> <translation id="7875915731392087153">إنشاء بريد إلكتروني</translation> <translation id="7876243839304621966">إزالة الكل</translation> <translation id="7882131421121961860">لم يتم العثور على أي سجلّ</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">استئناف</translation> <translation id="8209050860603202033">فتح الصورة</translation> <translation id="8220488350232498290">تم تنزيل <ph name="GIGABYTES" /> غيغابايت</translation> +<translation id="8232956427053453090">حفظ البيانات</translation> <translation id="8249310407154411074">نقل إلى الأعلى</translation> <translation id="8250920743982581267">المستندات</translation> <translation id="825412236959742607">تستهلك هذه الصفحة مساحة كبيرة من الذاكرة، لذلك أزال Chrome بعض محتواها.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">اسم حامل البطاقة</translation> <translation id="8604763363205185560">المساعدة في تحسين Chrome وأمانه</translation> <translation id="8609465669617005112">التحريك إلى أعلى</translation> +<translation id="8611192991944347781">إدارة البيانات</translation> <translation id="8616006591992756292">قد يتضمن حسابك في Google نماذج أخرى من سجل التصفح في <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">هل تريد فتح عنوان URL المقترح والمحدد في المحتوى الذي تم تنزيله؟</translation> <translation id="8636825310635137004">للحصول على علامات التبويب من أجهزتك الأخرى، شغِّل المزامنة.</translation> <translation id="8641930654639604085">محاولة حظر مواقع الويب التي تتضمن محتوى للبالغين</translation> +<translation id="8655129584991699539">يمكنك محو البيانات في إعدادات Chrome.</translation> <translation id="8662811608048051533">يخرجك من معظم مواقع الويب.</translation> <translation id="8664979001105139458">اسم الملف موجود</translation> <translation id="8676374126336081632">محو الإرسال</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">البحث في جهات الاتصال</translation> <translation id="869891660844655955">تاريخ انتهاء الصلاحية</translation> <translation id="8719023831149562936">تعذر إرسال علامة التبويب الحالية باستخدام الشعاع</translation> +<translation id="8723954843026426558">أوافق على الأحكام والشروط وسياسة الخصوصية والحق القانوني في التراجع عن <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">أعد المحاولة</translation> <translation id="8728487861892616501">باستخدامك لهذا التطبيق، أنت توافق على <ph name="BEGIN_LINK1" />بنود الخدمة في Chrome<ph name="END_LINK1" /> و<ph name="BEGIN_LINK2" />إشعار الخصوصية<ph name="END_LINK2" /> و<ph name="BEGIN_LINK3" />إشعار الخصوصية لحسابات Google المُدارة من خلال Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">تم</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb b/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb index db6033c..531a74f 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="bg"> <translation id="1006017844123154345">Отваряне онлайн</translation> +<translation id="1023450834687746199">Изчистихте данните за <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849"><ph name="WEBAPK_NAME" /> се добавя...</translation> <translation id="1041308826830691739">От уебсайтове</translation> <translation id="1049743911850919806">„Инкогнито“</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Изчиства историята и автоматичните довършвания в адресната лента.</translation> <translation id="2021896219286479412">Контроли за сайтове на цял екран</translation> <translation id="2038563949887743358">Включване на функцията за заявяване на настолни сайтове</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> също има данни в Chrome</translation> <translation id="2045104531052923016">Други приложения: <ph name="GIGABYTES" /> ГБ</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /><ph name="SEPARATOR" /><ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Търсене с докосване</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Редактиране на картата</translation> <translation id="2154710561487035718">Копиране на URL адреса</translation> <translation id="2156074688469523661">Останали сайтове (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Проверете връзката си с интернет</translation> <translation id="2197557662829090533">Разрешаване посетените от вас уебсайтове да се показват в „Дигитално благополучие“</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, уеб приложение. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Продължаване като <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">неуспешно</translation> <translation id="2781151931089541271">Остава 1 сек</translation> <translation id="2784212955220061919">В олекотения режим на Chrome страниците се зареждат по-бързо и се използват до 60 процента по-малко данни. Посещаваните от вас страници се оптимизират с помощта на базираната на облака технология на Google.</translation> +<translation id="2785336755839207516">Деинсталирахте <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Запазените пароли и опциите за пароли са показани</translation> <translation id="2810645512293415242">Страницата е опростена с цел пестене на данни и по-бързо зареждане.</translation> <translation id="281504910091592009">Преглеждайте и управлявайте запазените пароли в <ph name="BEGIN_LINK" />профила си в Google<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Показване на информацията</translation> <translation id="3123473560110926937">Блокиране на някои сайтове</translation> <translation id="3137521801621304719">Напускане на режима „инкогнито“</translation> +<translation id="3143515551205905069">Анулиране на синхронизирането</translation> <translation id="3148434565183091099">Влезте в Chrome, за да получите отметките си на всичките си устройства.</translation> <translation id="3157842584138209013">Използвайте бутона „Още опции“, за да видите колко данни сте спестили</translation> <translation id="3166827708714933426">Комбинации за раздели и прозорци</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Зареждане на изображението</translation> <translation id="3269956123044984603">Включете „Авт. синхронизиране на данните“ от „Профили“ в настройките на Android, за да получите разделите си от другите си устройства.</translation> <translation id="3282568296779691940">Вход в Chrome</translation> +<translation id="3288003805934695103">Презаредете страницата.</translation> <translation id="32895400574683172">Известията са разрешени</translation> <translation id="3295530008794733555">Сърфирайте по-бързо. Използвайте по-малко данни.</translation> <translation id="3295602654194328831">Скриване на информацията</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> изтегляния бяха изтрити</translation> <translation id="3819562311292413223">Изтегляне на статии за вас</translation> <translation id="3822502789641063741">Изчистване на данните?</translation> +<translation id="385051799172605136">Назад</translation> <translation id="3859306556332390985">Придвижване напред</translation> <translation id="3894427358181296146">Добавяне на папка</translation> <translation id="3895926599014793903">Принудително активиране на промяната на мащаба</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Вход</translation> <translation id="395206256282351086">Предложенията за търсене и сайтове са деактивирани</translation> <translation id="3955193568934677022">Разрешаване на сайтовете да възпроизвеждат защитено съдържание (препоръчително)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome ще зареди страницата при готовност}other{Chrome ще зареди страниците при готовност}}</translation> <translation id="3963007978381181125">Шифроването с пропуск не включва начините на плащане и адресите от Google Pay. Само някой с пропуска ви може да прочете шифрованите ви данни – той не се изпраща до Google, нито се съхранява от нас. Ако го забравите или искате да промените тази настройка, ще се наложи да нулирате синхронизирането. <ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Изтеглянето завърши</translation> <translation id="397583555483684758">Синхронизирането спря да работи</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Медия</translation> <translation id="4278390842282768270">Разрешено</translation> <translation id="429312253194641664">Сайт възпроизвежда мултимедийно съдържание</translation> +<translation id="4298388696830689168">Свързани сайтове</translation> <translation id="4307992518367153382">Основни положения</translation> <translation id="4314815835985389558">Управление на синхронизирането</translation> <translation id="4351244548802238354">Затваряне на диалоговия прозорец</translation> @@ -700,6 +707,7 @@ <translation id="6232535412751077445">Активирането на „Do Not Track“ означава, че с трафика ви на сърфиране ще се подава заявка. Ефектите зависят от това, дали уебсайтът ще отговори на нея и как ще я изтълкува. Някои уебсайтове например може да отговорят на тази заявка, като ви покажат реклами, които не се базират на други посетени от вас сайтове. Много уебсайтове ще продължат да събират и използват данните ви за сърфиране – например с цел подобряване на сигурността, предоставяне на съдържание, реклами и препоръки и генериране на статистически данни за отчитане.</translation> +<translation id="624789221780392884">Актуализацията е готова</translation> <translation id="6255999984061454636">Предложения за съдържание</translation> <translation id="6277522088822131679">При отпечатването на страницата възникна проблем. Моля, опитайте отново.</translation> <translation id="6295158916970320988">Всички сайтове</translation> @@ -735,6 +743,7 @@ <translation id="6475951671322991020">Изтегляне на видеоклипа</translation> <translation id="6482749332252372425">Изтеглянето на „<ph name="FILE_NAME" />“ не бе успешно поради липса на място в хранилището.</translation> <translation id="6496823230996795692">За да използвате <ph name="APP_NAME" /> за първи път, моля, свържете се с интернет.</translation> +<translation id="6508722015517270189">Рестартирайте Chrome.</translation> <translation id="6527303717912515753">Споделяне</translation> <translation id="6534565668554028783">Google не отговаря твърде дълго време</translation> <translation id="6538442820324228105">Изтеглено: <ph name="GBS" /> ГБ</translation> @@ -833,7 +842,6 @@ <translation id="7189372733857464326">Изчаква се актуализирането на услугите за Google Play да приключи</translation> <translation id="7189598951263744875">Споделяне...</translation> <translation id="7191430249889272776">Разделът е отворен на заден план.</translation> -<translation id="7221869452894271364">Зарежда повторно тази страница</translation> <translation id="723171743924126238">Избиране на изображения</translation> <translation id="7243308994586599757">Опциите са в долната част на екрана</translation> <translation id="7250468141469952378">Избрани: <ph name="ITEM_COUNT" /></translation> @@ -920,6 +928,7 @@ <translation id="784934925303690534">Период от време</translation> <translation id="7851858861565204677">Други устройства</translation> <translation id="7854964836418414587">Затваряне на „Още като това“</translation> +<translation id="7871791972254842204">Четене и приемане на общите условия на <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> по-късно</translation> <translation id="7875915731392087153">Създайте имейл</translation> <translation id="7876243839304621966">Премахване на всички</translation> <translation id="7882131421121961860">Няма намерена история</translation> @@ -970,6 +979,7 @@ <translation id="8200772114523450471">Възобновяване</translation> <translation id="8209050860603202033">Отваряне на изображението</translation> <translation id="8220488350232498290">Изтеглени файлове: <ph name="GIGABYTES" /> ГБ</translation> +<translation id="8232956427053453090">Запазване на данните</translation> <translation id="8249310407154411074">Преместване най-горе</translation> <translation id="8250920743982581267">Документи</translation> <translation id="825412236959742607">Тази страница използва твърде много памет, така че Chrome премахна част от съдържанието.</translation> @@ -1023,10 +1033,12 @@ <translation id="860043288473659153">Име на титуляря на картата</translation> <translation id="8604763363205185560">Помогнете за подобряването на Chrome и сигурността му</translation> <translation id="8609465669617005112">Придвижване нагоре</translation> +<translation id="8611192991944347781">Управление на данните</translation> <translation id="8616006591992756292">В профила ви в Google може да има други видове история на сърфиране, съхранявани на адрес <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Да се отвори ли предложеният URL адрес, посочен в изтегленото съдържание?</translation> <translation id="8636825310635137004">Включете синхронизирането, за да получите разделите си от другите си устройства.</translation> <translation id="8641930654639604085">Опит за блокиране на сайтовете за пълнолетни</translation> +<translation id="8655129584991699539">Можете да изчистите данните в настройките на Chrome</translation> <translation id="8662811608048051533">Ще излезете от повечето сайтове.</translation> <translation id="8664979001105139458">Името на файла вече съществува</translation> <translation id="8676374126336081632">Изчистване на въведеното</translation> @@ -1034,6 +1046,7 @@ <translation id="868929229000858085">Търсене в контактите ви</translation> <translation id="869891660844655955">Дата на валидност</translation> <translation id="8719023831149562936">Текущият раздел не може да се излъчи</translation> +<translation id="8723954843026426558">Приемам общите условия, декларацията за поверителност и правото на оттегляне от <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Опитайте отново</translation> <translation id="8728487861892616501">С използването на това приложение приемате <ph name="BEGIN_LINK1" />Общите условия<ph name="END_LINK1" /> и <ph name="BEGIN_LINK2" />Съобщението за поверителност<ph name="END_LINK2" /> на Chrome, както и <ph name="BEGIN_LINK3" />Съобщението за поверителност за профили в Google, управлявани чрез Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Готово</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_bn.xtb b/chrome/android/java/strings/translations/android_chrome_strings_bn.xtb index ce625f0..fa90023 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_bn.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_bn.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="bn"> <translation id="1006017844123154345">অনলাইনে খুলুন</translation> +<translation id="1023450834687746199">আপনি <ph name="APP_NAME" /> অ্যাপের ডেটা মুছে ফেলেছেন।</translation> <translation id="1036727731225946849"><ph name="WEBAPK_NAME" /> যোগ করা হচ্ছে...</translation> <translation id="1041308826830691739">ওয়েবসাইট থেকে</translation> <translation id="1049743911850919806">ছদ্মবেশী</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">অ্যাড্রেস বার থেকে ইতিহাস ও অটোকমপ্লিট মুছে ফেলে।</translation> <translation id="2021896219286479412">পূর্ণ স্ক্রিন সাইট নিয়ন্ত্রণ</translation> <translation id="2038563949887743358">ডেস্কটপ সাইটের অনুরোধ চালু করুন</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> অ্যাপের ডেটা Chrome ব্রাউজারেও আছে</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB অন্যান্য অ্যাপ্লিকেশান</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">সার্চ করতে আলতো চাপুন</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">কার্ড সম্পাদনা করুন</translation> <translation id="2154710561487035718">URL কপি করুন</translation> <translation id="2156074688469523661">(<ph name="NUMBER_OF_SITES" />)টি সাইট বাকি আছে</translation> -<translation id="2173302385160625112">আপনার ইন্টারনেট কানেকশন ঠিক আছে কিনা ভাল করে দেখে নিন</translation> <translation id="2197557662829090533">আপনি যেসব ওয়েবসাইটে গেছেন, ডিজিটাল ওয়েলবিয়িংকে সেগুলি দেখানোর অনুমতি দিন</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, ওয়েব অ্যাপ্লিকেশান৷ <ph name="APP_URL" /></translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" /> হিসেবে চালিয়ে যান</translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">করা যায়নি</translation> <translation id="2781151931089541271">১ সেকেন্ড বাকি আছে</translation> <translation id="2784212955220061919">লাইট মোডে, Chrome আরও দ্রুত পৃষ্ঠা লোড করে এবং ৬০ শতাংশ পর্যন্ত কম ডেটা ব্যবহার করে। Google ক্লাউড টেকনোলজি আপনার ঘুরে দেখা পৃষ্ঠাকে অপ্টিমাইজ করে।</translation> +<translation id="2785336755839207516">আপনি <ph name="APP_NAME" /> অ্যাপটি আন-ইনস্টল করেছেন।</translation> <translation id="2803478378562657435">সেভ করা পাসওয়ার্ড এবং পাসওয়ার্ড বিকল্পগুলি দেখানো হচ্ছে</translation> <translation id="2810645512293415242">পৃষ্ঠায় সহজে ডেটা সংরক্ষণ করে এবং দ্রুত লোড করুন।</translation> <translation id="281504910091592009">আপনার <ph name="BEGIN_LINK" />Google অ্যাকাউন্ট<ph name="END_LINK" />-এ সেভ করা পাসওয়ার্ড দেখুন এবং পরিচালনা করুন</translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">তথ্য দেখুন</translation> <translation id="3123473560110926937">কিছু সাইটে ব্লক করা হয়েছে</translation> <translation id="3137521801621304719">ছদ্মবেশী মোড ত্যাগ করুন</translation> +<translation id="3143515551205905069">সিঙ্ক বাতিল করুন</translation> <translation id="3148434565183091099">সব ডিভাইসে আপনার বুকমার্কগুলি পেতে, Chrome এ প্রবেশ করুন।</translation> <translation id="3157842584138209013">আরও বিকল্প বোতাম দিয়ে দেখুন আপনি কত ডেটা সাশ্রয় করেছেন</translation> <translation id="3166827708714933426">ট্যাব এবং উইন্ডোর শর্টকাটগুলি</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">ছবি লোড করুন</translation> <translation id="3269956123044984603">আপনার অন্য ডিভাইসগুলি থেকে আপনার ট্যাবগুলি পেতে, Android অ্যাকাউন্ট সেটিংসে "ডেটা স্বতঃসিঙ্ক করুন" চালু করুন।</translation> <translation id="3282568296779691940">Chrome-এ প্রবেশ করুন</translation> +<translation id="3288003805934695103">পৃষ্ঠাটি আবার লোড করে দেখুন</translation> <translation id="32895400574683172">বিজ্ঞপ্তিগুলি অনুমোদিত</translation> <translation id="3295530008794733555">চটপট ব্রাউজ করুন। আরও কম ডেটা ব্যবহার করুন।</translation> <translation id="3295602654194328831">তথ্য লুকান</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" />টি ডাউনলোড মোছা হয়েছে</translation> <translation id="3819562311292413223">আপনার জন্য নিবন্ধ ডাউনলোড করা</translation> <translation id="3822502789641063741">সাইটের সঞ্চয়স্থান সাফ করবেন?</translation> +<translation id="385051799172605136">ফিরুন</translation> <translation id="3859306556332390985">সামনে এগোন</translation> <translation id="3894427358181296146">ফোল্ডার যোগ করুন</translation> <translation id="3895926599014793903">বলপূর্বক জুম সক্রিয় করুন</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">প্রবেশ করুন</translation> <translation id="395206256282351086">সার্চ এবং সাইটের প্রস্তাবনা অক্ষম করা আছে</translation> <translation id="3955193568934677022">সুরক্ষিত সামগ্রী প্লে করতে সাইটগুলিকে মঞ্জুরি দিন (প্রস্তাবিত)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{রেডি হলেই Chrome আপনার পৃষ্ঠা লোড করবে}one{রেডি হলেই Chrome আপনার পৃষ্ঠা লোড করবে}other{রেডি হলেই Chrome আপনার পৃষ্ঠা লোড করবে}}</translation> <translation id="3963007978381181125">পাসফ্রেজ এনক্রিপশনে Google Pay-এর পেমেন্ট পদ্ধতি ও ঠিকানা অন্তর্ভুক্ত থাকে না। আপনার পাসফ্রেজ আছে এমন কেউই শুধু আপনার এনক্রিপ্ট করা ডেটা পড়তে পারবেন। পাসফ্রেজ Google-এ পাঠানো হয় না বা Google তা সংরক্ষণ করে না। পাসফ্রেজ ভুলে গেলে বা এই সেটিং পরিবর্তন করতে চাইলে, আপনাকে সিঙ্ক রিসেট করতে হবে। <ph name="BEGIN_LINK" />আরও জানুন<ph name="END_LINK" /></translation> @@ -433,6 +439,7 @@ <translation id="4275663329226226506">মাধ্যম</translation> <translation id="4278390842282768270">মঞ্জুরিপ্রাপ্ত</translation> <translation id="429312253194641664">একটি সাইট মিডিয়া চালাচ্ছে</translation> +<translation id="4298388696830689168">লিঙ্ক করা সাইট</translation> <translation id="4307992518367153382">বুনিয়াদি</translation> <translation id="4314815835985389558">সিঙ্ক ম্যানেজ করুন</translation> <translation id="4351244548802238354">ডায়ালগ বন্ধ করুন</translation> @@ -701,6 +708,7 @@ <translation id="6232535412751077445">"ট্র্যাক করবেন না" সক্ষম করার অর্থ হল আপনার ব্রাউজিং ট্র্যাফিকের সাথে একটি অনুরোধ অন্তর্ভুক্ত হবে৷ অনুরোধটিতে কোনো ওয়েবসাইট প্রতিক্রিয়া করে কি না, এবং অনুরোধটিকে কীভাবে ব্যাখ্যা করা হয় তার উপর যেকোনো প্রভাব নির্ভর করে৷ উদাহরণস্বরূপ, কিছু ওয়েবসাইট আপনার দেখা অন্য ওয়েবসাইট ভিত্তিক নয় এমন বিজ্ঞাপন দেখিয়ে এই অনুরোধে প্রতিক্রিয়া জানাতে পারে৷ অনেক ওয়েবসাইট তারপরও আপনার ব্রাউজিং ডেটা সংগ্রহ এবং ব্যবহার করবে - উদাহরণস্বরূপ, আপনার নিরাপত্তা বাড়াতে, সামগ্রী, বিজ্ঞাপন এবং প্রস্তাবনা প্রদান করতে, এবং প্রতিবেদন পরিসংখ্যান তৈরি করতে৷</translation> +<translation id="624789221780392884">আপডেট প্রস্তুত</translation> <translation id="6255999984061454636">কন্টেন্টের প্রস্তাবনা</translation> <translation id="6277522088822131679">পৃষ্ঠাটি প্রিন্ট করার সময় একটি সমস্যা হয়েছিল৷ দয়া করে আবার চেষ্টা করুন৷</translation> <translation id="6295158916970320988">সমস্ত সাইট</translation> @@ -736,6 +744,7 @@ <translation id="6475951671322991020">ভিডিও ডাউনলোড করুন</translation> <translation id="6482749332252372425">স্টোরেজে জায়গার ঘাটতির কারণে <ph name="FILE_NAME" /> ডাউনলোড করা যায়নি।</translation> <translation id="6496823230996795692"><ph name="APP_NAME" /> প্রথমবার ব্যবহার করার জন্য অনুগ্রহ করে ইন্টারনেটে সংযুক্ত হন।</translation> +<translation id="6508722015517270189">Chrome পুনরায় চালু করুন</translation> <translation id="6527303717912515753">শেয়ার করুন</translation> <translation id="6534565668554028783">Google সাড়া দিতে দেরী করছে</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB ডাউনলোড হয়েছে</translation> @@ -834,7 +843,6 @@ <translation id="7189372733857464326">Google Play পরিষেবাগুলির আপডেট শেষ হওয়ার জন্য অপেক্ষা করছে</translation> <translation id="7189598951263744875">শেয়ার করুন...</translation> <translation id="7191430249889272776">পটভূমিতে ট্যাব খোলা হয়েছে।</translation> -<translation id="7221869452894271364">এই পৃষ্ঠাটি পুনঃ লোড করুন</translation> <translation id="723171743924126238">ছবি বেছে নিন</translation> <translation id="7243308994586599757">স্ক্রীনের প্রায় নীচের দিকে বিকল্পগুলি উপলব্ধ</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" />টি বেছে নেওয়া হয়েছে</translation> @@ -921,6 +929,7 @@ <translation id="784934925303690534">সময় সীমা</translation> <translation id="7851858861565204677">অন্যান্য ডিভাইস</translation> <translation id="7854964836418414587">'এর মত আরও' বন্ধ করুন</translation> +<translation id="7871791972254842204">পরে <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />-এ দেওয়া নিয়ম ও শর্তাবলী পড়ে সম্মতি দেব</translation> <translation id="7875915731392087153">ইমেল আইডি তৈরি করুন</translation> <translation id="7876243839304621966">সকল সরান</translation> <translation id="7882131421121961860">কোনো ইতিহাস পাওয়া যায়নি</translation> @@ -971,6 +980,7 @@ <translation id="8200772114523450471">পুনঃসূচনা</translation> <translation id="8209050860603202033">ছবি খুলুন</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB ডাউনলোড করা হয়েছে</translation> +<translation id="8232956427053453090">ডেটা রাখুন</translation> <translation id="8249310407154411074">শীর্ষে সরান</translation> <translation id="8250920743982581267">দস্তাবেজগুলি</translation> <translation id="825412236959742607">এই পৃষ্ঠাটি খুব বেশি মেমরি ব্যবহার করছে তাই Chrome কিছু কন্টেন্ট সরিয়ে দিয়েছে।</translation> @@ -1024,10 +1034,12 @@ <translation id="860043288473659153">কার্ডধারকের নাম</translation> <translation id="8604763363205185560">Chrome-এর বৈশিষ্ট্য এবং নিরাপত্তা উন্নত করে তুলতে সাহায্য করুন</translation> <translation id="8609465669617005112">উপরে যান</translation> +<translation id="8611192991944347781">ডেটা ম্যানেজ করুন</translation> <translation id="8616006591992756292"><ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> এ আপনার Google অ্যাকাউন্টের অন্যান্য ধরনের ব্রাউজিংয়ের ইতিহাস থাকতে পারে।</translation> <translation id="8617240290563765734">ডাউনলোড হওয়া সামগ্রীতে নির্দিষ্ট করা প্রস্তাবিত URLটি খুলবেন?</translation> <translation id="8636825310635137004">আপনার অন্য ডিভাইসগুলি থেকে আপনার ট্যাবগুলি পেতে, সিঙ্ক চালু করুন।</translation> <translation id="8641930654639604085">প্রাপ্তবয়স্কদের সাইটগুলি অবরুদ্ধ করার চেষ্টা করুন</translation> +<translation id="8655129584991699539">Chrome সেটিংসে গিয়ে আপনি ডেটা মুছে ফেলতে পারেন</translation> <translation id="8662811608048051533">বেশিরভাগ সাইট থেকে আপনাকে সাইন-আউট করিয়ে দেয়।</translation> <translation id="8664979001105139458">ফাইলের নামটি আগে থেকেই আছে</translation> <translation id="8676374126336081632">ইনপুট সাফ করুন</translation> @@ -1035,6 +1047,7 @@ <translation id="868929229000858085">আপনার পরিচিতি সার্চ করুন</translation> <translation id="869891660844655955">মেয়াদকাল সমাপ্তির তারিখ</translation> <translation id="8719023831149562936">বর্তমান ট্যাবকে বীম করা যাবে না</translation> +<translation id="8723954843026426558">আমি <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />-এর নিয়ম ও শর্তাবলী, গোপনীয়তা নীতি এবং প্রত্যাহার করার অধিকারের বিষয়ে সম্মতি দিচ্ছি</translation> <translation id="8725066075913043281">আবার চেষ্টা করুন</translation> <translation id="8728487861892616501">এই অ্যাপ্লিকেশনটি ব্যবহার করার মাধ্যমে আপনি Chrome এর <ph name="BEGIN_LINK1" />পরিষেবার শর্তাবলি<ph name="END_LINK1" /> এবং <ph name="BEGIN_LINK2" />গোপনীয়তা নীতি<ph name="END_LINK2" />, এবং <ph name="BEGIN_LINK3" />Family Link এ তৈরি করা Google অ্যাকাউন্টগুলির জন্য গোপনীয়তার বিজ্ঞপ্তি<ph name="END_LINK3" /> এর সাথে সম্মত হন।</translation> <translation id="8730621377337864115">হয়ে গেছে</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb index 4f263a8d..8f516e5 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="ca"> <translation id="1006017844123154345">Obre en línia</translation> +<translation id="1023450834687746199">Has esborrat dades relacionades amb l'aplicació <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">S'està afegint <ph name="WEBAPK_NAME" />...</translation> <translation id="1041308826830691739">De llocs web</translation> <translation id="1049743911850919806">Incògnit</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Esborra l'historial i les complecions automàtiques a la barra d'adreces.</translation> <translation id="2021896219286479412">Controls de pantalla completa</translation> <translation id="2038563949887743358">Activa Mostra com a ordinador</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> també té dades a Chrome</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB en altres aplicacions</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Toca per cercar</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Edita la targeta</translation> <translation id="2154710561487035718">Copia l'URL</translation> <translation id="2156074688469523661">Llocs restants (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Comprova la connexió a Internet</translation> <translation id="2197557662829090533">Permet que Benestar digital mostri els llocs web que has visitat</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, aplicació web. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Continua com a <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">ha fallat</translation> <translation id="2781151931089541271">Queda 1 segon</translation> <translation id="2784212955220061919">En el mode bàsic, Chrome carrega les pàgines més ràpidament i utilitza un 60 per cent menys de dades. La tecnologia en núvol de Google optimitza les pàgines que visites.</translation> +<translation id="2785336755839207516">Has desinstal·lat l'aplicació <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">S'estan mostrant les contrasenyes desades i les opcions de contrasenyes</translation> <translation id="2810645512293415242">La pàgina s'ha simplificat per estalviar dades i carregar-se més ràpidament.</translation> <translation id="281504910091592009">Consulta i gestiona les contrasenyes desades al <ph name="BEGIN_LINK" />Compte de Google<ph name="END_LINK" /></translation> @@ -278,11 +280,12 @@ <translation id="305593374596241526">La ubicació està desactivada; activa-la a la <ph name="BEGIN_LINK" />configuració d'Android<ph name="END_LINK" />.</translation> <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> adreça d'interès}other{<ph name="BOOKMARKS_COUNT_MANY" /> adreces d'interès}}</translation> <translation id="307908932405420782">Aviat es mostraran més articles. Que tinguis un bon matí.</translation> -<translation id="3089395242580810162">Obre en una pestanya d'incògnit</translation> +<translation id="3089395242580810162">Obre en pestanya d'incògnit</translation> <translation id="311456632243022227">Diversos enllaços oberts a Chrome</translation> <translation id="3115898365077584848">Mostra la informació</translation> <translation id="3123473560110926937">Bloquejat en alguns llocs web</translation> <translation id="3137521801621304719">Surt del mode d'incògnit</translation> +<translation id="3143515551205905069">Cancel·la la sincronització</translation> <translation id="3148434565183091099">Inicieu la sessió a Chrome per accedir a les adreces d'interès des de tots els dispositius.</translation> <translation id="3157842584138209013">Consulta la quantitat de dades que has estalviat des del botó Més opcions</translation> <translation id="3166827708714933426">Dreceres per a pestanyes i finestres</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Carrega la imatge</translation> <translation id="3269956123044984603">Per accedir a les teves pestanyes des dels altres dispositius que tinguis, activa Sincronitza dades automàticament a la configuració d'Android per al compte.</translation> <translation id="3282568296779691940">Inicia la sessió a Chrome</translation> +<translation id="3288003805934695103">Torneu a carregar la pàgina</translation> <translation id="32895400574683172">Es permeten les notificacions</translation> <translation id="3295530008794733555">Navega més de pressa. Utilitza menys dades.</translation> <translation id="3295602654194328831">Amaga la informació</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> baixades suprimides</translation> <translation id="3819562311292413223">Baixa articles que et poden interessar</translation> <translation id="3822502789641063741">Esborrar emmagatz. lloc?</translation> +<translation id="385051799172605136">Enrere</translation> <translation id="3859306556332390985">Avança</translation> <translation id="3894427358181296146">Afegiu una carpeta</translation> <translation id="3895926599014793903">Força l'activació del zoom</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Inicia la sessió</translation> <translation id="395206256282351086">S'han desactivat els suggeriments de cerques i llocs web</translation> <translation id="3955193568934677022">Permet que els llocs web reprodueixin contingut protegit (opció recomanada)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome carregarà la pàgina quan estigui a punt}other{Chrome carregarà les pàgines quan estigui a punt}}</translation> <translation id="3963007978381181125">L'encriptació de frases de contrasenya no inclou les formes de pagament ni les adreces de Google Pay. Només els usuaris que sàpiguen la teva frase de contrasenya poden llegir les dades que encriptes. La frase de contrasenya no s'envia a Google, i Google tampoc no l'emmagatzema. Si l'oblides o vols canviar aquesta opció, has de restablir la sincronització. <ph name="BEGIN_LINK" />Més informació<ph name="END_LINK" /></translation> <translation id="3967822245660637423">S'ha completat la baixada</translation> <translation id="397583555483684758">La sincronització ha deixat de funcionar</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Multimèdia</translation> <translation id="4278390842282768270">Permès</translation> <translation id="429312253194641664">Un lloc web està reproduint contingut multimèdia</translation> +<translation id="4298388696830689168">Llocs web enllaçats</translation> <translation id="4307992518367153382">Configuració bàsica</translation> <translation id="4314815835985389558">Gestiona la sincronització</translation> <translation id="4351244548802238354">Tanca el quadre de diàleg</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Si activeu l'opció No segueixis, s'inclourà una sol·licitud al trànsit de navegació. Que s'apliqui o no dependrà de si algun lloc web respon a la sol·licitud i de com s'interpreta. Per exemple, és possible que alguns llocs web responguin a aquesta sol·licitud mostrant-vos anuncis que no estiguin basats en altres llocs web que hàgiu visitat. Molts llocs web continuaran recopilant i utilitzant les vostres dades de navegació (per exemple, per millorar la seguretat, per proporcionar contingut, anuncis i recomanacions i per generar estadístiques).</translation> +<translation id="624789221780392884">Actualització a punt.</translation> <translation id="6255999984061454636">Suggeriments de contingut</translation> <translation id="6277522088822131679">S'ha produït un problema en imprimir la pàgina. Torneu-ho a provar.</translation> <translation id="6295158916970320988">Tots els llocs</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Baixa el vídeo</translation> <translation id="6482749332252372425">No s'ha pogut baixar <ph name="FILE_NAME" /> perquè falta espai d'emmagatzematge.</translation> <translation id="6496823230996795692">Per utilitzar <ph name="APP_NAME" /> per primera vegada, connecta't a Internet.</translation> +<translation id="6508722015517270189">Reinicia Chrome</translation> <translation id="6527303717912515753">Comparteix</translation> <translation id="6534565668554028783">Google ha tardat massa a respondre</translation> <translation id="6538442820324228105">S'han baixat <ph name="GBS" /> GB</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">S'està esperant que Serveis de Google Play s'acabi d'actualitzar</translation> <translation id="7189598951263744875">Comparteix...</translation> <translation id="7191430249889272776">Pestanya oberta en segon pla</translation> -<translation id="7221869452894271364">Torna a carregar aquesta pàgina</translation> <translation id="723171743924126238">Selecciona imatges</translation> <translation id="7243308994586599757">Opcions disponibles a la part inferior de la pantalla</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> elements seleccionats</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Interval de temps</translation> <translation id="7851858861565204677">Altres dispositius</translation> <translation id="7854964836418414587">Tanca el full Més contingut com aquest</translation> +<translation id="7871791972254842204">Llegeix i accepta els termes i condicions del domini <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> més tard</translation> <translation id="7875915731392087153">Crea una adreça electrònica</translation> <translation id="7876243839304621966">Suprimeix-ho tot</translation> <translation id="7882131421121961860">No s'ha trobat cap historial</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Reprèn</translation> <translation id="8209050860603202033">Obre la imatge</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB en baixades</translation> +<translation id="8232956427053453090">Conserva les dades</translation> <translation id="8249310407154411074">Mou a la part superior</translation> <translation id="8250920743982581267">Documents</translation> <translation id="825412236959742607">Com que aquesta pàgina fa servir massa memòria, Chrome n'ha suprimit contingut.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Nom del titular de la targeta</translation> <translation id="8604763363205185560">Ajuda a millorar Chrome i la seva seguretat</translation> <translation id="8609465669617005112">Desplaça cap amunt</translation> +<translation id="8611192991944347781">Gestiona les dades</translation> <translation id="8616006591992756292">A <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />, trobaràs altres maneres d'explorar l'historial del teu compte de Google.</translation> <translation id="8617240290563765734">Voleu obrir l'URL suggerit que s'especifica al contingut que s'ha baixat?</translation> <translation id="8636825310635137004">Activeu la sincronització per accedir a les vostres pestanyes des dels altres dispositius que tingueu.</translation> <translation id="8641930654639604085">Prova de bloquejar els llocs web per a adults</translation> +<translation id="8655129584991699539">Pots esborrar les dades a la configuració de Chrome</translation> <translation id="8662811608048051533">Et tanca la sessió de la majoria de llocs.</translation> <translation id="8664979001105139458">El nom del fitxer ja existeix</translation> <translation id="8676374126336081632">Esborra l'entrada</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Cerca als contactes</translation> <translation id="869891660844655955">Data de caducitat</translation> <translation id="8719023831149562936">La pestanya actual no es pot compartir.</translation> +<translation id="8723954843026426558">Accepto els termes i condicions, la política de privadesa i el dret de desistiment establerts pel domini <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Torna-ho a provar</translation> <translation id="8728487861892616501">En utilitzar aquesta aplicació, acceptes les <ph name="BEGIN_LINK1" />Condicions del servei<ph name="END_LINK1" /> i l'<ph name="BEGIN_LINK2" />Avís de privadesa<ph name="END_LINK2" /> de Chrome, així com l'<ph name="BEGIN_LINK3" />Avís de privadesa per a comptes de Google gestionats amb Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Fet</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb b/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb index 3a043eed..eccc118 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="cs"> <translation id="1006017844123154345">Otevřít online</translation> +<translation id="1023450834687746199">Vymazali jste data aplikace <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">Přidávání aplikace <ph name="WEBAPK_NAME" />...</translation> <translation id="1041308826830691739">Z webů</translation> <translation id="1049743911850919806">Anonymní režim</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Vymaže historii a automatická dokončení v adresním řádku.</translation> <translation id="2021896219286479412">Ovládání webu na celé obrazovce</translation> <translation id="2038563949887743358">Zapnout funkci Verze webu pro PC</translation> +<translation id="204321170514947529">Aplikace <ph name="APP_NAME" /> má také data v Chromu</translation> <translation id="2045104531052923016">Ostatní aplikace: <ph name="GIGABYTES" /> GB</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Vyhledání klepnutím</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Úprava karty</translation> <translation id="2154710561487035718">Kopírovat adresu URL</translation> <translation id="2156074688469523661">Zbývající weby (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Zkontrolujte připojení k internetu.</translation> <translation id="2197557662829090533">Povolit digitální rovnováze zobrazovat vám navštívené weby</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, webová aplikace <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Pokračovat jako uživatel <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">nezdařilo se</translation> <translation id="2781151931089541271">Zbývá: 1 s</translation> <translation id="2784212955220061919">Ve zjednodušeném režimu načítá Chrome stránky rychleji a používá až o 60 procent méně dat. Navštívené stránky se optimalizují pomocí cloudové technologie společnosti Google.</translation> +<translation id="2785336755839207516">Odinstalovali jste aplikaci <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Zobrazování uložených hesel a možností hesel</translation> <translation id="2810645512293415242">Stránka byla zjednodušena s cílem ušetřit data a zrychlit načtení.</translation> <translation id="281504910091592009">Zobrazit a spravovat uložená hesla v <ph name="BEGIN_LINK" />účtu Google<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Zobrazit informace</translation> <translation id="3123473560110926937">Na některých webech blokováno</translation> <translation id="3137521801621304719">Ukončit anonymní režim</translation> +<translation id="3143515551205905069">Zrušit synchronizaci</translation> <translation id="3148434565183091099">Chcete-li záložky synchronizovat do všech zařízení, přihlaste se do Chromu.</translation> <translation id="3157842584138209013">Informace o množství uspořených dat zobrazíte pomocí tlačítka Další možnosti</translation> <translation id="3166827708714933426">Zkratky pro okna a karty</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Načíst obrázek</translation> <translation id="3269956123044984603">Chcete-li získat přístup ke kartám ze svých ostatních zařízení, zapněte v nastavení účtu Android možnost Automatická synchronizace dat.</translation> <translation id="3282568296779691940">Přihlásit se do Chromu</translation> +<translation id="3288003805934695103">Načíst stránku znovu</translation> <translation id="32895400574683172">Oznámení jsou povolena</translation> <translation id="3295530008794733555">Prohlížejte si internet rychleji. Využívejte méně dat.</translation> <translation id="3295602654194328831">Skrýt informace</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326">Počet smazaných stažených souborů: <ph name="NUMBER_OF_DOWNLOADS" /></translation> <translation id="3819562311292413223">Stahovat články pro vás</translation> <translation id="3822502789641063741">Vymazat úložiště webů?</translation> +<translation id="385051799172605136">Zpět</translation> <translation id="3859306556332390985">Přetočit dopředu</translation> <translation id="3894427358181296146">Přidat složku</translation> <translation id="3895926599014793903">Vynutit aktivaci přiblížení</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Přihlaste se</translation> <translation id="395206256282351086">Návrhy vyhledávacích dotazů a webů jsou vypnuty</translation> <translation id="3955193568934677022">Povolit webům přehrávat chráněný obsah (doporučeno)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome stránku načte, až bude připraven}few{Chrome stránky načte, až bude připraven}many{Chrome stránky načte, až bude připraven}other{Chrome stránky načte, až bude připraven}}</translation> <translation id="3963007978381181125">Šifrování pomocí heslové fráze se nevztahuje na platební metody a adresy ze služby Google Pay. Vaše šifrovaná data mohou číst pouze uživatelé, kteří mají vaši heslovou frázi. Heslová fráze se neodesílá do Googlu a není na Googlu uložena. Pokud ji zapomenete nebo toto nastavení budete chtít změnit, bude nutné synchronizaci resetovat. <ph name="BEGIN_LINK" />Další informace<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Stahování bylo dokončeno</translation> <translation id="397583555483684758">Synchronizace přestala fungovat</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Média</translation> <translation id="4278390842282768270">Povoleno</translation> <translation id="429312253194641664">Web přehrává média</translation> +<translation id="4298388696830689168">Propojené weby</translation> <translation id="4307992518367153382">Základy</translation> <translation id="4314815835985389558">Správa synchronizace</translation> <translation id="4351244548802238354">Zavřít dialogové okno</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Pokud povolíte požadavek Do Not Track, bude připojován k datům provozu prohlížení. Účinek tohoto požadavku závisí na tom, zda na něj budou webové stránky reagovat a jak jej budou interpretovat. Některé weby mohou například na tento požadavek reagovat tak, že vám zobrazí reklamy, které nejsou založeny na ostatních navštívených webových stránkách. Řada webů bude i nadále shromažďovat vaše údaje o prohlížení a používat je například ke zlepšení zabezpečení, poskytování obsahu, reklam a doporučení a ke generování statistik pro přehledy.</translation> +<translation id="624789221780392884">Je připravena aktualizace</translation> <translation id="6255999984061454636">Návrhy obsahu</translation> <translation id="6277522088822131679">Při tištění stránky došlo k problému. Zkuste to prosím znovu.</translation> <translation id="6295158916970320988">Všechny weby</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Stáhnout video</translation> <translation id="6482749332252372425">Stažení souboru <ph name="FILE_NAME" /> se nezdařilo z důvodu nedostatku místa v úložišti.</translation> <translation id="6496823230996795692">Chcete-li poprvé použít aplikaci <ph name="APP_NAME" />, připojte se k internetu.</translation> +<translation id="6508722015517270189">Restartujte Chrome</translation> <translation id="6527303717912515753">Sdílet</translation> <translation id="6534565668554028783">Odpověď Googlu trvala příliš dlouho</translation> <translation id="6538442820324228105">Staženo: <ph name="GBS" /> GB</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Počkejte prosím, než služby Google Play dokončí aktualizaci</translation> <translation id="7189598951263744875">Sdílet...</translation> <translation id="7191430249889272776">Karta je otevřena na pozadí.</translation> -<translation id="7221869452894271364">Načíst tuto stránku znovu</translation> <translation id="723171743924126238">Vyberte fotky</translation> <translation id="7243308994586599757">Možnosti jsou k dispozici ve spodní části obrazovky</translation> <translation id="7250468141469952378">Vybráno: <ph name="ITEM_COUNT" /></translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Časové období</translation> <translation id="7851858861565204677">Jiná zařízení</translation> <translation id="7854964836418414587">Zavřít list podobných</translation> +<translation id="7871791972254842204">Přečíst si a odsouhlasit smluvní podmínky domény <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> později</translation> <translation id="7875915731392087153">Vytvořit e-mail</translation> <translation id="7876243839304621966">Odstranit vše</translation> <translation id="7882131421121961860">Nebyla nalezena žádná historie</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Pokračovat</translation> <translation id="8209050860603202033">Otevřít obrázek</translation> <translation id="8220488350232498290">Staženo: <ph name="GIGABYTES" /> GB</translation> +<translation id="8232956427053453090">Zachovat data</translation> <translation id="8249310407154411074">Přesunout na začátek</translation> <translation id="8250920743982581267">Dokumenty</translation> <translation id="825412236959742607">Tato stránka využívá příliš mnoho paměti, Chrome proto odstranil část obsahu.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Jméno držitele karty</translation> <translation id="8604763363205185560">Pomozte s vylepšováním Chromu a jeho zabezpečení</translation> <translation id="8609465669617005112">Posunout nahoru</translation> +<translation id="8611192991944347781">Spravovat data</translation> <translation id="8616006591992756292">Na stránce <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> mohou být k dispozici další druhy historie prohlížení zaznamenané ve vašem účtu Google.</translation> <translation id="8617240290563765734">Otevřít navrhovanou adresu URL uvedenou ve staženém obsahu?</translation> <translation id="8636825310635137004">Chcete-li získat přístup ke kartám ze svých ostatních zařízení, zapněte synchronizaci.</translation> <translation id="8641930654639604085">Pokusit se blokovat weby pouze pro dospělé</translation> +<translation id="8655129584991699539">Data můžete vymazat v nastavení Chromu</translation> <translation id="8662811608048051533">Odhlásí vás z většiny webů.</translation> <translation id="8664979001105139458">Název souboru již existuje</translation> <translation id="8676374126336081632">Vymazat vstup</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Vyhledat v kontaktech</translation> <translation id="869891660844655955">Datum vypršení platnosti</translation> <translation id="8719023831149562936">Aktuální kartu nelze přenést</translation> +<translation id="8723954843026426558">Souhlasím se smluvními podmínkami, zásadami ochrany soukromí a právem na odstoupení od smlouvy domény <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Zkusit znovu</translation> <translation id="8728487861892616501">Používáním této aplikace vyjadřujete souhlas se <ph name="BEGIN_LINK1" />smluvními podmínkami<ph name="END_LINK1" /> a <ph name="BEGIN_LINK2" />upozorněním ve věci ochrany soukromí<ph name="END_LINK2" /> prohlížeče Chrome a <ph name="BEGIN_LINK3" />upozorněním ve věci ochrany soukromí pro účty Google spravované prostřednictvím služby Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Hotovo</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_da.xtb b/chrome/android/java/strings/translations/android_chrome_strings_da.xtb index ddb0cac..cc0c1f4 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_da.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_da.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="da"> <translation id="1006017844123154345">Åbn på nettet</translation> +<translation id="1023450834687746199">Du har ryddet data for <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">Tilføjer <ph name="WEBAPK_NAME" />...</translation> <translation id="1041308826830691739">Fra websites</translation> <translation id="1049743911850919806">Inkognito</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Nulstiller historikken og autofuldførelser i adresselinjen.</translation> <translation id="2021896219286479412">Kontrolelementer på website i fuld skærm</translation> <translation id="2038563949887743358">Slå computerversionen af websitet til</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> har også data i Chrome</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB af andre apps</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Tryk for at søge</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Rediger kort</translation> <translation id="2154710561487035718">Kopier webadresse</translation> <translation id="2156074688469523661">Tilbageværende websites (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Tjek din internetforbindelse</translation> <translation id="2197557662829090533">Giv Digital balance tilladelse til at vise websites, du har besøgt</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, webapp. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Fortsæt som <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">mislykkedes</translation> <translation id="2781151931089541271">1 sekund tilbage</translation> <translation id="2784212955220061919">Chrome indlæser sider hurtigere og bruger op til 60 procent mindre data i Lite-tilstand. Googles skyteknologi optimerer de sider, du besøger.</translation> +<translation id="2785336755839207516"><ph name="APP_NAME" /> blev afinstalleret.</translation> <translation id="2803478378562657435">Viser gemte adgangskoder og valgmuligheder for adgangskoder</translation> <translation id="2810645512293415242">Forenklet side, der sparer data og indlæses hurtigere.</translation> <translation id="281504910091592009">Se og administrer gemte adgangskoder på din <ph name="BEGIN_LINK" />Google-konto<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Vis info</translation> <translation id="3123473560110926937">Blokeret på visse websites</translation> <translation id="3137521801621304719">Slå inkognitotilstand fra</translation> +<translation id="3143515551205905069">Annuller synkronisering</translation> <translation id="3148434565183091099">Log ind på Chrome for at se dine bogmærker på alle dine enheder.</translation> <translation id="3157842584138209013">Se, hvor meget data du har sparet via knappen Flere valgmuligheder</translation> <translation id="3166827708714933426">Genveje på faner og i vinduer</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Indlæs billede</translation> <translation id="3269956123044984603">Aktivér "Automatisk synkronisering af data" i kontoindstillingerne for Android for at få adgang til dine faner på dine andre enheder.</translation> <translation id="3282568296779691940">Log ind i Chrome</translation> +<translation id="3288003805934695103">Genindlæse siden</translation> <translation id="32895400574683172">Notifikationer er tilladt</translation> <translation id="3295530008794733555">Få hurtigere browsing. Brug mindre data.</translation> <translation id="3295602654194328831">Skjul oplysninger</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> downloads blev slettet</translation> <translation id="3819562311292413223">Download artikler til dig</translation> <translation id="3822502789641063741">Vil du rydde websitelagerpladsen?</translation> +<translation id="385051799172605136">Tilbage</translation> <translation id="3859306556332390985">Spol fremad</translation> <translation id="3894427358181296146">Tilføj mappe</translation> <translation id="3895926599014793903">Tving aktivering af zoom</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Log ind</translation> <translation id="395206256282351086">Søge- og websiteforslag er deaktiveret</translation> <translation id="3955193568934677022">Tillad, at websites afspiller beskyttet indhold (anbefales)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome indlæser din side, når det er muligt}one{Chrome indlæser din side, når det er muligt}other{Chrome indlæser dine sider, når det er muligt}}</translation> <translation id="3963007978381181125">Kryptering med adgangssætning omfatter ikke betalingsmetoder og adresser fra Google Pay. Det er kun personer med din adgangssætning, der kan læse dine krypterede data. Adgangssætningen sendes ikke til eller gemmes af Google. Hvis du glemmer din adgangssætning eller vil ændre denne indstilling, skal du nulstille synkronisering. <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Download gennemført</translation> <translation id="397583555483684758">Synkroniseringen fungerer ikke mere</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Medier</translation> <translation id="4278390842282768270">Tilladt</translation> <translation id="429312253194641664">Et website afspiller medier</translation> +<translation id="4298388696830689168">Tilknyttede websites</translation> <translation id="4307992518367153382">Grundlæggende valgmuligheder</translation> <translation id="4314815835985389558">Administrer synkronisering</translation> <translation id="4351244548802238354">Luk dialogboksen</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Aktivering af "Do Not Track" betyder, at en anmodning medtages i din browsertrafik. Effekten afhænger af, om et website reagerer på anmodningen, og hvordan anmodningen fortolkes. Nogle websites kan f.eks. reagere på denne anmodning ved at vise dig annoncer, som ikke er baseret på andre websites, du har besøgt. Mange websites vil fortsat indsamle og bruge browserdata til f.eks. at forbedre sikkerheden, til at levere indhold, annoncer og anbefalinger og til at generere rapporteringsstatistik.</translation> +<translation id="624789221780392884">Opdateringen er klar</translation> <translation id="6255999984061454636">Indholdsforslag</translation> <translation id="6277522088822131679">Der opstod et problem med udskrivning af siden. Prøv igen.</translation> <translation id="6295158916970320988">Alle websites</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Download video</translation> <translation id="6482749332252372425">Download af <ph name="FILE_NAME" /> mislykkedes, fordi der ikke er nok lagerplads.</translation> <translation id="6496823230996795692">Opret forbindelse til internettet, første gang du bruger <ph name="APP_NAME" />.</translation> +<translation id="6508722015517270189">Genstart Chrome</translation> <translation id="6527303717912515753">Del</translation> <translation id="6534565668554028783">Google var for lang tid om at svare</translation> <translation id="6538442820324228105">Der er downloadet <ph name="GBS" /> GB</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Venter på, at Google Play-tjenester er opdateret</translation> <translation id="7189598951263744875">Del...</translation> <translation id="7191430249889272776">Fanen blev åbnet i baggrunden.</translation> -<translation id="7221869452894271364">Genindlæs denne side</translation> <translation id="723171743924126238">Vælg billeder</translation> <translation id="7243308994586599757">Du finder indstillingerne nederst på skærmen</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> er markeret</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Tidsinterval</translation> <translation id="7851858861565204677">Andre enheder</translation> <translation id="7854964836418414587">Luk "Se lignende indhold"</translation> +<translation id="7871791972254842204">Læs og acceptér vilkår og betingelser på <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> på et senere tidspunkt</translation> <translation id="7875915731392087153">Opret mail</translation> <translation id="7876243839304621966">Fjern alt</translation> <translation id="7882131421121961860">Der blev ikke fundet nogen historik</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Genoptag</translation> <translation id="8209050860603202033">Åbn billede</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB er downloadet</translation> +<translation id="8232956427053453090">Behold data</translation> <translation id="8249310407154411074">Flyt til toppen</translation> <translation id="8250920743982581267">Dokumenter</translation> <translation id="825412236959742607">Denne side anvender for meget hukommelse, så Chrome har fjernet noget indhold.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Kortholderens navn</translation> <translation id="8604763363205185560">Hjælp med at forbedre Chrome og dets sikkerhed</translation> <translation id="8609465669617005112">Flyt op</translation> +<translation id="8611192991944347781">Administrer data</translation> <translation id="8616006591992756292">Din Google-konto kan have andre former for browserhistorik på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Vil du åbne den foreslåede webadresse, som er angivet i det downloadede indhold?</translation> <translation id="8636825310635137004">Aktivér synkronisering for at få adgang til dine faner på dine andre enheder.</translation> <translation id="8641930654639604085">Prøv at blokere websites med indhold for voksne</translation> +<translation id="8655129584991699539">Du kan rydde dataene i Chrome-indstillingerne</translation> <translation id="8662811608048051533">Logger dig ud af de fleste websites.</translation> <translation id="8664979001105139458">Filnavnet findes allerede</translation> <translation id="8676374126336081632">Ryd indtastning</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Søg blandt dine kontakter</translation> <translation id="869891660844655955">Udløbsdato</translation> <translation id="8719023831149562936">Den aktuelle fane kan ikke overføres</translation> +<translation id="8723954843026426558">Jeg accepterer vilkårene og betingelserne, privatlivspolitikken samt fortrydelsesretten i forbindelse med <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Forsøg igen</translation> <translation id="8728487861892616501">Når du bruger denne app, accepterer du Chromes <ph name="BEGIN_LINK1" />servicevilkår<ph name="END_LINK1" /> og <ph name="BEGIN_LINK2" />erklæring om privatliv<ph name="END_LINK2" /> samt <ph name="BEGIN_LINK3" />erklæringen om privatliv for Google-konti, der administreres med Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Udfør</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_de.xtb b/chrome/android/java/strings/translations/android_chrome_strings_de.xtb index 653324f..58661f6 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_de.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_de.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="de"> <translation id="1006017844123154345">Online öffnen</translation> +<translation id="1023450834687746199">Sie haben die Daten für <ph name="APP_NAME" /> gelöscht.</translation> <translation id="1036727731225946849"><ph name="WEBAPK_NAME" /> wird hinzugefügt...</translation> <translation id="1041308826830691739">Von Websites</translation> <translation id="1049743911850919806">Inkognito</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Löscht den Verlauf sowie Autovervollständigungen in der Adressleiste.</translation> <translation id="2021896219286479412">Vollbild-Steuerelemente</translation> <translation id="2038563949887743358">"Desktopversion ansehen" aktivieren</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> hat auch Daten in Chrome</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB sonstiger Apps</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Zum Suchen tippen</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Karte bearbeiten</translation> <translation id="2154710561487035718">URL kopieren</translation> <translation id="2156074688469523661">Restliche Websites (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Bitte überprüfen Sie Ihre Internetverbindung</translation> <translation id="2197557662829090533">Zulassen, dass Digital Wellbeing von Ihnen aufgerufene Websites anzeigt</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, Web-App. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Als <ph name="USER_FULL_NAME" /> fortfahren</translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">fehlgeschlagen</translation> <translation id="2781151931089541271">1 Sekunde übrig</translation> <translation id="2784212955220061919">Im Lite-Modus werden Seiten schneller in Chrome geladen und es werden bis zu 60 Prozent weniger Daten verbraucht. Durch die Cloud-Technologie von Google werden die von Ihnen besuchten Seiten optimiert.</translation> +<translation id="2785336755839207516">Sie haben <ph name="APP_NAME" /> deinstalliert.</translation> <translation id="2803478378562657435">Gespeicherte Passwörter und Passwortoptionen werden angezeigt</translation> <translation id="2810645512293415242">Vereinfachte Seite für einen geringeren Datenverbrauch und schnelleres Laden.</translation> <translation id="281504910091592009">Gespeicherte Passwörter in Ihrem <ph name="BEGIN_LINK" />Google-Konto<ph name="END_LINK" /> ansehen und verwalten</translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Informationen anzeigen</translation> <translation id="3123473560110926937">Auf einigen Websites blockiert</translation> <translation id="3137521801621304719">Inkognitomodus deaktivieren</translation> +<translation id="3143515551205905069">Synchronisierung abbrechen</translation> <translation id="3148434565183091099">Melden Sie sich in Chrome an, um Ihre Lesezeichen auf allen Ihren Geräten zu haben.</translation> <translation id="3157842584138209013">Über die Schaltfläche "Weitere Optionen" können Sie sich ansehen, wie viel Datenvolumen Sie einsparen</translation> <translation id="3166827708714933426">Tastenkombinationen für Tabs und Fenster</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Bild laden</translation> <translation id="3269956123044984603">Aktivieren Sie "Daten automatisch synchronisieren" in den Android-Kontoeinstellungen, um Tabs von Ihren anderen Geräten abzurufen.</translation> <translation id="3282568296779691940">In Chrome anmelden</translation> +<translation id="3288003805934695103">Seite aktualisieren</translation> <translation id="32895400574683172">Benachrichtigungen sind erlaubt</translation> <translation id="3295530008794733555">Schneller surfen. Weniger Daten verbrauchen.</translation> <translation id="3295602654194328831">Informationen ausblenden</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> Downloads gelöscht</translation> <translation id="3819562311292413223">Artikel für Sie herunterladen</translation> <translation id="3822502789641063741">Websitespeicher löschen?</translation> +<translation id="385051799172605136">Zurück</translation> <translation id="3859306556332390985">Nach vorne navigieren</translation> <translation id="3894427358181296146">Ordner hinzufügen</translation> <translation id="3895926599014793903">Zoom zwingend aktivieren</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Anmelden</translation> <translation id="395206256282351086">Vorschläge für Suchbegriffe und Websites deaktiviert</translation> <translation id="3955193568934677022">Wiedergabe geschützter Inhalte auf Websites zulassen (empfohlen)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome lädt Ihre Seite, sobald möglich}other{Chrome lädt Ihre Seiten, sobald möglich}}</translation> <translation id="3963007978381181125">Die Passphrasenverschlüsselung enthält keine Zahlungsmethoden oder Adressen von Google Pay. Nur Personen mit Ihrer Passphrase können Ihre verschlüsselten Daten lesen. Die Passphrase wird nicht an Google gesendet oder von Google gespeichert. Falls Sie sie vergessen oder diese Einstellung ändern möchten, müssen Sie die Synchronisierung zurücksetzen. <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Download abgeschlossen</translation> <translation id="397583555483684758">Die Synchronisierung funktioniert nicht mehr</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Medien</translation> <translation id="4278390842282768270">Zugelassen</translation> <translation id="429312253194641664">Eine Website gibt Medien wieder</translation> +<translation id="4298388696830689168">Verknüpfte Websites</translation> <translation id="4307992518367153382">Grundeinstellungen</translation> <translation id="4314815835985389558">Synchronisierung verwalten</translation> <translation id="4351244548802238354">Dialogfeld schließen</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Wenn Sie das Kästchen "Do Not Track" anklicken, wird mit Ihren Browserzugriffen eine Anforderung gesendet. Wie sich diese Anforderung auswirkt, hängt davon ab, ob eine Website darauf reagiert und wie die Anforderung interpretiert wird. Einige Websites schalten möglicherweise Werbeanzeigen, deren Auswahl nicht darauf basiert, welche Websites Sie zuvor besucht haben. Viele Websites erfassen weiterhin Ihre Browserdaten und verwenden sie, um beispielsweise die Sicherheit zu verbessern oder Inhalte, Werbeanzeigen und Empfehlungen bereitzustellen und Statistiken für Berichte zu erstellen.</translation> +<translation id="624789221780392884">Update bereit</translation> <translation id="6255999984061454636">Inhaltsvorschläge</translation> <translation id="6277522088822131679">Beim Drucken der Seite ist ein Problem aufgetreten. Bitte versuchen Sie es erneut.</translation> <translation id="6295158916970320988">Alle Websites</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Video herunterladen</translation> <translation id="6482749332252372425"><ph name="FILE_NAME" /> konnte nicht heruntergeladen werden, weil nicht genügend Speicherplatz vorhanden ist.</translation> <translation id="6496823230996795692">Wenn Sie <ph name="APP_NAME" /> zum ersten Mal nutzen, stellen Sie bitte eine Verbindung zum Internet her.</translation> +<translation id="6508722015517270189">Chrome neu starten</translation> <translation id="6527303717912515753">Teilen</translation> <translation id="6534565668554028783">Die Antwort von Google hat zu lange gedauert</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB heruntergeladen</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Warten auf Abschluss der Google Play-Dienste-Aktualisierung</translation> <translation id="7189598951263744875">Teilen...</translation> <translation id="7191430249889272776">Tab im Hintergrund geöffnet</translation> -<translation id="7221869452894271364">Diese Seite neu laden</translation> <translation id="723171743924126238">Bilder auswählen</translation> <translation id="7243308994586599757">Optionen unten auf dem Bildschirm verfügbar</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> ausgewählt</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Zeitraum</translation> <translation id="7851858861565204677">Andere Geräte</translation> <translation id="7854964836418414587">"Weitere ähnliche" schließen</translation> +<translation id="7871791972254842204">Nutzungsbedingungen für <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> später lesen und zustimmen</translation> <translation id="7875915731392087153">E-Mail erstellen</translation> <translation id="7876243839304621966">Alle entfernen</translation> <translation id="7882131421121961860">Kein Verlauf gefunden</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Fortsetzen</translation> <translation id="8209050860603202033">Bild öffnen</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB heruntergeladen</translation> +<translation id="8232956427053453090">Daten aufbewahren</translation> <translation id="8249310407154411074">Ganz nach oben</translation> <translation id="8250920743982581267">Dokumente</translation> <translation id="825412236959742607">Diese Seite benötigt zu viel Arbeitsspeicher. Darum hat Chrome einige Inhalte entfernt.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Name des Karteninhabers</translation> <translation id="8604763363205185560">Helfen Sie, die Sicherheit und Funktionen von Chrome zu verbessern</translation> <translation id="8609465669617005112">Nach oben</translation> +<translation id="8611192991944347781">Daten verwalten</translation> <translation id="8616006591992756292">Möglicherweise verfügt Ihr Google-Konto unter <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> über andere Browserverläufe.</translation> <translation id="8617240290563765734">Soll die im heruntergeladenen Inhalt angegebene URL geöffnet werden?</translation> <translation id="8636825310635137004">Aktivieren Sie die Synchronisierung, um Tabs von Ihren anderen Geräten abzurufen.</translation> <translation id="8641930654639604085">Versuchen, nicht jugendfreie Websites zu blockieren</translation> +<translation id="8655129584991699539">Sie können die Daten in den Chrome-Einstellungen löschen</translation> <translation id="8662811608048051533">Sie werden von den meisten Websites abgemeldet.</translation> <translation id="8664979001105139458">Dateiname schon vorhanden</translation> <translation id="8676374126336081632">Eingabe löschen</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Kontakte durchsuchen</translation> <translation id="869891660844655955">Ablaufdatum</translation> <translation id="8719023831149562936">Aktueller Tab kann nicht gebeamt werden.</translation> +<translation id="8723954843026426558">Ich stimme den Nutzungsbedingungen, der Datenschutzerklärung und dem Widerrufsrecht von <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> zu</translation> <translation id="8725066075913043281">Erneut versuchen</translation> <translation id="8728487861892616501">Durch die Nutzung dieser Anwendung stimmen Sie den <ph name="BEGIN_LINK1" />Nutzungsbedingungen<ph name="END_LINK1" /> und <ph name="BEGIN_LINK2" />Datenschutzhinweisen<ph name="END_LINK2" /> von Chrome sowie den <ph name="BEGIN_LINK3" />Datenschutzhinweisen für mit Family Link verwaltete Google-Konten<ph name="END_LINK3" /> zu.</translation> <translation id="8730621377337864115">Fertig</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_el.xtb b/chrome/android/java/strings/translations/android_chrome_strings_el.xtb index 2e85ac3a..12a38bbc 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_el.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_el.xtb
@@ -167,7 +167,6 @@ <translation id="2154484045852737596">Επεξεργασία κάρτας</translation> <translation id="2154710561487035718">Αντιγραφή διεύθυνσης URL</translation> <translation id="2156074688469523661">Ιστότοποι που απομένουν (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Ελέγξτε τη σύνδεσή σας στο διαδίκτυο</translation> <translation id="2197557662829090533">Επιτρέψτε στο Digital Wellbeing να εμφανίζει ιστοτόπους που έχετε επισκεφτεί</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, εφαρμογή ιστού. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Συνέχεια ως <ph name="USER_FULL_NAME" /></translation> @@ -286,6 +285,7 @@ <translation id="3115898365077584848">Πληροφορίες εκπομπής</translation> <translation id="3123473560110926937">Αποκλεισμός σε ορισμένους ιστοτόπους</translation> <translation id="3137521801621304719">Έξοδος από την κατάσταση ανώνυμης περιήγησης</translation> +<translation id="3143515551205905069">Ακύρωση συγχρονισμού</translation> <translation id="3148434565183091099">Για να εμφανίζονται οι σελιδοδείκτες σας σε όλες τις συσκευές σας, συνδεθείτε στο Chrome.</translation> <translation id="3157842584138209013">Δείτε πόσα δεδομένα έχετε αποθηκεύσει από το κουμπί "Περισσότερες επιλογές"</translation> <translation id="3166827708714933426">Συντομεύσεις καρτέλας και παραθύρου</translation> @@ -304,6 +304,7 @@ <translation id="3269093882174072735">Φόρτωση εικόνας</translation> <translation id="3269956123044984603">Για να εμφανίζονται οι καρτέλες από τις άλλες συσκευές σας, ενεργοποιήστε τον "Αυτόματο συγχρονισμό δεδομένων" στις ρυθμίσεις λογαριασμού Android.</translation> <translation id="3282568296779691940">Σύνδεση στο Chrome</translation> +<translation id="3288003805934695103">Επαναλάβετε τη φόρτωση της σελίδας</translation> <translation id="32895400574683172">Οι ειδοποιήσεις επιτρέπονται</translation> <translation id="3295530008794733555">Ταχύτερη περιήγηση. Χρήση λιγότερων δεδομένων.</translation> <translation id="3295602654194328831">Απόκρυψη πληροφοριών</translation> @@ -373,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> λήψεις διαγράφηκαν</translation> <translation id="3819562311292413223">Λήψη άρθρων για εσάς</translation> <translation id="3822502789641063741">Διαγ.αποθ.χώρου ιστότ.;</translation> +<translation id="385051799172605136">Πίσω</translation> <translation id="3859306556332390985">Αναζήτηση προς τα εμπρός</translation> <translation id="3894427358181296146">Προσθήκη φακέλου…</translation> <translation id="3895926599014793903">Αναγκαστική ενεργοποίηση εστίασης</translation> @@ -704,6 +706,7 @@ <translation id="6232535412751077445">Η ενεργοποίηση της επιλογής "Να μην γίνεται εντοπισμός" σημαίνει ότι θα συμπεριληφθεί ένα αίτημα με την επισκεψιμότητα της περιήγησής σας. Τυχόν αποτελέσματα εξαρτώνται από το κατά πόσο ένας ιστότοπος ανταποκρίνεται στο αίτημα, καθώς και από τον τρόπο με τον οποίο ερμηνεύεται το αίτημα. Για παράδειγμα, ορισμένοι ιστότοποι ενδέχεται να ανταποκρίνονται σε αυτό το αίτημα εμφανίζοντας διαφημίσεις που δεν βασίζονται σε άλλους ιστότοπους που έχετε επισκεφτεί. Πολλοί ιστότοποι θα εξακολουθούν να συλλέγουν και να χρησιμοποιούν τα δεδομένα περιήγησής σας. Για παράδειγμα, για να βελτιώσουν την ασφάλεια, να παρέχουν περιεχόμενο, διαφημίσεις και προτάσεις, καθώς και για να δημιουργούν στατιστικά στοιχεία αναφοράς.</translation> +<translation id="624789221780392884">Έτοιμη ενημέρωση</translation> <translation id="6255999984061454636">Προτάσεις περιεχομένου</translation> <translation id="6277522088822131679">Παρουσιάστηκε ένα πρόβλημα κατά την εκτύπωση της σελίδας. Δοκιμάστε ξανά.</translation> <translation id="6295158916970320988">Όλοι οι ιστότοποι</translation> @@ -739,6 +742,7 @@ <translation id="6475951671322991020">Λήψη βίντεο</translation> <translation id="6482749332252372425">Η λήψη του αρχείου <ph name="FILE_NAME" /> απέτυχε λόγω έλλειψης αποθηκευτικού χώρου.</translation> <translation id="6496823230996795692">Για να χρησιμοποιήσετε την εφαρμογή <ph name="APP_NAME" /> για πρώτη φορά, συνδεθείτε στο διαδίκτυο.</translation> +<translation id="6508722015517270189">Επανεκκινήστε το Chrome</translation> <translation id="6527303717912515753">Κοινοποίηση</translation> <translation id="6534565668554028783">Η απάντηση από το Google καθυστέρησε υπερβολικά</translation> <translation id="6538442820324228105">Έγινε λήψη <ph name="GBS" /> GB</translation> @@ -837,7 +841,6 @@ <translation id="7189372733857464326">Αναμονή για ολοκλήρωση της ενημέρωσης των Υπηρεσιών Google Play</translation> <translation id="7189598951263744875">Μοιραστείτε…</translation> <translation id="7191430249889272776">Η καρτέλα άνοιξε στο παρασκήνιο.</translation> -<translation id="7221869452894271364">Επαναφόρτωση αυτής της σελίδας</translation> <translation id="723171743924126238">Επιλέξτε εικόνες</translation> <translation id="7243308994586599757">Διαθέσιμες επιλογές κοντά κάτω μέρος της οθόνης</translation> <translation id="7250468141469952378">Επιλέχθηκαν <ph name="ITEM_COUNT" /></translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb index 648bd25..5e17245 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb
@@ -167,7 +167,6 @@ <translation id="2154484045852737596">Edit card</translation> <translation id="2154710561487035718">Copy URL</translation> <translation id="2156074688469523661">Remaining sites (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Check your Internet connection</translation> <translation id="2197557662829090533">Allow Digital Wellbeing to show websites that you visited</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, web app. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Continue as <ph name="USER_FULL_NAME" /></translation> @@ -286,6 +285,7 @@ <translation id="3115898365077584848">Show info</translation> <translation id="3123473560110926937">Blocked on some sites</translation> <translation id="3137521801621304719">Leave incognito mode</translation> +<translation id="3143515551205905069">Cancel sync</translation> <translation id="3148434565183091099">To get your bookmarks on all your devices, sign in to Chrome.</translation> <translation id="3157842584138209013">See how much data you've saved from the More Options button</translation> <translation id="3166827708714933426">Tab and window shortcuts</translation> @@ -304,6 +304,7 @@ <translation id="3269093882174072735">Load image</translation> <translation id="3269956123044984603">To get your tabs from your other devices, turn on “Auto-sync data” in Android account settings.</translation> <translation id="3282568296779691940">Sign in to Chrome</translation> +<translation id="3288003805934695103">Reloading the page</translation> <translation id="32895400574683172">Notifications are allowed</translation> <translation id="3295530008794733555">Browse faster. Use less data.</translation> <translation id="3295602654194328831">Hide info</translation> @@ -373,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> downloads deleted</translation> <translation id="3819562311292413223">Download articles for you</translation> <translation id="3822502789641063741">Clear site storage?</translation> +<translation id="385051799172605136">Back</translation> <translation id="3859306556332390985">Seek forward</translation> <translation id="3894427358181296146">Add folder</translation> <translation id="3895926599014793903">Force enable zoom</translation> @@ -704,6 +706,7 @@ <translation id="6232535412751077445">Enabling “Do Not Track” means that a request will be included with your browsing traffic. Any effect depends on whether a website responds to the request and how the request is interpreted. For example, some websites may respond to this request by showing you ads that aren’t based on other websites that you’ve visited. Many websites will still collect and use your browsing data – for example to improve security, to provide content, ads and recommendations and to generate reporting statistics.</translation> +<translation id="624789221780392884">Update ready</translation> <translation id="6255999984061454636">Content suggestions</translation> <translation id="6277522088822131679">There was a problem printing the page. Please try again.</translation> <translation id="6295158916970320988">All sites</translation> @@ -739,6 +742,7 @@ <translation id="6475951671322991020">Download video</translation> <translation id="6482749332252372425"><ph name="FILE_NAME" /> download failed due to lack of storage space.</translation> <translation id="6496823230996795692">To use <ph name="APP_NAME" /> for the first time, please connect to the Internet.</translation> +<translation id="6508722015517270189">Restart Chrome</translation> <translation id="6527303717912515753">Share</translation> <translation id="6534565668554028783">Google took too long to respond</translation> <translation id="6538442820324228105">Downloaded <ph name="GBS" /> GB</translation> @@ -837,7 +841,6 @@ <translation id="7189372733857464326">Waiting for Google Play Services to finish updating</translation> <translation id="7189598951263744875">Share...</translation> <translation id="7191430249889272776">Tab opened in background.</translation> -<translation id="7221869452894271364">Reload this page</translation> <translation id="723171743924126238">Select images</translation> <translation id="7243308994586599757">Options available near bottom of the screen</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> selected</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb b/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb index d6890ca..6fac857b8 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="es-419"> <translation id="1006017844123154345">Abrir en línea</translation> +<translation id="1023450834687746199">Borraste datos de <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">Agregando <ph name="WEBAPK_NAME" />…</translation> <translation id="1041308826830691739">De sitios web</translation> <translation id="1049743911850919806">Incógnito</translation> @@ -24,7 +25,7 @@ <translation id="1172593791219290334">Página de inicio</translation> <translation id="1175310183703641346">Ya no se sincronizarán los favoritos, el historial, las contraseñas y otras opciones de configuración con tu cuenta de Google.</translation> <translation id="1178581264944972037">Detener</translation> -<translation id="1181037720776840403">Eliminar</translation> +<translation id="1181037720776840403">Quitar</translation> <translation id="1197267115302279827">Mover favoritos</translation> <translation id="119944043368869598">Borrar todo</translation> <translation id="1201402288615127009">Siguiente</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Borra el historial y las opciones de autocompletado en la barra de direcciones.</translation> <translation id="2021896219286479412">Controles en pantalla completa</translation> <translation id="2038563949887743358">Activar la opción para solicitar versión de escritorio</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> también tiene datos en Chrome</translation> <translation id="2045104531052923016">Otras apps: <ph name="GIGABYTES" /> gigabytes</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Presionar para buscar</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Editar tarjeta</translation> <translation id="2154710561487035718">Copiar URL</translation> <translation id="2156074688469523661">Sitios restantes (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Comprueba tu conexión a Internet</translation> <translation id="2197557662829090533">Permite que Bienestar digital muestre los sitios web que visitaste</translation> <translation id="2206488550163399966"><ph name="APP_NAME" /> (aplicación web), <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Continuar como <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">error</translation> <translation id="2781151931089541271">1 segundo restante</translation> <translation id="2784212955220061919">En el modo lite, Chrome carga las páginas más rápido y usa hasta un 60 por ciento menos de datos. La tecnología de la nube de Google optimiza las páginas que visitas.</translation> +<translation id="2785336755839207516">Desinstalaste <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Se muestran las contraseñas guardadas y las opciones de contraseña</translation> <translation id="2810645512293415242">La página se simplificó para ahorrar datos y acelerar la carga.</translation> <translation id="281504910091592009">Ver y administrar las contraseñas guardadas en tu <ph name="BEGIN_LINK" />cuenta de Google<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Mostrar información</translation> <translation id="3123473560110926937">Bloqueados en algunos sitios</translation> <translation id="3137521801621304719">Salir del modo de navegación de incógnito</translation> +<translation id="3143515551205905069">Cancelar sincronización</translation> <translation id="3148434565183091099">Para usar tus favoritos en todos los dispositivos, accede a Chrome.</translation> <translation id="3157842584138209013">Para ver cuántos datos redujiste, selecciona el botón Más opciones</translation> <translation id="3166827708714933426">Accesos directos a ventanas y pestañas</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Cargar imagen</translation> <translation id="3269956123044984603">Para obtener las pestañas de tus otros dispositivos, activa la opción "Sincronización automática de datos" en la configuración de la cuenta de Android.</translation> <translation id="3282568296779691940">Acceder a Chrome</translation> +<translation id="3288003805934695103">Volver a cargar la página.</translation> <translation id="32895400574683172">Las notificaciones están habilitadas</translation> <translation id="3295530008794733555">Navega más rápido; usa menos datos</translation> <translation id="3295602654194328831">Ocultar información</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> descargas borradas</translation> <translation id="3819562311292413223">Descargar artículos para ti</translation> <translation id="3822502789641063741">¿Borrar el almacenamiento de sitios?</translation> +<translation id="385051799172605136">Atrás</translation> <translation id="3859306556332390985">Buscar más adelante</translation> <translation id="3894427358181296146">Agregar carpeta</translation> <translation id="3895926599014793903">Forzar habilitación de zoom</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Acceder</translation> <translation id="395206256282351086">Se inhabilitaron las sugerencias de sitios y búsqueda</translation> <translation id="3955193568934677022">Permitir que los sitios reproduzcan contenido protegido (recomendado)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome cargará la página cuando esté lista}other{Chrome cargará las páginas cuando estén listas}}</translation> <translation id="3963007978381181125">La encriptación de la frase de contraseña no incluye formas de pago ni direcciones de Google Pay. Solo las personas que tengan tu frase de contraseña pueden leer los datos encriptados. Google no envía ni almacena la frase de contraseña. Si la olvidas o quieres cambiar esta configuración, deberás restablecer la sincronización. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Descarga completa</translation> <translation id="397583555483684758">La sincronización dejó de funcionar</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Multimedia</translation> <translation id="4278390842282768270">Permitido</translation> <translation id="429312253194641664">Un sitio está reproduciendo contenido multimedia</translation> +<translation id="4298388696830689168">Sitios vinculados</translation> <translation id="4307992518367153382">Básicas</translation> <translation id="4314815835985389558">Administrar la sincronización</translation> <translation id="4351244548802238354">Cerrar cuadro de diálogo</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Si se habilita la opción de "No realizar seguimiento", se incluirá una solicitud con tu tráfico de navegación. Los efectos dependerán de si hay algún sitio web que responda a la solicitud y de cómo se interprete. Por ejemplo, algunos sitios web pueden responder a la solicitud mediante anuncios que no están basados en otros sitios web que hayas visitado. Muchos sitios web seguirán recopilando y utilizando tus datos de navegación, por ejemplo, para mejorar la seguridad, proporcionar contenido, anuncios y recomendaciones, y generar estadísticas de informes.</translation> +<translation id="624789221780392884">Actualización lista</translation> <translation id="6255999984061454636">Sugerencias de contenido</translation> <translation id="6277522088822131679">Se produjo un error al imprimir la página. Vuelve a intentarlo.</translation> <translation id="6295158916970320988">Todos los sitios</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Descargar video</translation> <translation id="6482749332252372425"><ph name="FILE_NAME" /> no se pudo descargar debido a la falta de espacio de almacenamiento.</translation> <translation id="6496823230996795692">Para usar <ph name="APP_NAME" /> por primera vez, conéctate a Internet.</translation> +<translation id="6508722015517270189">Reinicia Chrome.</translation> <translation id="6527303717912515753">Compartir</translation> <translation id="6534565668554028783">Google tardó demasiado en responder</translation> <translation id="6538442820324228105">Se descargaron <ph name="GBS" /> GB</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Esperando que los servicios de Google Play terminen de actualizarse</translation> <translation id="7189598951263744875">Compartir...</translation> <translation id="7191430249889272776">Pestaña abierta en segundo plano</translation> -<translation id="7221869452894271364">Cargar esta página de nuevo</translation> <translation id="723171743924126238">Seleccionar imágenes</translation> <translation id="7243308994586599757">Opciones disponibles junto a la parte inferior de la pantalla</translation> <translation id="7250468141469952378">Elementos seleccionados: <ph name="ITEM_COUNT" /></translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Intervalo de tiempo</translation> <translation id="7851858861565204677">Otros dispositivos</translation> <translation id="7854964836418414587">Cerrar Más contenido similar</translation> +<translation id="7871791972254842204">Leer y aceptar los términos y condiciones de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> más tarde</translation> <translation id="7875915731392087153">Crear correo electrónico</translation> <translation id="7876243839304621966">Eliminar todo</translation> <translation id="7882131421121961860">No se encontraron entradas en el historial</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Reanudar</translation> <translation id="8209050860603202033">Abrir imagen</translation> <translation id="8220488350232498290">Contenido descargado: <ph name="GIGABYTES" /> gigabytes</translation> +<translation id="8232956427053453090">Conservar los datos</translation> <translation id="8249310407154411074">Mover al principio</translation> <translation id="8250920743982581267">Documentos</translation> <translation id="825412236959742607">Chrome quitó parte del contenido de esta página porque usa demasiada memoria.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Nombre del titular de la tarjeta</translation> <translation id="8604763363205185560">Ayuda a mejorar Chrome y la seguridad</translation> <translation id="8609465669617005112">Subir</translation> +<translation id="8611192991944347781">Revisar datos</translation> <translation id="8616006591992756292">Es posible que tu cuenta de Google tenga otros formularios del historial de navegación en <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">¿Quieres abrir la URL sugerida que se especifica en el contenido descargado?</translation> <translation id="8636825310635137004">Activa la sincronización para obtener las pestañas de tus otros dispositivos.</translation> <translation id="8641930654639604085">Tratar de bloquear los sitios para adultos</translation> +<translation id="8655129584991699539">Puedes borrar los datos en la Configuración de Chrome</translation> <translation id="8662811608048051533">Esta acción te hace salir de la mayoría de los sitios.</translation> <translation id="8664979001105139458">El nombre del archivo ya existe</translation> <translation id="8676374126336081632">Borrar entrada</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Busca entre tus contactos</translation> <translation id="869891660844655955">Fecha de vencimiento</translation> <translation id="8719023831149562936">Esta pestaña no se puede transmitir.</translation> +<translation id="8723954843026426558">Acepto los Términos y Condiciones, la Política de Privacidad y el derecho de cancelación de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Intentar nuevamente</translation> <translation id="8728487861892616501">Al usar esta app, aceptas las <ph name="BEGIN_LINK1" />Condiciones del servicio<ph name="END_LINK1" /> y el <ph name="BEGIN_LINK2" />Aviso de privacidad<ph name="END_LINK2" /> de Chrome, y el <ph name="BEGIN_LINK3" />Aviso de privacidad para las cuentas de Google administradas con Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Listo</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_es.xtb b/chrome/android/java/strings/translations/android_chrome_strings_es.xtb index 0964e07..1a738b9 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_es.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_es.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="es"> <translation id="1006017844123154345">Abrir versión online</translation> +<translation id="1023450834687746199">Has borrado los datos de <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">Añadiendo <ph name="WEBAPK_NAME" />...</translation> <translation id="1041308826830691739">De sitios web</translation> <translation id="1049743911850919806">Incógnito</translation> @@ -24,7 +25,7 @@ <translation id="1172593791219290334">Página de inicio</translation> <translation id="1175310183703641346">Tus marcadores, el historial, las contraseñas y otros datos dejarán de sincronizarse con tu cuenta de Google.</translation> <translation id="1178581264944972037">Pausar</translation> -<translation id="1181037720776840403">Eliminar</translation> +<translation id="1181037720776840403">Quitar</translation> <translation id="1197267115302279827">Mover marcadores</translation> <translation id="119944043368869598">Eliminar todo</translation> <translation id="1201402288615127009">Siguiente</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Borra el historial y los autocompletados de la barra de direcciones.</translation> <translation id="2021896219286479412">Controles de pantalla completa</translation> <translation id="2038563949887743358">Activar opción para ver como ordenador</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> también tiene datos en Chrome</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB de otras aplicaciones</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Tocar para buscar</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Editar tarjeta</translation> <translation id="2154710561487035718">Copiar URL</translation> <translation id="2156074688469523661">Sitios web restantes (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Comprueba tu conexión a Internet</translation> <translation id="2197557662829090533">Permitir a Bienestar digital que muestre los sitios web que has visitado</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, una aplicación web disponible en <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Continuar como <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">ha fallado</translation> <translation id="2781151931089541271">Queda 1 segundo</translation> <translation id="2784212955220061919">En el modo básico, Chrome carga las páginas más rápido y reduce el uso de datos hasta un 60 por ciento. La tecnología de la nube de Google optimiza las páginas que visitas.</translation> +<translation id="2785336755839207516">Has desinstalado <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Mostrando contraseñas guardadas y opciones de contraseña</translation> <translation id="2810645512293415242">Esta página se ha simplificado para ahorrar datos y poder cargarla más rápido.</translation> <translation id="281504910091592009">Consulta y gestiona las contraseñas guardadas en tu <ph name="BEGIN_LINK" />cuenta de Google<ph name="END_LINK" /></translation> @@ -278,11 +280,12 @@ <translation id="305593374596241526">La ubicación está desactivada. Actívala en los <ph name="BEGIN_LINK" />Ajustes de Android<ph name="END_LINK" />.</translation> <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> marcador}other{<ph name="BOOKMARKS_COUNT_MANY" /> marcadores}}</translation> <translation id="307908932405420782">Próximamente se mostrarán más artículos. Disfruta de la mañana.</translation> -<translation id="3089395242580810162">Abrir en modo de incógnito</translation> +<translation id="3089395242580810162">Abrir en pestaña de incógnito</translation> <translation id="311456632243022227">Varios enlaces abiertos en Chrome</translation> <translation id="3115898365077584848">Mostrar información</translation> <translation id="3123473560110926937">Bloqueados en algunos sitios web</translation> <translation id="3137521801621304719">Salir del modo de incógnito</translation> +<translation id="3143515551205905069">Cancelar sincronización</translation> <translation id="3148434565183091099">Inicia sesión en Chrome para ver tus marcadores en todos tus dispositivos.</translation> <translation id="3157842584138209013">Consulta la cantidad de datos que has ahorrado con el botón Más opciones</translation> <translation id="3166827708714933426">Combinaciones de teclas de pestañas y ventanas</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Cargar imagen</translation> <translation id="3269956123044984603">Para ver las pestañas de tus otros dispositivos, activa la opción Sincronización automática en la configuración de la cuenta de Android.</translation> <translation id="3282568296779691940">Iniciar sesión en Chrome</translation> +<translation id="3288003805934695103">Volver a cargar la página</translation> <translation id="32895400574683172">Las notificaciones están permitidas</translation> <translation id="3295530008794733555">Navega más rápido. Usa menos datos.</translation> <translation id="3295602654194328831">Ocultar información</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326">Descargas eliminadas: <ph name="NUMBER_OF_DOWNLOADS" /></translation> <translation id="3819562311292413223">Descargar artículos recomendados para ti</translation> <translation id="3822502789641063741">¿Borrar almacenamiento web?</translation> +<translation id="385051799172605136">Atrás</translation> <translation id="3859306556332390985">Buscar hacia delante</translation> <translation id="3894427358181296146">Añadir carpeta</translation> <translation id="3895926599014793903">Forzar zoom</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Iniciar sesión</translation> <translation id="395206256282351086">Sugerencias de sitios web y búsqueda inhabilitadas</translation> <translation id="3955193568934677022">Permitir que los sitios web reproduzcan contenido protegido (recomendado)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome cargará la página cuando el dispositivo esté listo}other{Chrome cargará las páginas cuando el dispositivo esté listo}}</translation> <translation id="3963007978381181125">El cifrado mediante frase de contraseña no incluye los métodos de pago ni las direcciones de Google Pay. Solo alguien que tenga tu frase de contraseña puede leer tus datos cifrados. La frase de contraseña no se envía a Google, que tampoco la guarda. Si la olvidas o quieres cambiar esta opción, debes restablecer la sincronización. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Descarga completa</translation> <translation id="397583555483684758">La sincronización ha dejado de funcionar</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Multimedia</translation> <translation id="4278390842282768270">Permitido</translation> <translation id="429312253194641664">Un sitio web está reproduciendo elementos multimedia</translation> +<translation id="4298388696830689168">Sitios web enlazados</translation> <translation id="4307992518367153382">Configuración básica</translation> <translation id="4314815835985389558">Gestionar la sincronización</translation> <translation id="4351244548802238354">Cerrar cuadro de diálogo</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Al habilitar la opción No realizar seguimiento, se incluirá una solicitud con el tráfico de navegación. El efecto dependerá de si algún sitio web responde a la solicitud y de cómo se interpreta. Por ejemplo, algunos sitios web pueden responder a la solicitud mostrándote anuncios no basados en otros sitios web que hayas visitado. Muchos sitios web seguirán recopilando y utilizando tus datos de navegación (por ejemplo, para mejorar la seguridad, para proporcionar contenido, anuncios y recomendaciones o para generar estadísticas de informes).</translation> +<translation id="624789221780392884">Actualización lista</translation> <translation id="6255999984061454636">Sugerencias de contenido</translation> <translation id="6277522088822131679">Se ha producido un problema al imprimir la página. Vuelve a intentarlo.</translation> <translation id="6295158916970320988">Todos los sitios</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Descargar vídeo</translation> <translation id="6482749332252372425">No se ha podido descargar <ph name="FILE_NAME" /> porque no hay suficiente espacio de almacenamiento.</translation> <translation id="6496823230996795692">Para utilizar <ph name="APP_NAME" /> por primera vez, conéctate a Internet.</translation> +<translation id="6508722015517270189">Reinicia Chrome</translation> <translation id="6527303717912515753">Compartir</translation> <translation id="6534565668554028783">Google ha tardado demasiado en responder</translation> <translation id="6538442820324228105">GB descargados: <ph name="GBS" /></translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Esperando a que Servicios de Google Play termine de actualizarse</translation> <translation id="7189598951263744875">Compartir...</translation> <translation id="7191430249889272776">Pestaña abierta en segundo plano.</translation> -<translation id="7221869452894271364">Cargar página de nuevo</translation> <translation id="723171743924126238">Seleccionar imágenes</translation> <translation id="7243308994586599757">Opciones disponibles cerca de la parte inferior de la pantalla</translation> <translation id="7250468141469952378">Elementos seleccionados: <ph name="ITEM_COUNT" /></translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Intervalo de tiempo</translation> <translation id="7851858861565204677">Otros dispositivos</translation> <translation id="7854964836418414587">Cerrar sugerencias similares</translation> +<translation id="7871791972254842204">Leer y aceptar los términos y condiciones de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> en otro momento</translation> <translation id="7875915731392087153">Crear correo electrónico</translation> <translation id="7876243839304621966">Eliminar todo</translation> <translation id="7882131421121961860">No se ha encontrado el elemento buscado en el historial</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Reanudar</translation> <translation id="8209050860603202033">Abrir imagen</translation> <translation id="8220488350232498290">GB descargados: <ph name="GIGABYTES" /></translation> +<translation id="8232956427053453090">Conservar datos</translation> <translation id="8249310407154411074">Mover al principio</translation> <translation id="8250920743982581267">Documentos</translation> <translation id="825412236959742607">Esta página utiliza demasiada memoria, por lo que Chrome ha eliminado parte del contenido.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Nombre del titular de la tarjeta</translation> <translation id="8604763363205185560">Ayuda a mejorar Chrome y su seguridad</translation> <translation id="8609465669617005112">Subir</translation> +<translation id="8611192991944347781">Gestionar datos</translation> <translation id="8616006591992756292">Es posible que tu cuenta de Google tenga otros tipos de historial de navegación en <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">¿Quieres abrir la URL sugerida que se especifica en el contenido descargado?</translation> <translation id="8636825310635137004">Activa la sincronización para ver las pestañas de tus otros dispositivos.</translation> <translation id="8641930654639604085">Intentar bloquear sitios web para adultos</translation> +<translation id="8655129584991699539">Puedes borrar los datos en la configuración de Chrome</translation> <translation id="8662811608048051533">Cierra tu sesión en la mayoría de los sitios web.</translation> <translation id="8664979001105139458">El nombre del archivo ya existe</translation> <translation id="8676374126336081632">Borrar entrada</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Buscar en tus contactos</translation> <translation id="869891660844655955">Fecha de caducidad</translation> <translation id="8719023831149562936">No se puede compartir la pestaña actual.</translation> +<translation id="8723954843026426558">Acepto los términos y condiciones, la política de privacidad y el derecho de cancelación de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Volver a intentarlo</translation> <translation id="8728487861892616501">Si utilizas esta aplicación, aceptas las <ph name="BEGIN_LINK1" />condiciones de servicio<ph name="END_LINK1" /> y el <ph name="BEGIN_LINK2" />aviso de privacidad<ph name="END_LINK2" /> de Chrome, así como el <ph name="BEGIN_LINK3" />aviso de privacidad para cuentas de Google gestionadas con Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Listo</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_et.xtb b/chrome/android/java/strings/translations/android_chrome_strings_et.xtb index e610f47..5b7aaab 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_et.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_et.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="et"> <translation id="1006017844123154345">Ava veebis</translation> +<translation id="1023450834687746199">Olete kustutanud rakenduse <ph name="APP_NAME" /> andmed.</translation> <translation id="1036727731225946849">APK <ph name="WEBAPK_NAME" /> lisamine …</translation> <translation id="1041308826830691739">Veebisaitidelt</translation> <translation id="1049743911850919806">Inkognito</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Kustutab aadressiribalt ajaloo ja automaatse täitmise teabe.</translation> <translation id="2021896219286479412">Saidi juhtelemendid täisekraanil</translation> <translation id="2038563949887743358">Valiku Taotle arvutisaiti sisselülitamine</translation> +<translation id="204321170514947529">Rakendusel <ph name="APP_NAME" /> on samuti Chrome’i andmeid</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB – muud rakendused</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Puudutage otsimiseks</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Kaardi muutmine</translation> <translation id="2154710561487035718">Kopeeri URL</translation> <translation id="2156074688469523661">Järelejäänud saidid (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Kontrollige Interneti-ühendust</translation> <translation id="2197557662829090533">Lubage funktsioonil Digitaalne heaolu kuvada teie külastatud veebisaite</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, veebirakendus. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Jätka kasutajana <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">ebaõnnestus</translation> <translation id="2781151931089541271">Jäänud on 1 sekund</translation> <translation id="2784212955220061919">Lihtsustatud režiimis laadib Chrome lehti kiiremini ja kasutab kuni 60 protsenti vähem andmemahtu. Google'i pilvetehnoloogia optimeerib külastatavaid lehti.</translation> +<translation id="2785336755839207516">Olete desinstallinud rakenduse <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Kuvatud on salvestatud paroolid ja paroolivalikud</translation> <translation id="2810645512293415242">Lihtsustatud leht andmemahu säästmiseks ja laadimise kiirendamiseks.</translation> <translation id="281504910091592009">Vaadake ja hallake salvestatud paroole oma <ph name="BEGIN_LINK" />Google'i kontol<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Kuva teave</translation> <translation id="3123473560110926937">Blokeeritud teatud saitidel</translation> <translation id="3137521801621304719">Inkognito režiimist väljumine</translation> +<translation id="3143515551205905069">Tühista sünkroonimine</translation> <translation id="3148434565183091099">Järjehoidjate hankimiseks kõikidesse seadmetesse logige Chrome'i sisse.</translation> <translation id="3157842584138209013">Nupu Rohkem valikuid abil saate vaadata, kui palju andmemahtu olete säästnud</translation> <translation id="3166827708714933426">Vahelehe ja akna otseteed</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Laadi kujutis</translation> <translation id="3269956123044984603">Vahelehtede hankimiseks oma teistest seadmetest lülitage Androidi kontoseadetes sisse valik „Andmete automaatne sünkroonimine”.</translation> <translation id="3282568296779691940">Chrome'i sisselogimine</translation> +<translation id="3288003805934695103">Laadige leht uuesti</translation> <translation id="32895400574683172">Märguanded on lubatud</translation> <translation id="3295530008794733555">Sirvige kiiremini. Kasutage vähem andmemahtu.</translation> <translation id="3295602654194328831">Peida teave</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326">Tuvastati <ph name="NUMBER_OF_DOWNLOADS" /> allalaadimist</translation> <translation id="3819562311292413223">Teile soovitatud artiklite allalaadimine</translation> <translation id="3822502789641063741">Kas tühj. saidi salvestusruum?</translation> +<translation id="385051799172605136">Tagasi</translation> <translation id="3859306556332390985">Keri edasi</translation> <translation id="3894427358181296146">Kausta lisamine</translation> <translation id="3895926599014793903">Sundluba suumimine</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Sisselogimine</translation> <translation id="395206256282351086">Otsingu- ja saidisoovitused on keelatud</translation> <translation id="3955193568934677022">Luba saitidel esitada kaitstud sisu (soovitatav)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome laadib teie lehe, kui see on valmis}other{Chrome laadib teie lehed, kui need on valmis}}</translation> <translation id="3963007978381181125">Parooli krüpteerimine ei hõlma Google Pay makseviise ega aadresse. Teie krüpteeritud andmeid saavad lugeda vaid need, kes teavad teie parooli – seda ei saadeta Google'ile ja Google ei talleta seda. Kui unustate parooli või soovite seda seadet muuta, tuleb teil sünkroonimine lähtestada. <ph name="BEGIN_LINK" />Lisateave<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Allalaadimine on lõpule viidud</translation> <translation id="397583555483684758">Sünkroonimine lakkas töötamast</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Meedia</translation> <translation id="4278390842282768270">Lubatud</translation> <translation id="429312253194641664">Sait esitab meediasisu</translation> +<translation id="4298388696830689168">Lingitud saidid</translation> <translation id="4307992518367153382">Põhiteave</translation> <translation id="4314815835985389558">Sünkroonimise haldamine</translation> <translation id="4351244548802238354">Sule dialoog</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Kui lubate funktsiooni „Ära jälgi”, kaasatakse see taotlus teie sirvimisliiklusesse. Mõju oleneb sellest, kas veebisait reageerib taotlusele ja kuidas seda tõlgendatakse. Näiteks võivad mõned veebisaidid taotlusele reageerida nii, et näitavad teile reklaame, mis ei põhine muudel külastatud veebisaitidel. Paljud veebisaidid koguvad ning kasutavad endiselt teie sirvimisandmeid, näiteks turvalisuse parandamiseks, sisu, reklaamide ja soovituste pakkumiseks ning aruandlusstatistika loomiseks.</translation> +<translation id="624789221780392884">Värskendus on valmis</translation> <translation id="6255999984061454636">Sisu soovitused</translation> <translation id="6277522088822131679">Lehe printimisel ilmnes probleem. Proovige uuesti.</translation> <translation id="6295158916970320988">Kõik saidid</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Laadi video alla</translation> <translation id="6482749332252372425">Faili <ph name="FILE_NAME" /> allalaadimine ebaõnnestus, kuna salvestusruumi on liiga vähe.</translation> <translation id="6496823230996795692">Rakenduse <ph name="APP_NAME" /> esmakordseks kasutamiseks looge ühendus Internetiga.</translation> +<translation id="6508722015517270189">Taaskäivitage Chrome</translation> <translation id="6527303717912515753">Jaga</translation> <translation id="6534565668554028783">Google'il kulus reageerimiseks liiga kaua aega</translation> <translation id="6538442820324228105">Alla on laaditud <ph name="GBS" /> GB</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Google Play teenuste värskendamise lõpetamise ootamine</translation> <translation id="7189598951263744875">Jaga ...</translation> <translation id="7191430249889272776">Taustal on avatud vaheleht.</translation> -<translation id="7221869452894271364">Laadi see lehekülg uuesti</translation> <translation id="723171743924126238">Kujutiste valimine</translation> <translation id="7243308994586599757">Valikud on saadaval ekraani allosas</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> on valitud</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Ajavahemik</translation> <translation id="7851858861565204677">Muud seadmed</translation> <translation id="7854964836418414587">Sule jaotis Rohkem sarnaseid</translation> +<translation id="7871791972254842204">Lugege domeenil <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> nõudeid ja tingimusi ning nõustuge nendega hiljem</translation> <translation id="7875915731392087153">Looge meil</translation> <translation id="7876243839304621966">Eemalda kõik</translation> <translation id="7882131421121961860">Ajalugu ei leitud</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Taasta</translation> <translation id="8209050860603202033">Ava kujutis</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB on alla laaditud</translation> +<translation id="8232956427053453090">Säilita andmed</translation> <translation id="8249310407154411074">Teisalda kõige üles</translation> <translation id="8250920743982581267">Dokumendid</translation> <translation id="825412236959742607">Chrome eemaldas osa sisust, kuna leht kasutab liiga palju mälu.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Kaardiomaniku nimi</translation> <translation id="8604763363205185560">Aidake täiustada Chrome'i ja selle turvalisust</translation> <translation id="8609465669617005112">Liiguta üles</translation> +<translation id="8611192991944347781">Halda andmeid</translation> <translation id="8616006591992756292">Aadressil <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> võib teie Google'i kontol olla muus vormis sirvimisajalugu.</translation> <translation id="8617240290563765734">Kas avada allalaaditud sisus toodud soovitatud URL?</translation> <translation id="8636825310635137004">Vahelehtede hankimiseks oma teistest seadmetest lülitage sünkroonimine sisse.</translation> <translation id="8641930654639604085">Proovi blokeerida täiskasvanutele mõeldud saidid</translation> +<translation id="8655129584991699539">Andmeid saab kustutada Chrome’i seadetes.</translation> <translation id="8662811608048051533">Logib teid enamikult saitidelt välja.</translation> <translation id="8664979001105139458">Faili nimi on juba olemas</translation> <translation id="8676374126336081632">Tühjenda sisestus</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Otsige kontaktide hulgast</translation> <translation id="869891660844655955">Aegumiskuupäev</translation> <translation id="8719023831149562936">Seda vahelehte ei saa kiirega edastada</translation> +<translation id="8723954843026426558">Nõustun nõuete ja tingimuste, privaatsuseeskirjade ja domeeni <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> taganemisõigusega</translation> <translation id="8725066075913043281">Proovi uuesti</translation> <translation id="8728487861892616501">Rakendust kasutades nõustute Chrome’i <ph name="BEGIN_LINK1" />teenusetingimuste<ph name="END_LINK1" /> ja <ph name="BEGIN_LINK2" />privaatsusteatisega<ph name="END_LINK2" /> ning <ph name="BEGIN_LINK3" />Family Linkiga hallatavate Google'i kontode privaatsusteatisega<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Valmis</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb index 9f00fc6..aa1cd3bc 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="fa"> <translation id="1006017844123154345">باز کردن نسخه آنلاین</translation> +<translation id="1023450834687746199">دادهها را برای <ph name="APP_NAME" /> پاک کردید.</translation> <translation id="1036727731225946849">درحال افزودن <ph name="WEBAPK_NAME" />...</translation> <translation id="1041308826830691739">از وبسایتها</translation> <translation id="1049743911850919806">ناشناس</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">سابقه و تکمیل خودکار را در نوار نشانی پاک میکند.</translation> <translation id="2021896219286479412">کنترلهای سایت تمامصفحه</translation> <translation id="2038563949887743358">روشن کردن درخواست سایت رایانهای</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> دادههایی در Chrome نیز دارد</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> گیگابایت توسط سایر برنامهها</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">ضربه برای جستجو</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">ویرایش کارت</translation> <translation id="2154710561487035718">کپی نشانی وب</translation> <translation id="2156074688469523661">سایتهای باقیمانده (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">اتصال اینترنت را بررسی کنید</translation> <translation id="2197557662829090533">اجازه داده به نمایش وبسایتهایی را که بازدید کردید توسط «آسایش دیجیتالی»</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />، برنامه وب. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">ادامه دادن بهعنوان <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">انجام نشد</translation> <translation id="2781151931089541271">۱ ثانیه باقیمانده است</translation> <translation id="2784212955220061919">در «حالت ساده»، Chrome صفحهها را سریعتر بار میکند و تا ۶۰ درصد مصرف داده را کاهش میدهد. فناوری ابری Google صفحههایی را که بازدید میکنید بهینه میکند.</translation> +<translation id="2785336755839207516"><ph name="APP_NAME" /> را حذف نصب کردید.</translation> <translation id="2803478378562657435">درحال نمایش گذرواژههای ذخیرهشده و گزینههای گذرواژه</translation> <translation id="2810645512293415242">صفحه سادهشده برای ذخیره دادهها و بارگیری با سرعت بیشتر.</translation> <translation id="281504910091592009">در <ph name="BEGIN_LINK" />حساب Google<ph name="END_LINK" /> خود گذرواژههای ذخیرهشده را مشاهده و مدیریت کنید</translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">نمایش دادن اطلاعات</translation> <translation id="3123473560110926937">در برخی سایتها مسدود میشود</translation> <translation id="3137521801621304719">خروج از حالت ناشناس</translation> +<translation id="3143515551205905069">لغو همگامسازی</translation> <translation id="3148434565183091099">برای اینکه نشانکها را در همه دستگاههایتان دریافت کنید به سیستم Chrome وارد شوید.</translation> <translation id="3157842584138209013">با استفاده از دکمه «گزینههای بیشتر»، ببینید چه مقدار داده صرفهجویی کردهاید</translation> <translation id="3166827708714933426">میانبرهای پنجره و برگه</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">بارگیری تصویر</translation> <translation id="3269956123044984603">برای دسترسی به برگهها از دستگاههای دیگرتان، «همگامسازی خودکار دادهها» را در تنظیمات حساب Android روشن کنید.</translation> <translation id="3282568296779691940">ورود به Chrome</translation> +<translation id="3288003805934695103">تازهسازی صفحه</translation> <translation id="32895400574683172">اعلانها مجاز هستند</translation> <translation id="3295530008794733555">سریعتر مرور کنید. از داده کمتری استفاده کنید.</translation> <translation id="3295602654194328831">پنهان کردن اطلاعات</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> بارگیری حذف شد</translation> <translation id="3819562311292413223">بارگیری مقالههایی برای شما</translation> <translation id="3822502789641063741">فضای ذخیره سایت پاک شود؟</translation> +<translation id="385051799172605136">بازگشت</translation> <translation id="3859306556332390985">جستجو به جلو</translation> <translation id="3894427358181296146">افزودن پوشه</translation> <translation id="3895926599014793903">فعال کردن اجباری بزرگنمایی</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">ورود به سیستم</translation> <translation id="395206256282351086">پیشنهادهای جستجو و سایت غیرفعال است</translation> <translation id="3955193568934677022">به سایتها اجازه داده شود محتوای محافظتشده پخش کنند (توصیه میشود)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{وقتی آماده شدید، Chrome صفحه را بار میکند}one{وقتی آماده شدید، Chrome صفحهها را بار میکند}other{وقتی آماده شدید، Chrome صفحهها را بار میکند}}</translation> <translation id="3963007978381181125">رمزگذاری عبارت ورود شامل روشهای پرداخت و نشانیهای موجود در Google Pay نمیشود. فقط افرادی که عبارت عبورتان را داشته باشند میتوانند دادههای رمزگذاریشدهتان را بخوانند. عبارت عبور به Google ارسال یا در سرورهای آن ذخیره نمیشود. اگر عبارت عبورتان را فراموش کنید یا بخواهید این تنظیم را تغییر دهید، باید همگامسازی را بازنشانی کنید. <ph name="BEGIN_LINK" />بیشتر بدانید<ph name="END_LINK" /></translation> <translation id="3967822245660637423">بارگیری کامل شد</translation> <translation id="397583555483684758">همگامسازی متوقف شده است</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">رسانه</translation> <translation id="4278390842282768270">مجاز است</translation> <translation id="429312253194641664">سایتی درحال پخش رسانه است</translation> +<translation id="4298388696830689168">سایتهای مرتبط</translation> <translation id="4307992518367153382">موارد اصلی</translation> <translation id="4314815835985389558">مدیریت همگامسازی</translation> <translation id="4351244548802238354">بستن کادر گفتگو</translation> @@ -698,6 +705,7 @@ <translation id="6232535412751077445">فعال کردن «ردیابی نشود» به این معنی است که درخواستی به ترافیک مرور شما اضافه میشود. هر گونه اثری به این بستگی دارد که وبسایت به درخواست پاسخ میدهد یا نه و درخواست چگونه تفسیر میشود. مثلاً ممکن است برخی از وبسایتها در پاسخ به این درخواست، آگهیهایی نشان دهند که بر اساس سایر وبسایتهایی که دیدن کردهاید نیستند. بسیاری از وبسایتها همچنان دادههای محصول مرور شما را جمعآوری و استفاده میکنند — مثلاً برای بهبود امنیت، ارائه محتوا، آگهیها و توصیهها و برای ایجاد آمارهای گزارشدهی.</translation> +<translation id="624789221780392884">بهروزرسانی آماده است</translation> <translation id="6255999984061454636">پیشنهادهای محتوا</translation> <translation id="6277522088822131679">در چاپ صفحه مشکلی پیش آمد. لطفاً دوباره امتحان کنید.</translation> <translation id="6295158916970320988">همه سایتها</translation> @@ -733,6 +741,7 @@ <translation id="6475951671322991020">بارگیری ویدیو</translation> <translation id="6482749332252372425">بهدلیل نبودن فضای ذخیرهسازی، بارگیری <ph name="FILE_NAME" /> انجام نشد.</translation> <translation id="6496823230996795692">برای استفاده از <ph name="APP_NAME" /> برای اولین بار، لطفاً به اینترنت وصل شوید.</translation> +<translation id="6508722015517270189">Chrome را راهاندازی مجدد کنید</translation> <translation id="6527303717912515753">اشتراکگذاری</translation> <translation id="6534565668554028783">پاسخ Google بیش از حد طول کشیده است</translation> <translation id="6538442820324228105"><ph name="GBS" /> گیگابایت بارگیری شد</translation> @@ -831,7 +840,6 @@ <translation id="7189372733857464326">در انتظار «سرویسهای Google Play» برای اتمام بهروزرسانی است</translation> <translation id="7189598951263744875">در حال اشتراکگذاری...</translation> <translation id="7191430249889272776">برگه در پسزمینه باز شد.</translation> -<translation id="7221869452894271364">تازهسازی این صفحه</translation> <translation id="723171743924126238">انتخاب تصاویر</translation> <translation id="7243308994586599757">گزینهها در نزدیک پایین صفحه نمایش در دسترس هستند</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> مورد انتخاب شد</translation> @@ -918,6 +926,7 @@ <translation id="784934925303690534">محدوده زمانی</translation> <translation id="7851858861565204677">دستگاههای دیگر</translation> <translation id="7854964836418414587">بستن «موارد دیگر شبیه به این»</translation> +<translation id="7871791972254842204">خواندن و موافقت با شرایط خدمات مربوط به <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> در فرصتی دیگر</translation> <translation id="7875915731392087153">ایجاد ایمیل</translation> <translation id="7876243839304621966">حذف همه</translation> <translation id="7882131421121961860">هیچ سابقهای پیدا نشد</translation> @@ -968,6 +977,7 @@ <translation id="8200772114523450471">ازسرگیری</translation> <translation id="8209050860603202033">باز کردن تصویر</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> گیگابایت بارگیری شد</translation> +<translation id="8232956427053453090">نگهداشتن داده</translation> <translation id="8249310407154411074">انتقال به بالا</translation> <translation id="8250920743982581267">اسناد</translation> <translation id="825412236959742607">این صفحه حافظه خیلی زیادی استفاده میکند، بههمیندلیل Chrome برخی از محتوا را پاک کرد.</translation> @@ -1021,10 +1031,12 @@ <translation id="860043288473659153">نام صاحب کارت</translation> <translation id="8604763363205185560">کمک به بهبود Chrome و امنیت آن</translation> <translation id="8609465669617005112">انتقال به بالا</translation> +<translation id="8611192991944347781">مدیریت دادهها</translation> <translation id="8616006591992756292">ممکن است حساب Google شما اشکال دیگری از سابقه مرور در <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> داشته باشد.</translation> <translation id="8617240290563765734">نشانی وب مشخص شده در محتوای بارگیریشده باز شود؟</translation> <translation id="8636825310635137004">برای دسترسی به برگههایتان در دستگاههای دیگر، همگامسازی را روشن کنید.</translation> <translation id="8641930654639604085">سایتهای مخصوص بزرگسالان مسدود شوند</translation> +<translation id="8655129584991699539">میتوانید دادهها را در تنظیمات Chrome پاک کنید</translation> <translation id="8662811608048051533">شما را از سیستم اکثر سایتها خارج میکند.</translation> <translation id="8664979001105139458">نام فایل از قبل وجود دارد</translation> <translation id="8676374126336081632">پاک کردن ورودی</translation> @@ -1032,6 +1044,7 @@ <translation id="868929229000858085">جستجوی مخاطبین</translation> <translation id="869891660844655955">تاریخ انقضا</translation> <translation id="8719023831149562936">انتقال برگه کنونی با پرتو ممکن نیست</translation> +<translation id="8723954843026426558">با شرایط خدمات، خطمشی رازداری و حق فسخ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> موافقت میکنم</translation> <translation id="8725066075913043281">سعی مجدد</translation> <translation id="8728487861892616501">درصورت استفاده از این برنامه، با <ph name="BEGIN_LINK1" />شرایط خدمات<ph name="END_LINK1" /> و <ph name="BEGIN_LINK2" />اعلان حریم خصوصی<ph name="END_LINK2" /> و <ph name="BEGIN_LINK3" />اعلان حریم خصوصی برای حسابهای Google مدیریتشده با Family Link<ph name="END_LINK3" /> مربوط به Chrome موافقت میکنید.</translation> <translation id="8730621377337864115">تمام</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb index c96f25d..9947449 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="fi"> <translation id="1006017844123154345">Avaa verkkoversio</translation> +<translation id="1023450834687746199">Olet poistanut datan sovelluksesta <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">Lisätään <ph name="WEBAPK_NAME" />…</translation> <translation id="1041308826830691739">Verkkosivustoilta</translation> <translation id="1049743911850919806">Incognito</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Tyhjentää historian ja osoitepalkin automaattiset täydennykset.</translation> <translation id="2021896219286479412">Ohjaimet koko näytön tilassa</translation> <translation id="2038563949887743358">Ota käyttöön Käytä tietokoneversiota</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> sisältää dataa myös Chromessa</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> Gt muita sovelluksia</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Hae napauttamalla</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Muokkaa korttia</translation> <translation id="2154710561487035718">Kopioi URL-osoite</translation> <translation id="2156074688469523661">Jäljellä olevat sivustot (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Tarkista internetyhteytesi</translation> <translation id="2197557662829090533">Salli Digitaalisen hyvinvoinnin näyttää käyttämäsi sivustot</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, verkkosovellus. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Jatka tilillä <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">epäonnistui</translation> <translation id="2781151931089541271">1 sekunti jäljellä</translation> <translation id="2784212955220061919">Yksinkertaistetussa tilassa Chrome lataa sivuja nopeammin ja käyttää jopa 60 prosenttia vähemmän dataa. Googlen pilviteknologia optimoi sivut, joilla käyt.</translation> +<translation id="2785336755839207516">Olet poistanut sovelluksen <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Näytetään tallennetut salasanat ja salasana-asetukset</translation> <translation id="2810645512293415242">Yksinkertaistettu sivu, joka säästää dataa ja latautuu nopeammin.</translation> <translation id="281504910091592009">Katso ja ylläpidä <ph name="BEGIN_LINK" />Google-tilille<ph name="END_LINK" /> tallennettuja salasanoja</translation> @@ -278,11 +280,12 @@ <translation id="305593374596241526">Sijainti on pois käytöstä. Voit ottaa sen käyttöön <ph name="BEGIN_LINK" />Android-asetuksista<ph name="END_LINK" />.</translation> <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> kirjanmerkki}other{<ph name="BOOKMARKS_COUNT_MANY" /> kirjanmerkkiä}}</translation> <translation id="307908932405420782">Muita artikkeleita ilmestyy pian. Nauti aamustasi!</translation> -<translation id="3089395242580810162">Avaa incognito-välilehdessä</translation> +<translation id="3089395242580810162">Avaa incognito-välilehdellä</translation> <translation id="311456632243022227">Useita linkkejä avattu Chromessa</translation> <translation id="3115898365077584848">Näytä tiedot</translation> <translation id="3123473560110926937">Estetty tietyillä sivustoilla</translation> <translation id="3137521801621304719">Poistu incognito-tilasta</translation> +<translation id="3143515551205905069">Peruuta synkronointi</translation> <translation id="3148434565183091099">Kirjaudu sisään Chromeen, niin voit käyttää kirjanmerkkejäsi kaikilla laitteilla.</translation> <translation id="3157842584138209013">Lisäasetukset-painiketta klikkaamalla voit katsoa, kuinka paljon dataa olet säästänyt.</translation> <translation id="3166827708714933426">Välilehti- ja ikkunapikanäppäimet</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Lataa kuva</translation> <translation id="3269956123044984603">Ota tietojen automaattinen synkronointi käyttöön Androidin tiliasetuksissa, niin voit käyttää välilehtiäsi kaikilla laitteilla.</translation> <translation id="3282568296779691940">Kirjaudu Chromeen</translation> +<translation id="3288003805934695103">Lataa sivu uudelleen.</translation> <translation id="32895400574683172">Ilmoitukset sallitaan</translation> <translation id="3295530008794733555">Selaa nettiä nopeammin. Käytä vähemmän dataa.</translation> <translation id="3295602654194328831">Piilota tiedot</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> latausta poistettiin.</translation> <translation id="3819562311292413223">Lataa sinulle valittuja artikkeleita</translation> <translation id="3822502789641063741">Poistetaanko tiedot?</translation> +<translation id="385051799172605136">Edellinen</translation> <translation id="3859306556332390985">Kelaa eteenpäin</translation> <translation id="3894427358181296146">Lisää kansio</translation> <translation id="3895926599014793903">Ota zoomaus käyttöön</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Kirjaudu sisään</translation> <translation id="395206256282351086">Haku- ja sivustoehdotukset on poistettu käytöstä.</translation> <translation id="3955193568934677022">Salli sivustojen toistaa suojattua sisältöä (suositus)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome lataa sivusi, kun se on valmis}other{Chrome lataa sivusi, kun ne ovat valmiina}}</translation> <translation id="3963007978381181125">Google Payn maksutapoja tai osoitteita ei salata tunnuslauseella. Salattua dataa voidaan lukea vain tunnuslauseesi avulla. Tunnuslausetta ei lähetetä Googlelle eikä Google tallenna sitä. Jos unohdat tunnuslauseesi tai haluat muokata tätä asetusta, synkronointi täytyy nollata. <ph name="BEGIN_LINK" />Lisätietoja<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Lataus on valmis</translation> <translation id="397583555483684758">Synkronointi on lakannut toimimasta.</translation> @@ -415,7 +421,7 @@ <translation id="4170011742729630528">Palvelu ei ole käytettävissä. Yritä myöhemmin uudelleen.</translation> <translation id="4179980317383591987"><ph name="AMOUNT" /> käytetty</translation> <translation id="4181841719683918333">Kielet</translation> -<translation id="4195643157523330669">Avaa uudessa välilehdessä</translation> +<translation id="4195643157523330669">Avaa uudelle välilehdelle</translation> <translation id="4198423547019359126">Tallennussijainteja ei ole saatavilla</translation> <translation id="4209895695669353772">Ota synkronointi käyttöön, niin näet Googlen suosittelemaa yksilöllistä sisältöä</translation> <translation id="4225719675976901337">Sisältöä ei löydy</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Media</translation> <translation id="4278390842282768270">Sallittu</translation> <translation id="429312253194641664">Sivusto toistaa mediaa</translation> +<translation id="4298388696830689168">Linkitetyt sivustot</translation> <translation id="4307992518367153382">Perustiedot</translation> <translation id="4314815835985389558">Synkronointiasetusten muokkaus</translation> <translation id="4351244548802238354">Sulje ikkuna</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Do Not Track -toiminnon käyttöönotto tarkoittaa sitä, että selausliikenteeseesi sisällytetään pyyntö. Sen vaikutus riippuu siitä, vastaako verkkosivusto pyyntöön ja miten pyyntöä tulkitaan. Jotkin verkkosivustot voivat vastata tähän pyyntöön esimerkiksi näyttämällä sinulle mainoksia, jotka eivät perustu muihin vierailemiisi verkkosivustoihin. Monet sivustot keräävät ja käyttävät silti edelleen selaustietojasi – esimerkiksi turvallisuuden parantamiseen, sisällön, mainosten ja suositusten tarjoamiseen sekä raportointitilastojen luomiseen.</translation> +<translation id="624789221780392884">Päivitys on valmis</translation> <translation id="6255999984061454636">Sisältöehdotukset</translation> <translation id="6277522088822131679">Sivua tulostettaessa tapahtui virhe. Yritä uudelleen.</translation> <translation id="6295158916970320988">Kaikki sivustot</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Lataa video</translation> <translation id="6482749332252372425">Tiedoston <ph name="FILE_NAME" /> lataus epäonnistui, koska tallennustila ei riitä.</translation> <translation id="6496823230996795692">Muodosta internetyhteys, ennen kuin <ph name="APP_NAME" /> on käytössäsi ensimmäisen kerran.</translation> +<translation id="6508722015517270189">Käynnistä Chrome uudelleen.</translation> <translation id="6527303717912515753">Jaa</translation> <translation id="6534565668554028783">Google ei vastannut riittävän nopeasti.</translation> <translation id="6538442820324228105">Ladattu: <ph name="GBS" /> Gt</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Odotetaan Google Play Palveluiden päivittymistä</translation> <translation id="7189598951263744875">Jaa...</translation> <translation id="7191430249889272776">Välilehti avattiin taustalla.</translation> -<translation id="7221869452894271364">Lataa tämä sivu uudelleen</translation> <translation id="723171743924126238">Valitse kuvat</translation> <translation id="7243308994586599757">Asetukset löytyvät näytön alalaidasta.</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> valittu</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Aikaväli</translation> <translation id="7851858861565204677">Muut laitteet</translation> <translation id="7854964836418414587">Sulje Samanlaisia</translation> +<translation id="7871791972254842204">Lue ja hyväksy verkkosivuston <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> käyttöehdot myöhemmin</translation> <translation id="7875915731392087153">Luo sähköposti</translation> <translation id="7876243839304621966">Poista kaikki</translation> <translation id="7882131421121961860">Historiaa ei löytynyt.</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Jatka</translation> <translation id="8209050860603202033">Avaa kuva</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> Gt ladattu</translation> +<translation id="8232956427053453090">Säilytä data</translation> <translation id="8249310407154411074">Siirrä ylimmäksi</translation> <translation id="8250920743982581267">Dokumentit</translation> <translation id="825412236959742607">Tämä sivu käyttää liikaa muistia, joten Chrome poisti osan sisällöstä.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Kortinhaltijan nimi</translation> <translation id="8604763363205185560">Auta parantamaan Chromea ja sen turvallisuutta</translation> <translation id="8609465669617005112">Siirrä ylös</translation> +<translation id="8611192991944347781">Ylläpidä dataa</translation> <translation id="8616006591992756292">Google-tililläsi voi olla muita selaushistoriatietoja osoitteessa <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Avataanko ladatussa sisällössä määritetty ehdotettu URL-osoite?</translation> <translation id="8636825310635137004">Ota synkronointi käyttöön, niin voit käyttää välilehtiäsi kaikilla laitteilla.</translation> <translation id="8641930654639604085">Pyri estämään aikuisille tarkoitetut sivustot</translation> +<translation id="8655129584991699539">Voit tyhjentää datan Chromen asetuksissa</translation> <translation id="8662811608048051533">Kirjaa sinut ulos useimmilta sivustoilta.</translation> <translation id="8664979001105139458">Tiedoston nimi on jo käytössä</translation> <translation id="8676374126336081632">Tyhjennä teksti</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Hae yhteystiedoistasi</translation> <translation id="869891660844655955">Vanhenemispäivämäärä</translation> <translation id="8719023831149562936">Nykyistä välilehteä ei voi jakaa</translation> +<translation id="8723954843026426558">Hyväksyn palvelun <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> käyttöehdot, tietosuojakäytännön ja peruutusoikeuden.</translation> <translation id="8725066075913043281">Yritä uudelleen</translation> <translation id="8728487861892616501">Käyttämällä tätä sovellusta hyväksyt Chromen <ph name="BEGIN_LINK1" />käyttöehdot<ph name="END_LINK1" /> ja <ph name="BEGIN_LINK2" />tietosuojailmoituksen<ph name="END_LINK2" /> sekä <ph name="BEGIN_LINK3" />Family Linkin kautta hallittavia Google-tilejä koskevan tietosuojailmoituksen<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Valmis</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb index e845d8f..f1decf5f 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="fil"> <translation id="1006017844123154345">Buksan Online</translation> +<translation id="1023450834687746199">Na-clear mo ang data para sa <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">Idinaragdag ang <ph name="WEBAPK_NAME" />...</translation> <translation id="1041308826830691739">Mula sa mga website</translation> <translation id="1049743911850919806">Incognito</translation> @@ -28,7 +29,7 @@ <translation id="1197267115302279827">Ilipat ang mga bookmark</translation> <translation id="119944043368869598">I-clear lahat</translation> <translation id="1201402288615127009">Susunod</translation> -<translation id="1204037785786432551">I-download ang link</translation> +<translation id="1204037785786432551">Link sa pag-download</translation> <translation id="1206892813135768548">Kopyahin ang text ng link</translation> <translation id="1208340532756947324">Para mag-sync at mag-personalize sa mga device, i-on ang pag-sync</translation> <translation id="1209206284964581585">Itago sa ngayon</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Kini-clear ang history at mga awtomatikong pagkumpleto sa address bar.</translation> <translation id="2021896219286479412">Control ng full screen sa site</translation> <translation id="2038563949887743358">I-on ang Hilingin ang site sa desktop</translation> +<translation id="204321170514947529">May data rin ang <ph name="APP_NAME" /> sa Chrome</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB na iba pang mga app</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Mag-tap upang Maghanap</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">I-edit ang card</translation> <translation id="2154710561487035718">Kopyahin ang URL</translation> <translation id="2156074688469523661">Mga natitirang site (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Suriin ang iyong koneksyon sa internet</translation> <translation id="2197557662829090533">Payagan ang Digital Wellness na ipakita ang mga website na binisita mo</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, web app. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Magpatuloy bilang si <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">nabigo</translation> <translation id="2781151931089541271">1 segundo na lang ang natitira</translation> <translation id="2784212955220061919">Sa Lite mode, mas mabilis na nilo-load ng Chrome ang mga page at mas kaunti nang 60 porsyento ang ginagamit nitong data. Ino-optimize ng cloud technology ng Google ang mga page na binibisita mo.</translation> +<translation id="2785336755839207516">Na-uninstall mo ang <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Ipinapakita ang mga naka-save na password at mga opsyon sa password</translation> <translation id="2810645512293415242">Pinasimple ang page upang ma-save ang data at mag-load nang mas mabilis.</translation> <translation id="281504910091592009">Tingnan at pamahalaan ang mga naka-save na password sa iyong <ph name="BEGIN_LINK" />Google Account<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Ipakita ang Impormasyon</translation> <translation id="3123473560110926937">Naka-block sa ilang site</translation> <translation id="3137521801621304719">Umalis sa mode na incognito</translation> +<translation id="3143515551205905069">Kanselahin ang pag-sync</translation> <translation id="3148434565183091099">Upang mailagay ang iyong mga bookmark sa lahat ng iyong device, mag-sign in sa Chrome.</translation> <translation id="3157842584138209013">Tingnan kung gaano karaming data ang iyong natipid sa button ng Higit Pang Opsyon</translation> <translation id="3166827708714933426">Mga shortcut ng tab at window</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">I-load ang larawan</translation> <translation id="3269956123044984603">Upang makuha ang iyong mga tab mula sa iba mo pang mga device, i-on ang "I-auto sync ang data" sa mga setting ng Android account.</translation> <translation id="3282568296779691940">Mag-sign in sa Chrome</translation> +<translation id="3288003805934695103">I-reload ang page</translation> <translation id="32895400574683172">Pinapayagan ang mga notification</translation> <translation id="3295530008794733555">Mag-browse nang mas mabilis. Gumamit ng mas kaunting data.</translation> <translation id="3295602654194328831">Itago ang Impormasyon</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326">Na-delete ang <ph name="NUMBER_OF_DOWNLOADS" /> (na) pag-download</translation> <translation id="3819562311292413223">Mag-download ng mga artikulo para sa iyo</translation> <translation id="3822502789641063741">I-clear ang storage ng site?</translation> +<translation id="385051799172605136">Bumalik</translation> <translation id="3859306556332390985">Maghanap nang pasulong</translation> <translation id="3894427358181296146">Magdagdag ng folder</translation> <translation id="3895926599014793903">Puwersahang i-enable ang zoom</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Mag-sign in</translation> <translation id="395206256282351086">Naka-disable ang mga suhestyon sa paghahanap at site</translation> <translation id="3955193568934677022">Pahintulutan ang mga site na mag-play ng pinoprotektahang content (inirerekomenda)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Ilo-load ng Chrome ang iyong page kapag handa na}one{Ilo-load ng Chrome ang iyong mga page kapag handa na}other{Ilo-load ng Chrome ang iyong mga page kapag handa na}}</translation> <translation id="3963007978381181125">Hindi kasama sa pag-encrypt ng passphrase ang mga paraan ng pagbabayad at address mula sa Google Pay. Ang tao lang na may alam ng iyong passphrase ang makakabasa sa naka-encrypt mong data. Hindi ipinapadala sa Google ang passphrase at hindi nito ito sino-store. Kung makalimutan mo ang iyong passphrase o gusto mong baguhin ang setting na ito, kakailanganin mong i-reset ang pag-sync. <ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Tapos na ang pag-download</translation> <translation id="397583555483684758">Huminto ang pag-sync</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Media</translation> <translation id="4278390842282768270">Pinapayagan</translation> <translation id="429312253194641664">May site na nagpe-play ng media</translation> +<translation id="4298388696830689168">Mga naka-link na site</translation> <translation id="4307992518367153382">Mga Pangunahing Kaalaman</translation> <translation id="4314815835985389558">Pamahalaan ang pag-sync</translation> <translation id="4351244548802238354">Isara ang dialog</translation> @@ -683,7 +690,7 @@ <translation id="614940544461990577">Subukang:</translation> <translation id="6154478581116148741">I-on ang lock ng screen sa Mga Setting upang i-export ang iyong mga password mula sa device na ito</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> natipid sa data</translation> -<translation id="6165508094623778733">Matuto nang higit pa</translation> +<translation id="6165508094623778733">Matuto pa</translation> <translation id="6171019622954353983">Kapag nagpatuloy, sumasang-ayon kang magpapadala ang Chrome ng data mula sa Autofill ng Chrome, URL ng site, at content ng site na ito sa Google para maibigay ang serbisyong ito.\n\nBisitahin ang mga setting ng Chrome para i-off ang Google Assistant sa Chrome at Autofill ng Chrome. <ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /></translation> <translation id="6177111841848151710">Naka-block para sa kasalukuyang search engine</translation> <translation id="6177390657002841081">I-on ang Data Saver</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Kapag na-enable mo ang “Huwag Subaybayan,” magsasama ng isang kahilingan sa trapiko ng iyong pagba-browse. Ang anumang magiging epekto ay dedepende sa pagtugon at pagbibigay-kahulugan ng website sa nabanggit na kahilingan. Halimbawa, maaaring tumugon ang ilang website sa kahilingang ito sa pamamagitan ng pagpapakita sa iyo ng mga ad na hindi ibinatay sa iba pang mga nabisita mo nang website. Kokolektahin at gagamitin pa rin ng maraming website ang iyong data mula sa pagba-browse - halimbawa, upang mapahusay ang seguridad, makapagpakita ng content, mga ad at rekomendasyon, at makabuo ng mga istatistika sa pag-uulat.</translation> +<translation id="624789221780392884">Handa na ang pag-update</translation> <translation id="6255999984061454636">Mga suhestyong content</translation> <translation id="6277522088822131679">Nagkaproblema sa pag-print sa pahina. Pakisubukang muli.</translation> <translation id="6295158916970320988">Lahat ng site</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">I-download ang video</translation> <translation id="6482749332252372425">Hindi na-download ang <ph name="FILE_NAME" /> dahil kulang ang espasyo sa storage.</translation> <translation id="6496823230996795692">Upang magamit ang <ph name="APP_NAME" /> sa unang pagkakataon, kumonekta sa internet.</translation> +<translation id="6508722015517270189">I-restart ang Chrome</translation> <translation id="6527303717912515753">Ibahagi</translation> <translation id="6534565668554028783">Masyadong matagal bago nakatugon ang Google</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB ang na-download</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Hinihintay ang Mga Serbisyo ng Google Play na matapos sa pag-update</translation> <translation id="7189598951263744875">Ibahagi...</translation> <translation id="7191430249889272776">Binuksan ang tab sa background.</translation> -<translation id="7221869452894271364">I-reload ang page na ito</translation> <translation id="723171743924126238">Pumili ng mga larawan</translation> <translation id="7243308994586599757">May mga opsyon malapit sa ibaba ng screen</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> ang napili</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Sakop na oras</translation> <translation id="7851858861565204677">Iba pang mga device</translation> <translation id="7854964836418414587">Isara ang higit pang tulad nito</translation> +<translation id="7871791972254842204">Basahin at sumang-ayon sa mga tuntunin at kundisyon sa <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> sa ibang pagkakataon</translation> <translation id="7875915731392087153">Gumawa ng email</translation> <translation id="7876243839304621966">Alisin lahat</translation> <translation id="7882131421121961860">Walang nakitang history</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Resume</translation> <translation id="8209050860603202033">Buksan ang larawan</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB na mga na-download</translation> +<translation id="8232956427053453090">Panatilihin ang data</translation> <translation id="8249310407154411074">Ilipat sa itaas</translation> <translation id="8250920743982581267">Mga Dokumento</translation> <translation id="825412236959742607">Masyadong malaki ang ginagamit na memory ng page na ito kaya inalis ng Chrome ang ilang content.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Pangalan ng cardholder</translation> <translation id="8604763363205185560">Tumulong na pahusayin ang Chrome at ang seguridad nito</translation> <translation id="8609465669617005112">Lumipat</translation> +<translation id="8611192991944347781">Pamahalaan ang data</translation> <translation id="8616006591992756292">Maaaring may iba pang anyo ng history ng pag-browse ang iyong Google Account sa <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Buksan ang iminumungkahing URL na tinukoy sa na-download na content?</translation> <translation id="8636825310635137004">Upang makuha ang iyong mga tab mula sa iba mo pang mga device, i-on ang pag-sync.</translation> <translation id="8641930654639604085">Subukang i-block ang mga site na para sa mga nasa hustong gulang</translation> +<translation id="8655129584991699539">Maaari mong i-clear ang data sa Mga Setting ng Chrome</translation> <translation id="8662811608048051533">Nagsa-sign out sa iyo sa karamihan ng site.</translation> <translation id="8664979001105139458">May ganito nang pangalan ng file</translation> <translation id="8676374126336081632">I-clear ang input</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Maghanap sa iyong mga contact</translation> <translation id="869891660844655955">Expiration date</translation> <translation id="8719023831149562936">Hindi ma-beam ang kasalukuyang tab</translation> +<translation id="8723954843026426558">Sumasang-ayon ako sa mga tuntunin at kundisyon, patakaran sa privacy, at karapatang umalis ng <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Muling subukan</translation> <translation id="8728487861892616501">Kapag ginamit ang application na ito, nangangahulugan ito na sumasang-ayon ka sa <ph name="BEGIN_LINK1" />Mga Tuntunin ng Serbisyo <ph name="END_LINK1" /> at <ph name="BEGIN_LINK2" />Notification ng Privacy<ph name="END_LINK2" /> ng Chrome, at sa <ph name="BEGIN_LINK3" />Notification ng Privacy para sa Mga Google Account na Pinamamahalaan gamit ang Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Tapos na</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb index 81e30eb5b..50db8d6 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="fr"> <translation id="1006017844123154345">Ouvrir la version en ligne</translation> +<translation id="1023450834687746199">Vous avez effacé les données de l'application <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">Ajout de <ph name="WEBAPK_NAME" />…</translation> <translation id="1041308826830691739">À partir de sites Web</translation> <translation id="1049743911850919806">Navigation privée</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Efface l'historique et les saisies semi-automatiques dans la barre d'adresse.</translation> <translation id="2021896219286479412">Commandes du site en plein écran</translation> <translation id="2038563949887743358">Activer "Voir version ordinateur"</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> a également des données dans Chrome</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> Go par d'autres applis</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Appuyer pour rechercher</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Modifier la carte</translation> <translation id="2154710561487035718">Copier l'URL</translation> <translation id="2156074688469523661">Sites restants (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Vérifiez votre connexion Internet</translation> <translation id="2197557662829090533">Autoriser Bien-être numérique à afficher les sites Web que vous avez consultés.</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, application Web : <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Continuer en tant que <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">échec</translation> <translation id="2781151931089541271">1 seconde restante</translation> <translation id="2784212955220061919">En mode simplifié, Chrome charge les pages plus rapidement et consomme jusqu'à 60 pour cent de données en moins. La technologie cloud de Google optimise les pages que vous consultez.</translation> +<translation id="2785336755839207516">Vous avez désinstallé <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Affichage des mots de passe enregistrés et des options de mot de passe</translation> <translation id="2810645512293415242">Page simplifiée pour économiser des données et accélérer le chargement.</translation> <translation id="281504910091592009">Afficher et gérer les mots de passe enregistrés dans votre <ph name="BEGIN_LINK" />compte Google<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Afficher les informations</translation> <translation id="3123473560110926937">Annonces bloquées sur certains sites</translation> <translation id="3137521801621304719">Désactiver le mode navigation privée</translation> +<translation id="3143515551205905069">Annuler la synchronisation</translation> <translation id="3148434565183091099">Connectez-vous à Chrome pour synchroniser vos favoris sur tous vos appareils.</translation> <translation id="3157842584138209013">Découvrez la quantité de données économisées en cliquant sur le bouton "Plus d'options"</translation> <translation id="3166827708714933426">Raccourcis liés aux onglets et aux fenêtres</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Charger l'image</translation> <translation id="3269956123044984603">Activez l'option "Synchro auto des données" dans les paramètres Android de votre compte Google pour accéder à vos onglets sur vos autres appareils.</translation> <translation id="3282568296779691940">Connectez-vous à Chrome</translation> +<translation id="3288003805934695103">Recharger la page</translation> <translation id="32895400574683172">Les notifications sont autorisées</translation> <translation id="3295530008794733555">Naviguez plus rapidement en consommant moins de données</translation> <translation id="3295602654194328831">Masquer les informations</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> téléchargements supprimés</translation> <translation id="3819562311292413223">Télécharger des articles pour vous</translation> <translation id="3822502789641063741">Suppr. données de site ?</translation> +<translation id="385051799172605136">Retour</translation> <translation id="3859306556332390985">Avance rapide</translation> <translation id="3894427358181296146">Ajouter un dossier</translation> <translation id="3895926599014793903">Forcer l'activation du zoom</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Ouvrir une session</translation> <translation id="395206256282351086">Suggestions de recherches et de sites désactivées</translation> <translation id="3955193568934677022">Autoriser les sites à lire les contenus protégés (recommandé)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome chargera votre page dès qu'elle sera prête}one{Chrome chargera votre page dès qu'elle sera prête}other{Chrome chargera vos pages dès qu'elles seront prêtes}}</translation> <translation id="3963007978381181125">Le chiffrement par phrase secrète ne s'applique pas aux modes de paiement et adresses Google Pay. Seule une personne connaissant votre phrase secrète peut lire vos données chiffrées. La phrase secrète ne nous est pas envoyée et nous ne la stockons pas. Si vous l'oubliez ou si vous souhaitez modifier ce paramètre, vous devrez réinitialiser la synchronisation. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Téléchargement terminé</translation> <translation id="397583555483684758">La synchronisation s'est arrêtée.</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Médias</translation> <translation id="4278390842282768270">Autorisé</translation> <translation id="429312253194641664">Un site est en train de lire un contenu multimédia</translation> +<translation id="4298388696830689168">Sites associés</translation> <translation id="4307992518367153382">Options de base</translation> <translation id="4314815835985389558">Gérer la synchronisation</translation> <translation id="4351244548802238354">Fermer la boîte de dialogue</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Si vous interdisez le suivi, une demande sera incluse dans le trafic lié à votre navigation. Les résultats obtenus dépendent de la réponse du site (s'il répond ou non) et de la manière dont il interprète la demande. Par exemple, certains sites Web peuvent répondre à cette demande en diffusant des annonces qui ne sont pas déterminées en fonction des autres sites Web que vous avez consultés. Toutefois, nombre d'entre eux recueillent et utilisent vos données de navigation afin, par exemple, d'améliorer la sécurité ou d'afficher du contenu, des services, des annonces et des recommandations, ou encore pour générer des rapports statistiques.</translation> +<translation id="624789221780392884">Mise à jour prête</translation> <translation id="6255999984061454636">Recommandations de contenus</translation> <translation id="6277522088822131679">Un problème est survenu lors de l'impression de la page. Veuillez réessayer.</translation> <translation id="6295158916970320988">Tous les sites</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Télécharger la vidéo</translation> <translation id="6482749332252372425">Échec du téléchargement du fichier "<ph name="FILE_NAME" />" en raison de l'espace de stockage insuffisant.</translation> <translation id="6496823230996795692">Pour utiliser <ph name="APP_NAME" /> pour la première fois, veuillez vous connecter à Internet.</translation> +<translation id="6508722015517270189">Relancez Chrome</translation> <translation id="6527303717912515753">Partager</translation> <translation id="6534565668554028783">Google a mis trop de temps à répondre</translation> <translation id="6538442820324228105"><ph name="GBS" /> Go téléchargé(s)</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">En attente de la fin de la mise à jour des services Google Play</translation> <translation id="7189598951263744875">Partager…</translation> <translation id="7191430249889272776">L'onglet a été ouvert en arrière-plan.</translation> -<translation id="7221869452894271364">Actualiser cette page</translation> <translation id="723171743924126238">Sélectionner des images</translation> <translation id="7243308994586599757">Options disponibles au bas de l'écran</translation> <translation id="7250468141469952378">Nombre d'éléments sélectionnés : <ph name="ITEM_COUNT" /></translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Période</translation> <translation id="7851858861565204677">Autres appareils</translation> <translation id="7854964836418414587">Fermer le panneau "Plus de suggestions similaires"</translation> +<translation id="7871791972254842204">Lire et accepter les conditions d'utilisation de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> plus tard</translation> <translation id="7875915731392087153">Créer un e-mail</translation> <translation id="7876243839304621966">Tout supprimer</translation> <translation id="7882131421121961860">Aucun historique trouvé</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Reprendre</translation> <translation id="8209050860603202033">Ouvrir l'image</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> Go téléchargé(s)</translation> +<translation id="8232956427053453090">Conserver les données</translation> <translation id="8249310407154411074">Déplacer vers le haut</translation> <translation id="8250920743982581267">Documents</translation> <translation id="825412236959742607">Cette page utilise trop de mémoire, Chrome a donc supprimé du contenu.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Nom du titulaire de la carte</translation> <translation id="8604763363205185560">Contribuez à l'amélioration de Chrome et de sa sécurité</translation> <translation id="8609465669617005112">Monter</translation> +<translation id="8611192991944347781">Gérer les données</translation> <translation id="8616006591992756292">Votre compte Google conserve peut-être d'autres formes d'historique de navigation sur la page <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Ouvrir l'URL suggérée indiquée dans le contenu téléchargé ?</translation> <translation id="8636825310635137004">Activez la synchronisation pour accéder à vos onglets sur vos autres appareils.</translation> <translation id="8641930654639604085">Essayer de bloquer les sites réservés aux adultes</translation> +<translation id="8655129584991699539">Vous pouvez effacer les données dans les paramètres Chrome</translation> <translation id="8662811608048051533">Vous déconnecte de la plupart des sites.</translation> <translation id="8664979001105139458">Nom de fichier déjà attribué</translation> <translation id="8676374126336081632">Effacer la saisie</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Rechercher des contacts</translation> <translation id="869891660844655955">Date d'expiration</translation> <translation id="8719023831149562936">Impossible de partager l'onglet actuel.</translation> +<translation id="8723954843026426558">J'accepte les conditions d'utilisation, les règles de confidentialité de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, et j'ai connaissance de mon droit de rétractation.</translation> <translation id="8725066075913043281">Réessayer</translation> <translation id="8728487861892616501">En utilisant cette application, vous acceptez les <ph name="BEGIN_LINK1" />Conditions d'utilisation<ph name="END_LINK1" /> et l'<ph name="BEGIN_LINK2" />Avis de confidentialité<ph name="END_LINK2" /> de Chrome, ainsi que l'<ph name="BEGIN_LINK3" />Avis de confidentialité relatif aux comptes Google gérés dans Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">OK</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_gu.xtb b/chrome/android/java/strings/translations/android_chrome_strings_gu.xtb index 65bb5de7..c2919aca 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_gu.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_gu.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="gu"> <translation id="1006017844123154345">ઑનલાઇન ખોલો</translation> +<translation id="1023450834687746199">તમે <ph name="APP_NAME" /> માટેનો ડેટા સાફ કર્યો છે.</translation> <translation id="1036727731225946849"><ph name="WEBAPK_NAME" /> ઉમેરી રહ્યાં છીએ…</translation> <translation id="1041308826830691739">વેબસાઇટ પરથી</translation> <translation id="1049743911850919806">છૂપી</translation> @@ -24,11 +25,11 @@ <translation id="1172593791219290334">સ્ટાર્ટઅપ પેજ</translation> <translation id="1175310183703641346">તમારા બુકમાર્ક, ઇતિહાસ, પાસવર્ડ અને અન્ય બાબતો હવેથી Google એકાઉન્ટ પર સિંક થશે નહીં</translation> <translation id="1178581264944972037">થોભો</translation> -<translation id="1181037720776840403">દૂર કરો</translation> +<translation id="1181037720776840403">કાઢી નાખો</translation> <translation id="1197267115302279827">બુકમાર્ક્સ ખસેડો</translation> <translation id="119944043368869598">બધા દૂર કરો</translation> <translation id="1201402288615127009">આગલું</translation> -<translation id="1204037785786432551">ડાઉનલોડ કરો લિંક</translation> +<translation id="1204037785786432551">ડાઉનલોડ કરવાની લિંક</translation> <translation id="1206892813135768548">લિંક ટેક્સ્ટ કૉપિ કરો</translation> <translation id="1208340532756947324">સમગ્ર ઉપકરણોમાં સિંક તથા વ્યક્તિગત કરવા માટે સિંક ચાલુ કરો</translation> <translation id="1209206284964581585">હમણાં માટે છુપાવો</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">ઍડ્રેસ બારમાં ઇતિહાસ અને સ્વતઃપૂર્ણ કરવું સાફ કરો.</translation> <translation id="2021896219286479412">પૂર્ણ સ્ક્રીન સાઇટ નિયંત્રણો</translation> <translation id="2038563949887743358">વિનંતી ડેસ્કટૉપ સાઇટ ચાલુ કરો</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> નો ડેટા Chromeમાં પણ છે</translation> <translation id="2045104531052923016">અન્ય અૅપ્લિકેશનો દ્વારા <ph name="GIGABYTES" /> GB</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">શોધવા માટે ટેપ કરો</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">કાર્ડમાં ફેરફાર કરો</translation> <translation id="2154710561487035718">URL ની કૉપિ કરો</translation> <translation id="2156074688469523661">બાકી સાઇટ (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">તમારું ઇન્ટરનેટ કનેક્શન ચેક કરો</translation> <translation id="2197557662829090533">ડિજિટલ લાઇફસ્ટાઇલને તમે મુલાકાત લીધેલી વેબસાઇટ બતાવવાની મંજૂરી આપો</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, વેબ ઍપ. <ph name="APP_URL" /></translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" /> તરીકે ચાલુ રાખો</translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">નિષ્ફળ થયું</translation> <translation id="2781151931089541271">1 સેકંડ બાકી</translation> <translation id="2784212955220061919">લાઇટ મોડમાં, Chrome પેજને વધુ ઝડપથી લોડ કરે છે અને તે 60 ટકા ઓછા ડેટાનો ઉપયોગ કરે છે. Googleની ક્લાઉડ ટેક્નોલોજી તમે મુલાકાત લો છો તે પેજને ઑપ્ટિમાઇઝ કરે છે.</translation> +<translation id="2785336755839207516"><ph name="APP_NAME" /> તમે અનઇન્સ્ટૉલ કરી છે.</translation> <translation id="2803478378562657435">સાચવેલા પાસવર્ડ અને પાસવર્ડ માટેના વિકલ્પો બતાવી રહ્યા છીએ</translation> <translation id="2810645512293415242">ડેટા બચાવવા અને વધુ ઝડપથી પેજ લોડ કરવા માટે પેજ સરળ બનાવ્યું.</translation> <translation id="281504910091592009">સાચવેલા પાસવર્ડ તમારા <ph name="BEGIN_LINK" />Google એકાઉન્ટ<ph name="END_LINK" />માં જુઓ અને મેનેજ કરો</translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">માહિતી બતાવો</translation> <translation id="3123473560110926937">કેટલીક સાઇટ પર બ્લૉક કરેલ</translation> <translation id="3137521801621304719">છુપા મોડને છોડો</translation> +<translation id="3143515551205905069">સિંક કરવાનું રદ કરો</translation> <translation id="3148434565183091099">તમારા સમગ્ર ઉપકરણો પર તમારા બુકમાર્ક્સ મેળવવા માટે, Chrome માં સાઇન ઇન કરો.</translation> <translation id="3157842584138209013">વધુ વિકલ્પો બટનની મદદથી તમે કેટલો ડેટા સાચવ્યો તે જુઓ</translation> <translation id="3166827708714933426">ટૅબ અને વિંડો શૉર્ટકટ્સ</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">છબી લોડ કરો</translation> <translation id="3269956123044984603">તમારા બીજા ડિવાઇસ પરથી તમારા ટૅબ્સ મેળવવા માટે, Android એકાઉન્ટ સેટિંગમાં "સ્વતઃ-સિંક કરો ડેટા" ચાલુ કરો.</translation> <translation id="3282568296779691940">Chrome માં સાઇન ઇન કરો</translation> +<translation id="3288003805934695103">પૃષ્ઠ ફરીથી લોડ કરીને</translation> <translation id="32895400574683172">નોટિફિકેશનોની મંજૂરી છે</translation> <translation id="3295530008794733555">વધુ ઝડપથી બ્રાઉઝ કરો. ઓછા ડેટાનો ઉપયોગ કરો.</translation> <translation id="3295602654194328831">માહિતી છુપાવો</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> ડાઉનલોડ કાઢી નાખ્યાં</translation> <translation id="3819562311292413223">તમારા માટે લેખ ડાઉનલોડ કરો</translation> <translation id="3822502789641063741">સાઇટ સ્ટોરેજ સાફ કરીએ?</translation> +<translation id="385051799172605136">પાછળ</translation> <translation id="3859306556332390985">આગળ કરો</translation> <translation id="3894427358181296146">ફોલ્ડર ઉમેરો</translation> <translation id="3895926599014793903">ફરજિયાતપૂર્વક ઝૂમ ચાલુ કરો</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">સાઇન ઇન</translation> <translation id="395206256282351086">શોધ અને સાઇટ સૂચનો બંધ છે</translation> <translation id="3955193568934677022">સાઇટને સંરક્ષિત કન્ટેન્ટ ચલાવવાની મંજૂરી આપો (ભલામણ કરેલ)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{તૈયાર હશે ત્યારે Chrome તમારું પેજ લોડ કરશે}one{તૈયાર હશે ત્યારે Chrome તમારાં પેજ લોડ કરશે}other{તૈયાર હશે ત્યારે Chrome તમારાં પેજ લોડ કરશે}}</translation> <translation id="3963007978381181125">પાસફ્રેઝ એન્ક્રિપ્શનમાં Google Payની ચુકવણી પદ્ધતિઓ અને ઍડ્રેસ સામેલ હોતા નથી. માત્ર તમારા પાસફ્રેઝ ધરાવતી કોઈ વ્યક્તિ જ તમારા એન્ક્રિપ્ટ કરેલા ડેટાને વાંચી શકે છે. Googleને પાસફ્રેઝ મોકલવામાં આવતો નથી કે તેના દ્વારા સંગ્રહિત કરવામાં આવતો નથી. જો તમે તમારો પાસફ્રેઝ ભૂલી જાઓ અથવા આ સેટિંગ બદલવા માંગતા હો, તો તમારે સિંકને રીસેટ કરવું પડશે. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation> <translation id="3967822245660637423">ડાઉનલોડ પૂર્ણ</translation> <translation id="397583555483684758">સમન્વયન એ કામ કરવાનું બંધ કરી દીધું છે</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">મીડિયા</translation> <translation id="4278390842282768270">મંજૂર</translation> <translation id="429312253194641664">સાઇટ મીડિયા ચલાવી રહી છે</translation> +<translation id="4298388696830689168">લિંક કરેલી સાઇટ</translation> <translation id="4307992518367153382">પાયાગત</translation> <translation id="4314815835985389558">સિંક મેનેજ કરો</translation> <translation id="4351244548802238354">સંવાદ બંધ કરો</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">'ટ્રૅક કરશો નહીં’ ને સક્ષમ કરવાનો અર્થ છે કે તમારા બ્રાઉઝિંગ ટ્રાફિકમાં વિનંતી શામેલ કરવામાં આવશે. કોઈ વેબસાઇટ, વિનંતી પર પ્રતિસાદ કરે છે કે નહીં અને વિનંતીનું અર્થઘટન કેવી રીતે કર્યું તેના પર કોઈ પણ અસર આધારિત હોય છે. ઉદાહરણ તરીકે, કેટલીક વેબસાઇટ, તમે મુલાકાત લીધેલી બીજા વેબસાઇટ પર આધારિત ન હોય તેવી જાહેરાતો તમને બતાવીને આ વિનંતી પર પ્રતિસાદ આપી શકે છે. ઘણી વેબસાઇટ હજી પણ તમારા બ્રાઉઝિંગ ડેટાને ભેગો કરશે અને ઉપયોગ કરશે — ઉદાહરણ તરીકે સુરક્ષાને બહેતર બનાવવા, કન્ટેન્ટ, જાહેરાતો અને ભલામણો આપવા અને રિપોર્ટિંગ આંકડા જનરેટ કરવા માટે.</translation> +<translation id="624789221780392884">અપડેટ તૈયાર</translation> <translation id="6255999984061454636">કન્ટેન્ટ માટેના સૂચનો</translation> <translation id="6277522088822131679">પૃષ્ઠને છાપવામાં સમસ્યા હતી. કૃપા કરીને ફરીથી પ્રયાસ કરો.</translation> <translation id="6295158916970320988">બધી સાઇટ્સ</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">વીડિયો ડાઉનલોડ કરો</translation> <translation id="6482749332252372425">સ્ટોરેજ સ્થાનના અભાવના કારણે <ph name="FILE_NAME" /> ડાઉનલોડ નિષ્ફળ થયું.</translation> <translation id="6496823230996795692">પહેલી વખત <ph name="APP_NAME" />નો ઉપયોગ કરવા માટે, કૃપા કરીને ઇન્ટરનેટ સાથે કનેક્ટ કરો.</translation> +<translation id="6508722015517270189">Chrome ને પુનઃપ્રારંભ કરો</translation> <translation id="6527303717912515753">શેર કરો</translation> <translation id="6534565668554028783">પ્રતિભાવ આપવા માટે Googleએ ઘણો સમય લીધો</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB ડાઉનલોડ કર્યા</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Google Play સેવાઓ દ્વારા અપડેટ થવાનું સમાપ્ત કરવાની રાહ જોવામાં આવી રહી છે</translation> <translation id="7189598951263744875">શેર કરો...</translation> <translation id="7191430249889272776">ટેબ પૃષ્ઠભૂમિમાં ખોલવામાં આવ્યું છે.</translation> -<translation id="7221869452894271364">આ પૃષ્ઠને ફરિથી લોડ કરો</translation> <translation id="723171743924126238">છબીઓ પસંદ કરો</translation> <translation id="7243308994586599757">સ્ક્રીનના તળિયા નજીક વિકલ્પો ઉપલબ્ધ છે</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" />ની પસંદગી કરી</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">સમય શ્રેણી</translation> <translation id="7851858861565204677">અન્ય ઉપકરણો</translation> <translation id="7854964836418414587">"આના જેવી વધુ" શીટ બંધ કરો</translation> +<translation id="7871791972254842204">પછીથી, <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> પરના શરતો અને નિયમોથી સંમત થાઓ</translation> <translation id="7875915731392087153">ઇમેઇલ બનાવો</translation> <translation id="7876243839304621966">બધું દૂર કરો</translation> <translation id="7882131421121961860">કોઈ ઇતિહાસ મળ્યો નથી</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">રિઝ્યુમે</translation> <translation id="8209050860603202033">છબી ખોલો</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB ડાઉનલોડ કરેલ</translation> +<translation id="8232956427053453090">ડેટા રાખો</translation> <translation id="8249310407154411074">ટોચે ખસેડો</translation> <translation id="8250920743982581267">દસ્તાવેજો</translation> <translation id="825412236959742607">આ પેજ મેમરીનો બહુ ઉપયોગ કરે છે, તેથી Chromeએ કેટલુંક કન્ટેન્ટ કાઢી નાખ્યું છે.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">કાર્ડધારકનું નામ</translation> <translation id="8604763363205185560">Chrome અને તેની સુરક્ષા બહેતર બનાવવામાં સહાય કરો</translation> <translation id="8609465669617005112">ઉપર ખસેડો</translation> +<translation id="8611192991944347781">ડેટા મેનેજ કરો</translation> <translation id="8616006591992756292">તમારા Google એકાઉન્ટમાં <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> પર બ્રાઉઝિંગ ઇતિહાસના બીજા સ્વરૂપો હોય શકે.</translation> <translation id="8617240290563765734">ડાઉનલોડ કરેલી કન્ટેન્ટમાં ઉલ્લેખિત, સૂચવેલ URL ખોલીએ?</translation> <translation id="8636825310635137004">તમારા અન્ય ઉપકરણો પરથી તમારા ટૅબ્સ મેળવવા માટે, સમન્વયન ચાલુ કરો.</translation> <translation id="8641930654639604085">વયસ્ક સાઇટને અવરોધિત કરવાનો પ્રયાસ કરો</translation> +<translation id="8655129584991699539">Chrome સેટિંગમાં તમે ડેટા સાફ કરી શકો છો</translation> <translation id="8662811608048051533">તમને મોટાભાગની સાઇટોમાંથી સાઇન આઉટ કરે છે.</translation> <translation id="8664979001105139458">ફાઇલનું નામ પહેલેથી અસ્તિત્વમાં છે</translation> <translation id="8676374126336081632">ઇનપુટ સાફ કરો</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">તમારા સંપર્કો શોધો</translation> <translation id="869891660844655955">સમાપ્તિ તારીખ</translation> <translation id="8719023831149562936">વર્તમાન ટેબને બીમ કરી શકતાં નથી</translation> +<translation id="8723954843026426558">હું <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />ના શરતો અને નિયમો, પ્રાઇવસી પૉલિસી અને પાછું ખેંચવાના અધિકારથી સંમત છું</translation> <translation id="8725066075913043281">ફરી પ્રયાસ કરો</translation> <translation id="8728487861892616501">આ ઍપ્લિકેશનનો ઉપયોગ કરીને તમે Chromeની <ph name="BEGIN_LINK1" />સેવાની શરતો<ph name="END_LINK1" /> અને <ph name="BEGIN_LINK2" />ગોપનીયતા સૂચના<ph name="END_LINK2" /> અને <ph name="BEGIN_LINK3" />Family Link દ્વારા મેનેજ થતા Google એકાઉન્ટ્સ માટેની ગોપનીયતા સૂચના<ph name="END_LINK3" /> સાથે સંમત થાઓ છો.</translation> <translation id="8730621377337864115">થઈ ગયું</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb index 7e3a684..660717bc 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="hi"> <translation id="1006017844123154345">ऑनलाइन खोलें</translation> +<translation id="1023450834687746199">आपने <ph name="APP_NAME" /> का डेटा हटा दिया है.</translation> <translation id="1036727731225946849"><ph name="WEBAPK_NAME" /> जोड़ा जा रहा है...</translation> <translation id="1041308826830691739">वेबसाइटों से</translation> <translation id="1049743911850919806">गुप्त</translation> @@ -24,7 +25,7 @@ <translation id="1172593791219290334">शुरुआती पन्ना</translation> <translation id="1175310183703641346">आपके बुकमार्क, इतिहास, पासवर्ड वगैरह अब आपके Google खाते से समन्वयित नहीं किए जाएंगे</translation> <translation id="1178581264944972037">पॉज़ करें</translation> -<translation id="1181037720776840403">निकालें</translation> +<translation id="1181037720776840403">हटाएं</translation> <translation id="1197267115302279827">बुकमार्क ले जाएं</translation> <translation id="119944043368869598">सभी साफ़ करें</translation> <translation id="1201402288615127009">आगे बढ़ें</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">इतिहास साफ़ करता है और पता बार में स्वत: पूर्णता को साफ़ करता है.</translation> <translation id="2021896219286479412">पूरी स्क्रीन के साइट नियंत्रण</translation> <translation id="2038563949887743358">अनुरोध डेस्कटॉप साइट चालू करें</translation> +<translation id="204321170514947529">Chrome में <ph name="APP_NAME" /> का डेटा भी है</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> जीबी अन्य ऐप्लिकेशन</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">खोजने के लिए टैप करें</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">कार्ड संपादित करें</translation> <translation id="2154710561487035718">URL की कॉपी बनाएं</translation> <translation id="2156074688469523661">बाकी साइटें (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">अपना इंटरनेट कनेक्शन जाँचें</translation> <translation id="2197557662829090533">'डिजिटल वेलबीइंग' को आपकी विज़िट की गई वेबसाइटें देखने दें</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, वेब ऐप. <ph name="APP_URL" /></translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" /> के रूप में जारी रखें</translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">डाउनलोड नहीं हो सका</translation> <translation id="2781151931089541271">1 सेकंड शेष</translation> <translation id="2784212955220061919">'लाइट मोड' में, Chrome पेजों को ज़्यादा तेज़ी से लोड करता है और 60 प्रतिशत तक कम डेटा इस्तेमाल करता है. Google की क्लाउड तकनीक आपके देखे गए पेज ऑप्टिमाइज़ करती है.</translation> +<translation id="2785336755839207516">आपने <ph name="APP_NAME" /> को अनइंस्टॉल कर दिया है.</translation> <translation id="2803478378562657435">सेव किए हुए पासवर्ड और पासवर्ड के विकल्प दिखाए जा रहे हैं</translation> <translation id="2810645512293415242">डेटा बचाने और तेज़ी से लोड करने के लिए आसान बनाया गया पेज.</translation> <translation id="281504910091592009">अपने <ph name="BEGIN_LINK" />Google खाते<ph name="END_LINK" /> में सेव किए गए पासवर्ड देखें और उन्हें प्रबंधित करें</translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">जानकारी दिखाएं</translation> <translation id="3123473560110926937">कुछ साइटों पर ब्लॉक कर दिया है</translation> <translation id="3137521801621304719">गुप्त मोड छोड़ें</translation> +<translation id="3143515551205905069">लिंक करना रोक दें</translation> <translation id="3148434565183091099">अपने सभी डिवाइस पर अपने बुकमार्क प्राप्त करने के लिए, Chrome में प्रवेश करें.</translation> <translation id="3157842584138209013">अधिक विकल्प बटन से देखें कि आपने कितना डेटा बचाया है</translation> <translation id="3166827708714933426">टैब और विंडो शॉर्टकट</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">चित्र लोड करें</translation> <translation id="3269956123044984603">अपने अन्य डिवाइस से अपने टैब प्राप्त करने के लिए, Android खाता सेटिंग में “डेटा स्वत: समन्वयित करें” चालू करें.</translation> <translation id="3282568296779691940">Chrome में प्रवेश करें</translation> +<translation id="3288003805934695103">पेज को पुनः लोड करें</translation> <translation id="32895400574683172">सूचनाओं की अनुमति है</translation> <translation id="3295530008794733555">तेज़ी से ब्राउज़ करें. कम डेटा इस्तेमाल करें.</translation> <translation id="3295602654194328831">जानकारी छिपाएं</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> डाउनलोड हटाए गए</translation> <translation id="3819562311292413223">अपने लिए लेख डाउनलोड करें</translation> <translation id="3822502789641063741">साइट मेमोरी साफ़ करें?</translation> +<translation id="385051799172605136">वापस</translation> <translation id="3859306556332390985">आगे जाएं</translation> <translation id="3894427358181296146">फ़ोल्डर जोड़ें</translation> <translation id="3895926599014793903">बलपूर्वक ज़ूम सक्षम करें</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">साइन इन करें</translation> <translation id="395206256282351086">सर्च और साइट सुझाव बंद हैं</translation> <translation id="3955193568934677022">साइटों को सुरक्षित सामग्री चलाने दें (अनुशंसित)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{तैयार होने पर Chrome आपका पेज लोड करेगा}one{तैयार होने पर Chrome आपके पेज लोड करेगा}other{तैयार होने पर Chrome आपके पेज लोड करेगा}}</translation> <translation id="3963007978381181125">लंबा पासवर्ड सुरक्षित करने के तरीके में Google Pay से भुगतान करने की विधि और पते शामिल नहीं हैं. सिर्फ़ वह इंसान आपका सुरक्षित किया हुआ डेटा पढ़ सकता है जिसके पास आपका लंबा पासवर्ड है. Google की ओर से लंबा पासवर्ड भेजा या संग्रहित नहीं किया जाता है. अगर आप अपना लंबा पासवर्ड भूल जाते हैं या इस सेटिंग को बदलना चाहते हैं, तो आपको सिंक रीसेट करना होगा. <ph name="BEGIN_LINK" />ज़्यादा जानें<ph name="END_LINK" /></translation> <translation id="3967822245660637423">डाउनलोड पूर्ण</translation> <translation id="397583555483684758">समन्वयन ने कार्य करना बंद कर दिया है</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">मीडिया</translation> <translation id="4278390842282768270">अनुमति है</translation> <translation id="429312253194641664">किसी साइट पर मीडिया चल रहा है</translation> +<translation id="4298388696830689168">लिंक की हुई साइटें</translation> <translation id="4307992518367153382">आधारभूत बातें</translation> <translation id="4314815835985389558">सिंक प्रबंधित करें</translation> <translation id="4351244548802238354">संवाद बंद करें</translation> @@ -668,7 +675,7 @@ <translation id="6005538289190791541">सुझाया गया पासवर्ड</translation> <translation id="6039379616847168523">सीधे अगले टैब पर जाएं</translation> <translation id="6040143037577758943">बंद करें</translation> -<translation id="6042308850641462728">अधिक</translation> +<translation id="6042308850641462728">और ज़्यादा</translation> <translation id="604996488070107836">किसी अज्ञात गड़बड़ी के कारण <ph name="FILE_NAME" /> का डाउनलोड विफल रहा.</translation> <translation id="605721222689873409">YY</translation> <translation id="6075798973483050474">मुखपृष्ठ संपादित करें</translation> @@ -683,7 +690,7 @@ <translation id="614940544461990577">यह आज़माकर देखें:</translation> <translation id="6154478581116148741">इस डिवाइस से अपने पासवर्ड निर्यात करने के लिए सेटिंग में स्क्रीन लॉक चालू करें</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> डेटा बचत</translation> -<translation id="6165508094623778733">अधिक जानें</translation> +<translation id="6165508094623778733">ज़्यादा जानें</translation> <translation id="6171019622954353983">जारी रखकर आप सहमति देते हैं कि यह सेवा देने के लिए Chrome, Chrome की अपने आप भरने की सुविधा (ऑटो फ़िल) से डेटा, साइट का यूआरएल, और इसकी सामग्री Google को भेजेगा.\n\nChrome में Google Assistant और Chrome की अपने आप भरने की सुविधा (ऑटो फ़िल) को बंद करने के लिए Chrome सेटिंग पर जाएं. <ph name="BEGIN_LINK" />ज़्यादा जानें<ph name="END_LINK" /></translation> <translation id="6177111841848151710">अभी के खोज इंजन के लिए ब्लॉक किया गया</translation> <translation id="6177390657002841081">डेटा बचाने का साधन चालू करना</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">‘नज़र न रखें’ सुविधा को चालू करने का मतलब है कि आपके ब्राउज़िंग ट्रैफ़िक के साथ कोई अनुरोध शामिल किया जाएगा. कोई भी प्रभाव इस बात पर निर्भर करता है कि वेबसाइट, अनुरोध का जवाब देती है या नहीं और अनुरोध को किस तरह समझा जाता है. उदाहरण के लिए, कुछ वेबसाइटें इस अनुरोध का जवाब आपको ऐसे विज्ञापन दिखाकर दे सकती हैं, जो उन दूसरी वेबसाइटों पर आधारित नहीं हैं जिन्हें आपने देखा है. कई वेबसाइटें अब भी आपके ब्राउज़िंग डेटा को जमा और उनका उपयोग करेंगी - उदाहरण के तौर पर, सुरक्षा को बेहतर बनाने के लिए, अपनी वेबसाइट पर सामग्री, सेवाएं, विज्ञापन और सुझाव देने के लिए और रिपोर्टिंग के आकंड़े जनरेट करने के लिए.</translation> +<translation id="624789221780392884">अपडेट तैयार है</translation> <translation id="6255999984061454636">सामग्री के सुझाव</translation> <translation id="6277522088822131679">पेज को प्रिंट करने में समस्या थी. कृपया फिर से प्रयास करें.</translation> <translation id="6295158916970320988">सभी साइटें</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">वीडियो डाउनलोड करें</translation> <translation id="6482749332252372425">मेमोरी स्थान कम होने के कारण <ph name="FILE_NAME" /> डाउनलोड विफल रहा.</translation> <translation id="6496823230996795692">पहली बार <ph name="APP_NAME" /> का उपयोग करने के लिए, कृपया इंटरनेट चालू करें.</translation> +<translation id="6508722015517270189">Chrome को फिर से शुरू करें</translation> <translation id="6527303717912515753">शेयर करें</translation> <translation id="6534565668554028783">Google को प्रतिक्रिया देने में बहुत अधिक समय लगा</translation> <translation id="6538442820324228105"><ph name="GBS" /> जीबी डाउनलोड किया गया</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Google Play सेवाएं द्वारा अपडेट समाप्त किए जाने की प्रतीक्षा की जा रही है</translation> <translation id="7189598951263744875">शेयर करें...</translation> <translation id="7191430249889272776">पृष्ठभूमि में टैब खोला गया.</translation> -<translation id="7221869452894271364">यह पेज फिर से लोड करें</translation> <translation id="723171743924126238">फ़ोटो चुनें</translation> <translation id="7243308994586599757">विकल्प स्क्रीन के नीचे उपलब्ध हैं</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> चुने गए</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">समय सीमा</translation> <translation id="7851858861565204677">अन्य डिवाइस</translation> <translation id="7854964836418414587">'इसी तरह के और भी' को बंद करें</translation> +<translation id="7871791972254842204">बाद में <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> पर नियम और शर्तें पढ़ें और सहमति देंr</translation> <translation id="7875915731392087153">ईमेल बनाएं</translation> <translation id="7876243839304621966">सभी को निकालें</translation> <translation id="7882131421121961860">कोई इतिहास नहीं मिला</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">फिर से शुरू करें</translation> <translation id="8209050860603202033">चित्र खोलें</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> जीबी डाउनलोड किया गया</translation> +<translation id="8232956427053453090">डेटा रखें</translation> <translation id="8249310407154411074">सबसे ऊपर ले जाएं</translation> <translation id="8250920743982581267">दस्तावेज़</translation> <translation id="825412236959742607">यह पेज बहुत ज़्यादा मेमोरी का इस्तेमाल करता है, इसलिए Chrome ने कुछ सामग्री हटा दी है.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">कार्डधारक का नाम</translation> <translation id="8604763363205185560">Chrome और उसकी सुरक्षा को बेहतर बनाने में मदद करना</translation> <translation id="8609465669617005112">ऊपर जाएं</translation> +<translation id="8611192991944347781">डेटा प्रबंधित करें</translation> <translation id="8616006591992756292">आपके Google खाते में <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> पर अन्य प्रकार के ब्राउज़िंग इतिहास हो सकतेे हैं.</translation> <translation id="8617240290563765734">सुझाया गया वह URL खोलें जिसे डाउनलोड की गई सामग्री में बताया गया है?</translation> <translation id="8636825310635137004">अपने अन्य डिवाइस से अपने टैब प्राप्त करने के लिए, समन्वयन चालू करें.</translation> <translation id="8641930654639604085">वयस्क साइटें अवरुद्ध करने की कोशिश करें</translation> +<translation id="8655129584991699539">आप 'Chrome सेटिंग' में डेटा हटा कर सकते हैं</translation> <translation id="8662811608048051533">आपको ज़्यादातर साइट से साइन आउट कर देता है.</translation> <translation id="8664979001105139458">फ़ाइल का नाम पहले से मौजूद है</translation> <translation id="8676374126336081632">इनपुट साफ़ करें</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">अपने संपर्क खोजें</translation> <translation id="869891660844655955">समय समाप्ति दिनांक</translation> <translation id="8719023831149562936">वर्तमान टैब को बीम नहीं किया जा सकता</translation> +<translation id="8723954843026426558">मैं नियमों और शर्तों, निजता नीति और <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> निकाले जाने के अधिकार से सहमत हूं</translation> <translation id="8725066075913043281">पुन: प्रयास करें</translation> <translation id="8728487861892616501">इस ऐप्लिकेशन का उपयोग करके, आप Chrome की <ph name="BEGIN_LINK1" />सेवा की शर्तों<ph name="END_LINK1" /> और <ph name="BEGIN_LINK2" />निजता सूचना<ph name="END_LINK2" /> और <ph name="BEGIN_LINK3" />Family Link से प्रबंधित होने वाले Google खातों के लिए निजता सूचना<ph name="END_LINK3" /> से सहमत होते हैं.</translation> <translation id="8730621377337864115">पूर्ण</translation> @@ -1055,7 +1068,7 @@ <translation id="8920114477895755567">अभिभावकों के विवरण की प्रतीक्षा कर रहे हैं.</translation> <translation id="8922289737868596582">पेज का ऑफ़लाइन उपयोग करने के लिए उन्हें अधिक विकल्प बटन से डाउनलोड करें</translation> <translation id="8941729603749328384">www.example.com</translation> -<translation id="8942627711005830162">अन्य विंडो में खोलें</translation> +<translation id="8942627711005830162">दूसरी विंडो में खोलें</translation> <translation id="8951232171465285730">Chrome ने आपके <ph name="MEGABYTES" /> एमबी की बचत की</translation> <translation id="8958424370300090006">किसी खास साइट के लिए कुकी ब्लॉक करें.</translation> <translation id="8959122750345127698">मार्गदर्शक तक नहीं पहुंचा जा सकता: <ph name="URL" /></translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb index b6126fa..654df7c 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb
@@ -167,7 +167,6 @@ <translation id="2154484045852737596">Uredite karticu</translation> <translation id="2154710561487035718">Kopiraj URL</translation> <translation id="2156074688469523661">Preostale web-lokacije (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Provjerite internetsku vezu</translation> <translation id="2197557662829090533">Dopustite Digitalnoj ravnoteži da prikazuje web-lokacije koje ste posjetili</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, web-aplikacija. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Nastavite kao <ph name="USER_FULL_NAME" /></translation> @@ -281,11 +280,12 @@ <translation id="305593374596241526">Lokacija je isključena. Uključite je u <ph name="BEGIN_LINK" />postavkama Androida<ph name="END_LINK" />.</translation> <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> oznaka}one{<ph name="BOOKMARKS_COUNT_MANY" /> oznaka}few{<ph name="BOOKMARKS_COUNT_MANY" /> oznake}other{<ph name="BOOKMARKS_COUNT_MANY" /> oznaka}}</translation> <translation id="307908932405420782">Uskoro će se prikazati više članaka. Želimo vam ugodno prijepodne!</translation> -<translation id="3089395242580810162">Otvori na kartici Anonimno</translation> +<translation id="3089395242580810162">Otvori na anonimnoj kartici</translation> <translation id="311456632243022227">Više veza otvoreno u Chromeu</translation> <translation id="3115898365077584848">Prikaži informacije</translation> <translation id="3123473560110926937">Blokirano na nekim web-lokacijama</translation> <translation id="3137521801621304719">Izlaz iz anonimnog načina</translation> +<translation id="3143515551205905069">Otkaži sinkronizaciju</translation> <translation id="3148434565183091099">Da biste imali svoje oznake na svim svojim uređajima, prijavite se na Chrome.</translation> <translation id="3157842584138209013">Pogledajte količinu ušteđenih podataka pomoću gumba Više opcija</translation> <translation id="3166827708714933426">Prečaci kartica i prozora</translation> @@ -304,6 +304,7 @@ <translation id="3269093882174072735">Učitaj sliku</translation> <translation id="3269956123044984603">Da bi se prikazale kartice s vaših ostalih uređaja, uključite "Automatsku sinkronizaciju podataka" u postavkama računa na Androidu.</translation> <translation id="3282568296779691940">Prijavite se u Chrome</translation> +<translation id="3288003805934695103">ponovo učitajte stranicu</translation> <translation id="32895400574683172">Obavijesti su dopuštene</translation> <translation id="3295530008794733555">Pregledavajte brže. Smanjite podatkovni promet.</translation> <translation id="3295602654194328831">Sakrij informacije</translation> @@ -373,6 +374,7 @@ <translation id="3819178904835489326">Izbrisano preuzimanja: <ph name="NUMBER_OF_DOWNLOADS" /></translation> <translation id="3819562311292413223">Preuzmite članke za vas</translation> <translation id="3822502789641063741">Izbrisati pohranu?</translation> +<translation id="385051799172605136">Natrag</translation> <translation id="3859306556332390985">Traži unaprijed</translation> <translation id="3894427358181296146">Dodavanje mape</translation> <translation id="3895926599014793903">Prisilno omogućavanje zumiranja</translation> @@ -419,7 +421,7 @@ <translation id="4170011742729630528">Usluga nije dostupna, pokušajte ponovo kasnije.</translation> <translation id="4179980317383591987">Iskorišteno <ph name="AMOUNT" /></translation> <translation id="4181841719683918333">Jezici</translation> -<translation id="4195643157523330669">Otvori u novoj kartici</translation> +<translation id="4195643157523330669">Otvori na novoj kartici</translation> <translation id="4198423547019359126">Lokacije preuzimanja nisu dostupne</translation> <translation id="4209895695669353772">Uključite sinkronizaciju ako želite da vam Google predlaže prilagođene sadržaje</translation> <translation id="4225719675976901337">Sadržaj nije pronađen</translation> @@ -704,6 +706,7 @@ <translation id="6232535412751077445">Omogućivanje opcije "Nemoj pratiti" znači da će se u promet pregledavanja uključiti zahtjev. Učinak ovisi o tome odgovara li web-lokacija na taj zahtjev i kako se zahtjev tumači. Na primjer, neke web-lokacije na taj zahtjev mogu odgovoriti tako da vam prikažu oglase koji se ne temelje na drugim web-lokacijama koje ste posjetili. Mnoge web-lokacije i dalje će prikupljati i upotrebljavati vaše podatke o pregledavanju, primjerice, za poboljšanje sigurnosti, pružanje sadržaja, oglasa i preporuka, kao i za generiranje statističkih izvješća.</translation> +<translation id="624789221780392884">Ažuriranje je spremno</translation> <translation id="6255999984061454636">Prijedlozi sadržaja</translation> <translation id="6277522088822131679">Pojavio se problem prilikom ispisivanja stranice. Pokušajte ponovo.</translation> <translation id="6295158916970320988">Sve web-lokacije</translation> @@ -739,6 +742,7 @@ <translation id="6475951671322991020">Preuzmi videozapis</translation> <translation id="6482749332252372425">Preuzimanje datoteke <ph name="FILE_NAME" /> nije uspjelo zbog nedostatka prostora.</translation> <translation id="6496823230996795692">Za prvu upotrebu aplikacije <ph name="APP_NAME" /> povežite se s internetom.</translation> +<translation id="6508722015517270189">Ponovo pokrenite Chrome</translation> <translation id="6527303717912515753">Podijeli</translation> <translation id="6534565668554028783">Googleu je bilo potrebno previše vremena za odgovor</translation> <translation id="6538442820324228105">Preuzeto <ph name="GBS" /> GB</translation> @@ -837,7 +841,6 @@ <translation id="7189372733857464326">Čekanje dovršetka ažuriranja Google Play usluga</translation> <translation id="7189598951263744875">Dijeli...</translation> <translation id="7191430249889272776">Kartica je otvorena u pozadini.</translation> -<translation id="7221869452894271364">Ponovno učitaj ovu stranicu</translation> <translation id="723171743924126238">Odaberite slike</translation> <translation id="7243308994586599757">Opcije dostupne pri dnu zaslona</translation> <translation id="7250468141469952378">Odabrano: <ph name="ITEM_COUNT" /></translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb index 9db47bc..3b8d241 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="hu"> <translation id="1006017844123154345">Online megnyitás</translation> +<translation id="1023450834687746199">Törölte a(z) <ph name="APP_NAME" /> adatait.</translation> <translation id="1036727731225946849"><ph name="WEBAPK_NAME" /> hozzáadása…</translation> <translation id="1041308826830691739">Webhelyekről</translation> <translation id="1049743911850919806">Inkognitómód</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Törli a címsávban található előzményeket és automatikus kiegészítéseket.</translation> <translation id="2021896219286479412">Teljes képernyős oldal vezérlői</translation> <translation id="2038563949887743358">Kapcsolja be az Asztali webhely kérése funkciót</translation> +<translation id="204321170514947529">A(z) <ph name="APP_NAME" /> a Chrome-ban is rendelkezik adatokkal</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB más alkalmazások által</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">A Keresés koppintással funkció</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Kártya szerkesztése</translation> <translation id="2154710561487035718">URL másolása</translation> <translation id="2156074688469523661">A többi webhely (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Ellenőrizze az internetkapcsolatot</translation> <translation id="2197557662829090533">A felkeresett webhelyek megjelenítésének engedélyezése a Digitális jóllét számára</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, internetes alkalmazás. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Folytatás mint <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">sikertelen</translation> <translation id="2781151931089541271">1 másodperc van hátra</translation> <translation id="2784212955220061919">Lite módban a Chrome gyorsabban betölti az oldalakat, és akár 60 százalékkal kisebb adatforgalmat generál. A Google felhőtechnológiája optimalizálja a felkeresett oldalakat.</translation> +<translation id="2785336755839207516">Eltávolította a(z) <ph name="APP_NAME" /> alkalmazást.</translation> <translation id="2803478378562657435">Mentett jelszavak és jelszóbeállítások megjelenítve</translation> <translation id="2810645512293415242">Egyszerűsített oldal az alacsonyabb adathasználat és a gyorsabb betöltés érdekében.</translation> <translation id="281504910091592009">Mentett jelszavait megtekintheti és kezelheti <ph name="BEGIN_LINK" />Google-fiókjában<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Információk megjelenítése</translation> <translation id="3123473560110926937">Letiltva egyes webhelyeken</translation> <translation id="3137521801621304719">Kilépés inkognitómódból</translation> +<translation id="3143515551205905069">Szinkronizálás megszakítása</translation> <translation id="3148434565183091099">Ha az összes eszközén szeretné elérni könyvjelzőit, jelentkezzen be a Chrome-ba.</translation> <translation id="3157842584138209013">A További lehetőségek gombra kattintva tekintheti meg, hogy mekkora a megtakarított adatmennyiség</translation> <translation id="3166827708714933426">Lapokkal és ablakokkal kapcsolatos billentyűparancsok</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Kép betöltése</translation> <translation id="3269956123044984603">A többi eszközéről is hozzáférhet a lapjaihoz, ha bekapcsolja az Android-fiókbeállítások között található „Adatok automatikus szinkronizálása” funkciót.</translation> <translation id="3282568296779691940">Bejelentkezés a Chrome-ba</translation> +<translation id="3288003805934695103">Az oldal frissítése</translation> <translation id="32895400574683172">Értesítések engedélyezve</translation> <translation id="3295530008794733555">Gyorsabb böngészés. Kevesebb adathasználat.</translation> <translation id="3295602654194328831">Információk elrejtése…</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> letöltés törölve</translation> <translation id="3819562311292413223">Cikkek Önnek – letöltés</translation> <translation id="3822502789641063741">Törli a webhely tárhelyét?</translation> +<translation id="385051799172605136">Vissza</translation> <translation id="3859306556332390985">Ugrás előre</translation> <translation id="3894427358181296146">Mappa hozzáadása</translation> <translation id="3895926599014793903">Nagyítás/kicsinyítés kényszerített engedélyezése</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Bejelentkezés</translation> <translation id="395206256282351086">Keresési és webhelyjavaslatok letiltva</translation> <translation id="3955193568934677022">Engedélyezi a webhelyek számára a védett tartalmak lejátszását (ajánlott)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{A Chrome betölti az oldalt, amint lehetséges}other{A Chrome betölti az oldalakat, amint lehetséges}}</translation> <translation id="3963007978381181125">Az összetett jelszavas titkosítás nem tartalmazza a Google Payben megadott fizetési módokat és címeket. Titkosított adatait csak az olvashatja el, aki rendelkezik az Ön összetett jelszavával. Az összetett jelszót a Google nem kapja meg, és nem is tárolja. Ha elfelejtette összetett jelszavát, vagy módosítaná ezt a beállítást, alaphelyzetbe kell állítania a szinkronizálást. <ph name="BEGIN_LINK" />További információ<ph name="END_LINK" />.</translation> <translation id="3967822245660637423">A letöltés sikeres</translation> <translation id="397583555483684758">A szinkronizálás leállt</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Média</translation> <translation id="4278390842282768270">Engedélyezve</translation> <translation id="429312253194641664">Az egyik webhely médiatartalmat játszik le</translation> +<translation id="4298388696830689168">Összekapcsolt webhelyek</translation> <translation id="4307992518367153382">Alapok</translation> <translation id="4314815835985389558">Szinkronizálás kezelése</translation> <translation id="4351244548802238354">Párbeszédablak bezárása</translation> @@ -668,7 +675,7 @@ <translation id="6005538289190791541">Javasolt jelszó</translation> <translation id="6039379616847168523">Ugrás a következő lapra</translation> <translation id="6040143037577758943">Bezárás</translation> -<translation id="6042308850641462728">Hosszabban</translation> +<translation id="6042308850641462728">Továbbiak</translation> <translation id="604996488070107836">A következő fájl letöltése ismeretlen hiba miatt nem sikerült: <ph name="FILE_NAME" />.</translation> <translation id="605721222689873409">ÉÉ</translation> <translation id="6075798973483050474">Kezdőoldal szerkesztése</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">A „Nincs nyomon követés” engedélyezése azt jelenti, hogy a böngészési forgalommal együtt kérelmet is küld a rendszer. Ennek hatása attól függ, hogy a webhely reagál-e a kérelemre, és hogyan értelmezi azt. Egyes webhelyek például válaszolhatnak rá úgy, hogy olyan hirdetéseket jelenítenek meg, amelyek nem a már felkeresett egyéb webhelyeken alapulnak. Számos webhely ilyenkor is gyűjti és felhasználja a böngészési adatokat (például a biztonság növelése, továbbá tartalom, hirdetések és ajánlatok biztosítása, valamint jelentésekhez használt statisztika előállítása céljából).</translation> +<translation id="624789221780392884">A frissítés készen áll</translation> <translation id="6255999984061454636">Javasolt tartalmak</translation> <translation id="6277522088822131679">Hiba történt az oldal nyomtatásakor. Próbálja újra.</translation> <translation id="6295158916970320988">Az összes webhely</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Videó letöltése</translation> <translation id="6482749332252372425">A következő fájl letöltése tárhelyhiány miatt nem sikerült: <ph name="FILE_NAME" />.</translation> <translation id="6496823230996795692">A(z) <ph name="APP_NAME" /> első használatakor internetkapcsolatra van szükség.</translation> +<translation id="6508722015517270189">Indítsa újra a Chrome-ot</translation> <translation id="6527303717912515753">Megosztás</translation> <translation id="6534565668554028783">A Google túl hosszú ideje nem válaszol</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB letöltve</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Várakozás a Google Play-szolgáltatások frissítésének befejezésére</translation> <translation id="7189598951263744875">Megosztás...</translation> <translation id="7191430249889272776">A lap megnyílt a háttérben.</translation> -<translation id="7221869452894271364">Az oldal újratöltése</translation> <translation id="723171743924126238">Képek kiválasztása</translation> <translation id="7243308994586599757">A beállítások a képernyő alsó részén találhatók</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> elem kiválasztva</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Időszak</translation> <translation id="7851858861565204677">Egyéb eszközök</translation> <translation id="7854964836418414587">További hasonlók bezárása</translation> +<translation id="7871791972254842204">A(z) <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> általános szerződési feltételeinek elolvasása és elfogadása később</translation> <translation id="7875915731392087153">E-mail létrehozása</translation> <translation id="7876243839304621966">Összes eltávolítása</translation> <translation id="7882131421121961860">Nincsenek előzmények</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Folytatás</translation> <translation id="8209050860603202033">Kép megnyitása</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB letöltve</translation> +<translation id="8232956427053453090">Adatok megőrzése</translation> <translation id="8249310407154411074">Mozgatás az elejére</translation> <translation id="8250920743982581267">Dokumentumok</translation> <translation id="825412236959742607">Ez az oldal túl sok memóriát használ, ezért a Chrome eltávolított egyes tartalmakat.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Kártyatulajdonos neve</translation> <translation id="8604763363205185560">Segítség a Chrome és biztonsági funkciói fejlesztésében</translation> <translation id="8609465669617005112">Mozgatás felfelé</translation> +<translation id="8611192991944347781">Adatok kezelése</translation> <translation id="8616006591992756292">Előfordulhat, hogy a böngészési előzmények más formái még megtalálhatók Google-fiókjában a <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> webhelyen.</translation> <translation id="8617240290563765734">Megnyitja a letöltött tartalomban szereplő javasolt URL-t?</translation> <translation id="8636825310635137004">Ha a többi eszközén is szeretné elérni lapjait, kapcsolja be a szinkronizálást</translation> <translation id="8641930654639604085">Felnőtteknek szóló webhelyek letiltásának megkísérlése</translation> +<translation id="8655129584991699539">Az adatokat a Chrome beállításaiban módosíthatja</translation> <translation id="8662811608048051533">A rendszer a legtöbb webhelyről kijelentkezteti Önt.</translation> <translation id="8664979001105139458">Már van ilyen fájlnév</translation> <translation id="8676374126336081632">Beírt szöveg törlése</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Keresés a névjegyek között</translation> <translation id="869891660844655955">Lejárati dátum</translation> <translation id="8719023831149562936">Nem lehet átsugározni a jelenlegi lapot</translation> +<translation id="8723954843026426558">Elfogadom a(z) <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> általános szerződési feltételeit, adatvédelmi irányelveit és elállási jogát.</translation> <translation id="8725066075913043281">Újrapróbálás</translation> <translation id="8728487861892616501">Az alkalmazás használatával elfogadja a Chrome <ph name="BEGIN_LINK1" />általános szerződési feltételeit<ph name="END_LINK1" /> és <ph name="BEGIN_LINK2" />adatvédelmi közleményét<ph name="END_LINK2" />, valamint <ph name="BEGIN_LINK3" />a Family Link szolgáltatással kezelt Google-fiókokra vonatkozó adatvédelmi közleményt<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Kész</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_id.xtb b/chrome/android/java/strings/translations/android_chrome_strings_id.xtb index e1e295ac..5efd2532 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_id.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_id.xtb
@@ -167,7 +167,6 @@ <translation id="2154484045852737596">Edit kartu</translation> <translation id="2154710561487035718">Salin URL</translation> <translation id="2156074688469523661">Situs yang tersisa (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Periksa sambungan internet Anda</translation> <translation id="2197557662829090533">Izinkan Kesehatan Digital untuk menampilkan situs yang Anda kunjungi</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, aplikasi web. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Lanjutkan sebagai <ph name="USER_FULL_NAME" /></translation> @@ -286,6 +285,7 @@ <translation id="3115898365077584848">Tampilkan Info</translation> <translation id="3123473560110926937">Diblokir di beberapa situs</translation> <translation id="3137521801621304719">Tutup mode penyamaran</translation> +<translation id="3143515551205905069">Batalkan sinkronisasi</translation> <translation id="3148434565183091099">Untuk mendapatkan bookmark di semua perangkat Anda, masuk ke Chrome.</translation> <translation id="3157842584138209013">Lihat berapa banyak data yang dihemat dari tombol Opsi Lainnya</translation> <translation id="3166827708714933426">Pintasan tab dan jendela</translation> @@ -304,6 +304,7 @@ <translation id="3269093882174072735">Muat gambar</translation> <translation id="3269956123044984603">Untuk mendapatkan tab dari perangkat lainnya, aktifkan "Sinkronisasi data otomatis" di setelan akun Android.</translation> <translation id="3282568296779691940">Masuk ke Chrome</translation> +<translation id="3288003805934695103">Memuat ulang halaman</translation> <translation id="32895400574683172">Notifikasi diizinkan</translation> <translation id="3295530008794733555">Browsing lebih cepat. Gunakan lebih sedikit kuota.</translation> <translation id="3295602654194328831">Sembunyikan Info</translation> @@ -373,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> download dihapus</translation> <translation id="3819562311292413223">Mendownload artikel untuk Anda</translation> <translation id="3822502789641063741">Kosongkan penyimpanan situs?</translation> +<translation id="385051799172605136">Mundur</translation> <translation id="3859306556332390985">Cari maju</translation> <translation id="3894427358181296146">Tambah folder</translation> <translation id="3895926599014793903">Memaksa pengaktifan zoom</translation> @@ -704,6 +706,7 @@ <translation id="6232535412751077445">Jika ‘Jangan Lacak’ diaktifkan, permintaan akan disertakan dengan lalu lintas penjelajahan Anda. Dampak apa pun yang muncul bergantung pada apakah situs web menanggapi permintaan, dan bagaimana permintaan diinterpretasikan. Misalnya, beberapa situs web mungkin menanggapi permintaan ini dengan menayangkan iklan yang tidak berdasarkan pada situs web lainnya yang Anda kunjungi. Banyak situs web yang masih akan mengumpulkan dan menggunakan data penjelajahan Anda — misalnya, untuk meningkatkan keamanan, menyediakan konten, iklan, dan saran, serta untuk membuat statistik pelaporan.</translation> +<translation id="624789221780392884">Pembaruan siap</translation> <translation id="6255999984061454636">Saran konten</translation> <translation id="6277522088822131679">Terjadi masalah saat mencetak halaman. Coba lagi.</translation> <translation id="6295158916970320988">Semua situs</translation> @@ -739,6 +742,7 @@ <translation id="6475951671322991020">Download video</translation> <translation id="6482749332252372425">Download <ph name="FILE_NAME" /> gagal karena ruang penyimpanan tidak cukup.</translation> <translation id="6496823230996795692">Untuk menggunakan <ph name="APP_NAME" /> pertama kali, harap hubungkan ke internet.</translation> +<translation id="6508722015517270189">Buka Ulang Chrome</translation> <translation id="6527303717912515753">Bagikan</translation> <translation id="6534565668554028783">Google membutuhkan waktu terlalu lama untuk merespons</translation> <translation id="6538442820324228105">Terdownload <ph name="GBS" /> GB</translation> @@ -833,11 +837,10 @@ <translation id="7149893636342594995">24 jam terakhir</translation> <translation id="7176368934862295254"><ph name="KILOBYTES" /> KB</translation> <translation id="7177466738963138057">Anda dapat mengubah ini nanti di Setelan</translation> -<translation id="7180611975245234373">Segarkan</translation> +<translation id="7180611975245234373">Perbarui</translation> <translation id="7189372733857464326">Menunggu Layanan Google Play selesai di-update</translation> <translation id="7189598951263744875">Bagikan...</translation> <translation id="7191430249889272776">Tab dibuka di latar belakang.</translation> -<translation id="7221869452894271364">Muat ulang halaman ini</translation> <translation id="723171743924126238">Pilih gambar</translation> <translation id="7243308994586599757">Opsi terdapat di dekat bagian bawah layar</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> dipilih</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_it.xtb b/chrome/android/java/strings/translations/android_chrome_strings_it.xtb index dec4450..9a6c8d1 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_it.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_it.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="it"> <translation id="1006017844123154345">Apri online</translation> +<translation id="1023450834687746199">Hai cancellato i dati di <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">Aggiunta di <ph name="WEBAPK_NAME" /> in corso…</translation> <translation id="1041308826830691739">Da siti web</translation> <translation id="1049743911850919806">In incognito</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Consente di cancellare la cronologia e i completamenti automatici nella barra degli indirizzi.</translation> <translation id="2021896219286479412">Controlli sito a schermo intero</translation> <translation id="2038563949887743358">Attiva Richiedi sito desktop</translation> +<translation id="204321170514947529">Anche <ph name="APP_NAME" /> presenta dati in Chrome</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB per altre app</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Tocca per cercare</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Modifica la carta</translation> <translation id="2154710561487035718">Copia URL</translation> <translation id="2156074688469523661">Siti rimanenti (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Controlla la connessione a Internet</translation> <translation id="2197557662829090533">Consenti a Benessere digitale di mostrare i siti web visitati</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, app web. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Continua come <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">non riuscito</translation> <translation id="2781151931089541271">1 sec rimanente</translation> <translation id="2784212955220061919">Nella modalità Lite, Chrome carica le pagine più rapidamente e utilizza fino al 60 percento di dati in meno. La tecnologia cloud di Google ottimizza le pagine che visiti.</translation> +<translation id="2785336755839207516">Hai disinstallato <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Mostra password salvate e opzioni password</translation> <translation id="2810645512293415242">Pagina semplificata per risparmiare dati e caricarla più velocemente.</translation> <translation id="281504910091592009">Visualizza e gestisci le password salvate nel tuo <ph name="BEGIN_LINK" />Account Google<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Mostra informazioni</translation> <translation id="3123473560110926937">Bloccati su alcuni siti</translation> <translation id="3137521801621304719">Esci dalla modalità di navigazione in incognito</translation> +<translation id="3143515551205905069">Annulla sincronizzazione</translation> <translation id="3148434565183091099">Accedi a Chrome per trovare i tuoi preferiti su tutti i dispositivi.</translation> <translation id="3157842584138209013">Scopri la quantità di dati risparmiata usando il pulsante Altre opzioni</translation> <translation id="3166827708714933426">Scorciatoie di finestre e schede</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Carica immagine</translation> <translation id="3269956123044984603">Attiva la funzione "Sincronizzazione automatica dei dati" nelle impostazioni dell'account Android per trovare le tue schede sugli altri tuoi dispositivi.</translation> <translation id="3282568296779691940">Accedi a Chrome</translation> +<translation id="3288003805934695103">Ricaricare la pagina</translation> <translation id="32895400574683172">Le notifiche sono consentite</translation> <translation id="3295530008794733555">Naviga più velocemente. Consuma meno dati.</translation> <translation id="3295602654194328831">Nascondi informazioni</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> download eliminati</translation> <translation id="3819562311292413223">Scarica articoli per te</translation> <translation id="3822502789641063741">Cancellare memoria usata da siti?</translation> +<translation id="385051799172605136">Indietro</translation> <translation id="3859306556332390985">Posiziona avanti</translation> <translation id="3894427358181296146">Aggiungi cartella</translation> <translation id="3895926599014793903">Attivazione forzata dello zoom</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Accedi</translation> <translation id="395206256282351086">Suggerimenti di ricerche e siti disattivati</translation> <translation id="3955193568934677022">Consenti ai siti di riprodurre i contenuti protetti (opzione consigliata)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome caricherà la tua pagina quando sarà pronta}other{Chrome caricherà le tue pagine quando saranno pronte}}</translation> <translation id="3963007978381181125">La crittografia della passphrase non include metodi di pagamento e indirizzi di Google Pay. Soltanto chi conosce la tua passphrase può leggere i tuoi dati criptati. La passphrase non viene inviata a Google né memorizzata. Se dimentichi la passphrase o vuoi modificare questa impostazione, dovrai reimpostare la sincronizzazione. <ph name="BEGIN_LINK" />Ulteriori informazioni<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Download completato</translation> <translation id="397583555483684758">La sincronizzazione si è interrotta</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Multimediali</translation> <translation id="4278390842282768270">Consentiti</translation> <translation id="429312253194641664">Un sito sta riproducendo contenuti multimediali</translation> +<translation id="4298388696830689168">Siti collegati</translation> <translation id="4307992518367153382">Impostazioni di base</translation> <translation id="4314815835985389558">Gestisci sincronizzazione</translation> <translation id="4351244548802238354">Chiudi finestra di dialogo</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Se attivi l'opzione "Non tenere traccia", verrà inclusa una richiesta nel tuo traffico di navigazione. Gli effetti dipendono dall'eventuale risposta dei siti web alla richiesta e dall'interpretazione di quest'ultima. Ad esempio, alcuni siti web potrebbero rispondere alla richiesta mostrando annunci non basati su altri siti web visitati. Molti siti web continueranno tuttavia a raccogliere e a utilizzare i dati di navigazione, ad esempio per aumentare la sicurezza, fornire contenuti, annunci e consigli, nonché per generare statistiche sui rapporti.</translation> +<translation id="624789221780392884">Aggiornamento pronto</translation> <translation id="6255999984061454636">Contenuti suggeriti</translation> <translation id="6277522088822131679">Si è verificato un problema durante la stampa della pagina. Riprova.</translation> <translation id="6295158916970320988">Tutti i siti</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Scarica video</translation> <translation id="6482749332252372425">Download di <ph name="FILE_NAME" /> non riuscito a causa dello spazio di archiviazione insufficiente.</translation> <translation id="6496823230996795692">Connettiti a Internet per usare <ph name="APP_NAME" /> per la prima volta.</translation> +<translation id="6508722015517270189">Riavvia Chrome</translation> <translation id="6527303717912515753">Condividi</translation> <translation id="6534565668554028783">Google ha impiegato troppo tempo a rispondere</translation> <translation id="6538442820324228105">Sono stati scaricati <ph name="GBS" /> GB</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">In attesa che Google Play Services termini l'aggiornamento</translation> <translation id="7189598951263744875">Condividi...</translation> <translation id="7191430249889272776">Scheda aperta in background.</translation> -<translation id="7221869452894271364">Ricarica questa pagina</translation> <translation id="723171743924126238">Seleziona immagini</translation> <translation id="7243308994586599757">Opzioni disponibili nella parte inferiore dello schermo</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> elementi selezionati</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Intervallo di tempo</translation> <translation id="7851858861565204677">Altri dispositivi</translation> <translation id="7854964836418414587">Chiudi il foglio Altri contenuti simili</translation> +<translation id="7871791972254842204">Leggi e accetta in un secondo momento termini e condizioni su <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="7875915731392087153">Crea email</translation> <translation id="7876243839304621966">Rimuovi tutto</translation> <translation id="7882131421121961860">Nessuna cronologia trovata</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Riprendi</translation> <translation id="8209050860603202033">Apri immagine</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB per i download</translation> +<translation id="8232956427053453090">Conserva i dati</translation> <translation id="8249310407154411074">Sposta in alto</translation> <translation id="8250920743982581267">Documenti</translation> <translation id="825412236959742607">Questa pagina utilizza troppa memoria, pertanto Chrome ha rimosso alcuni contenuti.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Nome del titolare della carta</translation> <translation id="8604763363205185560">Contribuisci a migliorare Chrome e la sua sicurezza</translation> <translation id="8609465669617005112">Sposta su</translation> +<translation id="8611192991944347781">Gestisci i dati</translation> <translation id="8616006591992756292">Il tuo account Google potrebbe avere altri tipi di cronologia di navigazione all'indirizzo <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Aprire l'URL consigliato specificato nei contenuti scaricati?</translation> <translation id="8636825310635137004">Attiva la sincronizzazione per trovare le tue schede degli altri dispositivi.</translation> <translation id="8641930654639604085">Prova a bloccare siti per adulti</translation> +<translation id="8655129584991699539">Puoi cancellare i dati nelle Impostazioni di Chrome</translation> <translation id="8662811608048051533">Vieni scollegato dalla maggior parte dei siti.</translation> <translation id="8664979001105139458">Nome file già esistente</translation> <translation id="8676374126336081632">Cancella testo inserito</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Cerca nei contatti</translation> <translation id="869891660844655955">Data di scadenza</translation> <translation id="8719023831149562936">Impossibile trasmettere scheda corrente</translation> +<translation id="8723954843026426558">Accetto Termini e condizioni, le norme sulla privacy e il diritto di recesso per <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Riprova</translation> <translation id="8728487861892616501">Utilizzando questa applicazione, accetti i <ph name="BEGIN_LINK1" />Termini di servizio<ph name="END_LINK1" /> di Chrome, le <ph name="BEGIN_LINK2" />Norme sulla privacy<ph name="END_LINK2" /> e le <ph name="BEGIN_LINK3" />Norme sulla privacy per gli account Google gestiti tramite Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Fine</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb b/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb index f726f78..bb85cf1 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="iw"> <translation id="1006017844123154345">פתח גרסה מקוונת</translation> +<translation id="1023450834687746199">ניקית את הנתונים של <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">מוסיף את <ph name="WEBAPK_NAME" />...</translation> <translation id="1041308826830691739">מאתרים</translation> <translation id="1049743911850919806">גלישה פרטית</translation> @@ -24,11 +25,11 @@ <translation id="1172593791219290334">דף פתיחה</translation> <translation id="1175310183703641346">הסנכרון של הסימניות, ההיסטוריה, הסיסמאות ונתונים אחרים שלך עם חשבון Google יופסק</translation> <translation id="1178581264944972037">השהה</translation> -<translation id="1181037720776840403">הסר</translation> +<translation id="1181037720776840403">הסרה</translation> <translation id="1197267115302279827">העבר סימניות</translation> <translation id="119944043368869598">נקה הכל</translation> <translation id="1201402288615127009">הבא</translation> -<translation id="1204037785786432551">הורד קישור</translation> +<translation id="1204037785786432551">הורדת קישור</translation> <translation id="1206892813135768548">העתק טקסט קישור</translation> <translation id="1208340532756947324">כדי לסנכרן ולהתאים אישית את החוויה במכשירים שונים, יש להפעיל את הסנכרון</translation> <translation id="1209206284964581585">הסתר בינתיים</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">ניקוי של ההיסטוריה וההשלמות האוטומטיות בשורת כתובת האתר</translation> <translation id="2021896219286479412">פקדי אתר במסך מלא</translation> <translation id="2038563949887743358">הפעל את 'בקש אתר עבור מחשב שולחני'</translation> +<translation id="204321170514947529">ל-<ph name="APP_NAME" /> יש נתונים גם ב-Chrome</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB ליישומים אחרים</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">הקש כדי לחפש</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">עריכת כרטיס</translation> <translation id="2154710561487035718">העתק כתובת אתר</translation> <translation id="2156074688469523661">אתרים שנותרו (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">יש לבדוק את החיבור לאינטרנט</translation> <translation id="2197557662829090533">תכונת 'שימוש חכם בדיגיטל' תוכל להציג באילו אתרים ביקרת</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, אפליקציית אינטרנט. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">המשך בשם <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">נכשל</translation> <translation id="2781151931089541271">נותרה שניה אחת</translation> <translation id="2784212955220061919">במצב טעינה מהירה, Chrome טוען דפים מהר יותר ומפחית את השימוש בנתונים בשיעור של עד 60 אחוזים. טכנולוגיית הענן של Google מבצעת אופטימיזציה של הדפים.</translation> +<translation id="2785336755839207516">הסרת את ההתקנה של <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">הצגת סיסמאות שמורות ואפשרויות סיסמה</translation> <translation id="2810645512293415242">דף פשוט יותר שחוסך בנתונים ונטען מהר יותר.</translation> <translation id="281504910091592009">הצגה וניהול של סיסמאות שמורות ב<ph name="BEGIN_LINK" />חשבון Google<ph name="END_LINK" /></translation> @@ -278,11 +280,12 @@ <translation id="305593374596241526">הגישה למיקום כבויה. יש להפעיל אותה ב<ph name="BEGIN_LINK" />הגדרות Android<ph name="END_LINK" />.</translation> <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{סימניה אחת (<ph name="BOOKMARKS_COUNT_ONE" />)}two{<ph name="BOOKMARKS_COUNT_MANY" /> סימניות}many{<ph name="BOOKMARKS_COUNT_MANY" /> סימניות}other{<ph name="BOOKMARKS_COUNT_MANY" /> סימניות}}</translation> <translation id="307908932405420782">בקרוב יופיעו מאמרים נוספים. שיהיה לך בוקר נפלא!</translation> -<translation id="3089395242580810162">פתח בכרטיסיית גלישה בסתר</translation> +<translation id="3089395242580810162">פתיחה בכרטיסיית גלישה בסתר</translation> <translation id="311456632243022227">קישורים מרובים נפתחו ב-Chrome</translation> <translation id="3115898365077584848">הצג פרטים</translation> <translation id="3123473560110926937">חסומות בחלק מהאתרים</translation> <translation id="3137521801621304719">צא ממצב גלישה בסתר</translation> +<translation id="3143515551205905069">ביטול סנכרון</translation> <translation id="3148434565183091099">כדי שהסימניות שלך יופיעו בכל המכשירים, היכנס ל-Chrome.</translation> <translation id="3157842584138209013">בעזרת הלחצן 'אפשרויות נוספות' אפשר לבדוק את החיסכון בצריכת נתונים</translation> <translation id="3166827708714933426">מקשי קיצור לכרטיסיות ולחלונות</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">טען תמונה</translation> <translation id="3269956123044984603">כדי לקבל את הכרטיסיות מהמכשירים האחרים שלך, הפעל את האפשרות 'סנכרון אוטומטי של נתונים' בהגדרות של חשבון Android.</translation> <translation id="3282568296779691940">כניסה ל-Chrome</translation> +<translation id="3288003805934695103">לטעון מחדש את הדף</translation> <translation id="32895400574683172">יש הרשאה להצגת הודעות</translation> <translation id="3295530008794733555">יותר מהירות. פחות נתונים.</translation> <translation id="3295602654194328831">הסתר פרטים</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> הורדות נמחקו</translation> <translation id="3819562311292413223">הורדת מאמרים שעשויים לעניין אותך</translation> <translation id="3822502789641063741">למחוק נתוני אתר מהאחסון?</translation> +<translation id="385051799172605136">חזור</translation> <translation id="3859306556332390985">הרץ קדימה</translation> <translation id="3894427358181296146">הוספת תיקייה</translation> <translation id="3895926599014793903">אלץ הפעלת שינוי מרחק מתצוגה</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">כניסה</translation> <translation id="395206256282351086">ההצעות למונחי חיפוש ואתרים הושבתו</translation> <translation id="3955193568934677022">התר לאתרים להפעיל תוכן מוגן (מומלץ)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome יטען את הדף כשיהיה מוכן}two{Chrome יטען את הדפים כשיהיו מוכנים}many{Chrome יטען את הדפים כשיהיו מוכנים}other{Chrome יטען את הדפים כשיהיו מוכנים}}</translation> <translation id="3963007978381181125">הצפנה באמצעות ביטוי סיסמה לא כוללת אמצעי תשלום וכתובות מ-Google Pay. רק מי שיודע את ביטוי הסיסמה שלך יכול לקרוא את הנתונים המוצפנים. ביטוי הסיסמה לא נשלח אל Google והיא אינה מאחסנת אותו. אם שוכחים את ביטוי הסיסמה או רוצים לשנות את ההגדרה הזו, צריך לאפס את הסנכרון. <ph name="BEGIN_LINK" />מידע נוסף<ph name="END_LINK" /></translation> <translation id="3967822245660637423">ההורדה הושלמה</translation> <translation id="397583555483684758">הסנכרון הפסיק לפעול</translation> @@ -415,7 +421,7 @@ <translation id="4170011742729630528">השירות אינו זמין. נסה שוב מאוחר יותר.</translation> <translation id="4179980317383591987">נעשה שימוש ב-<ph name="AMOUNT" /></translation> <translation id="4181841719683918333">שפות</translation> -<translation id="4195643157523330669">פתח בכרטיסייה חדשה</translation> +<translation id="4195643157523330669">פתיחה בכרטיסייה חדשה</translation> <translation id="4198423547019359126">אין מיקומים זמינים להורדה</translation> <translation id="4209895695669353772">כדי לקבל מ-Google הצעות לתוכן מותאם אישית, יש להפעיל את הסנכרון</translation> <translation id="4225719675976901337">לא נמצא תוכן</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">מדיה</translation> <translation id="4278390842282768270">מותר</translation> <translation id="429312253194641664">אתר מסוים מפעיל מדיה</translation> +<translation id="4298388696830689168">אתרים מקושרים</translation> <translation id="4307992518367153382">היסודות</translation> <translation id="4314815835985389558">ניהול הסנכרון</translation> <translation id="4351244548802238354">סגור את תיבת הדו-שיח</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">אם תופעל התכונה 'לא לעקוב (DNT), בקשה זו תיכלל בתנועת הגלישה שלך. השפעת הבקשה תלויה באופן הפעולה של כל אתר – אם הוא מגיב לבקשה או לא, וכיצד הוא מפרש אותה. לדוגמה, ייתכן שבתגובה לבקשה, אתרים מסוימים יציגו מודעות שאינן מבוססות על אתרים אחרים שבהם ביקרת. אתרים רבים ימשיכו לאסוף את נתוני הגלישה שלך ולהשתמש בהם, למשל כדי לשפר את האבטחה, כדי לספק תוכן, מודעות והמלצות וכדי ליצור נתונים סטטיסטיים לדיווח.</translation> +<translation id="624789221780392884">העדכון מוכן</translation> <translation id="6255999984061454636">הצעות לתוכן</translation> <translation id="6277522088822131679">אירעה בעיה בעת הדפסת הדף. נסה שוב.</translation> <translation id="6295158916970320988">כל האתרים</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">הורד סרטון</translation> <translation id="6482749332252372425">הורדת <ph name="FILE_NAME" /> נכשלה מאחר שחסר מקום אחסון.</translation> <translation id="6496823230996795692">כדי להשתמש באפליקציה <ph name="APP_NAME" /> בפעם הראשונה יש להתחבר לאינטרנט.</translation> +<translation id="6508722015517270189">הפעלה מחדש של Chrome</translation> <translation id="6527303717912515753">שתף</translation> <translation id="6534565668554028783">ל-Google נדרש זמן רב מדי להגיב</translation> <translation id="6538442820324228105">בוצעה הורדה של GB <ph name="GBS" /></translation> @@ -828,11 +837,10 @@ <translation id="7149893636342594995">מהיום האחרון</translation> <translation id="7176368934862295254"><ph name="KILOBYTES" /> KB</translation> <translation id="7177466738963138057">אפשר לשנות את ההגדרה הזו מאוחר יותר ב'הגדרות'</translation> -<translation id="7180611975245234373">רענן</translation> +<translation id="7180611975245234373">רענון</translation> <translation id="7189372733857464326">המערכת ממתינה שיסתיים העדכון של שירותי Google Play</translation> <translation id="7189598951263744875">שיתוף...</translation> <translation id="7191430249889272776">הכרטיסייה נפתחה ברקע.</translation> -<translation id="7221869452894271364">רענן את הדף</translation> <translation id="723171743924126238">בחר תמונות</translation> <translation id="7243308994586599757">אפשרויות הזמינות באזור החלק התחתון של המסך</translation> <translation id="7250468141469952378">נבחרו <ph name="ITEM_COUNT" /></translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">טווח זמן</translation> <translation id="7851858861565204677">מכשירים אחרים</translation> <translation id="7854964836418414587">סגירת 'עוד דברים כאלה'</translation> +<translation id="7871791972254842204">אקרא ואאשר את התנאים וההגבלות ב-<ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> מאוחר יותר</translation> <translation id="7875915731392087153">צור הודעת אימייל</translation> <translation id="7876243839304621966">הסר הכל</translation> <translation id="7882131421121961860">לא נמצאה היסטוריה</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">חדש</translation> <translation id="8209050860603202033">פתח את התמונה</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB להורדות</translation> +<translation id="8232956427053453090">שמירת הנתונים</translation> <translation id="8249310407154411074">העברה לראש הרשימה</translation> <translation id="8250920743982581267">מסמכים</translation> <translation id="825412236959742607">הדף הזה משתמש בנפח זיכרון גדול מידי, לכן מערכת Chrome הסירה חלק מהתוכן.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">שם בעל הכרטיס</translation> <translation id="8604763363205185560">עזרה בשיפור Chrome והאבטחה שלו</translation> <translation id="8609465669617005112">הזז למעלה</translation> +<translation id="8611192991944347781">ניהול נתונים</translation> <translation id="8616006591992756292">ייתכן שלחשבון Google שלך יהיו צורות אחרות של היסטוריית גלישה בכתובת <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">האם לעבור אל כתובת האתר שצוינה כהצעה בתוכן שהורדת?</translation> <translation id="8636825310635137004">כדי לקבל את הכרטיסיות מהמכשירים האחרים שלך, הפעל את הסנכרון.</translation> <translation id="8641930654639604085">נסה לחסום אתרים שמכילים תוכן למבוגרים</translation> +<translation id="8655129584991699539">אפשר לנקות את הנתונים דרך הגדרות Chrome.</translation> <translation id="8662811608048051533">תבוצע יציאה שלך מרוב האתרים.</translation> <translation id="8664979001105139458">שם הקובץ כבר קיים</translation> <translation id="8676374126336081632">נקה קלט</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">חיפוש באנשי הקשר</translation> <translation id="869891660844655955">תאריך תפוגה</translation> <translation id="8719023831149562936">לא ניתן להעביר תוכן מהכרטיסייה הנוכחית</translation> +<translation id="8723954843026426558">אני מסכים/ה לתנאים ולהגבלות, למדיניות הפרטיות ולזכות הביטול של <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">נסה שוב</translation> <translation id="8728487861892616501">השימוש שלך באפליקציה הזו מבטא את הסכמתך ל<ph name="BEGIN_LINK1" />תנאים ולהגבלות<ph name="END_LINK1" /> ול<ph name="BEGIN_LINK2" />מדיניות הפרטיות<ph name="END_LINK2" /> של Chrome, וכן ל<ph name="BEGIN_LINK3" />הודעת הפרטיות לחשבונות Google שמנוהלים ב-Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">בוצע</translation> @@ -1055,7 +1068,7 @@ <translation id="8920114477895755567">ממתין לפרטי ההורים.</translation> <translation id="8922289737868596582">כדי להשתמש בדפים במצב לא מקוון, אפשר להוריד אותם דרך הלחצן 'אפשרויות נוספות'</translation> <translation id="8941729603749328384">www.example.com</translation> -<translation id="8942627711005830162">פתח בחלון האחר</translation> +<translation id="8942627711005830162">פתיחה בחלון האחר</translation> <translation id="8951232171465285730">Chrome חסך לך <ph name="MEGABYTES" /> MB</translation> <translation id="8958424370300090006">חסימת קובצי Cookie של אתר מסוים.</translation> <translation id="8959122750345127698">הניווט לא אפשרי: <ph name="URL" /></translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb index e7eb9d25..4e521ff 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="ja"> <translation id="1006017844123154345">オンライン版を開く</translation> +<translation id="1023450834687746199"><ph name="APP_NAME" /> のデータを消去しました。</translation> <translation id="1036727731225946849"><ph name="WEBAPK_NAME" /> を追加しています...</translation> <translation id="1041308826830691739">ウェブサイトから</translation> <translation id="1049743911850919806">シークレット モード</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">アドレスバーの履歴とオートコンプリート データを削除します。</translation> <translation id="2021896219286479412">全画面表示時のサイトの操作項目</translation> <translation id="2038563949887743358">[PC 版サイトを見る] をオンにします</translation> +<translation id="204321170514947529">Chrome にも <ph name="APP_NAME" /> のデータがあります</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB を他のアプリで使用中</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">タップして検索</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">カードを編集</translation> <translation id="2154710561487035718">URL をコピー</translation> <translation id="2156074688469523661">その他のサイト(<ph name="NUMBER_OF_SITES" /> 件)</translation> -<translation id="2173302385160625112">インターネット接続を確認してください</translation> <translation id="2197557662829090533">アクセスしたウェブサイトを Digital Wellbeing で表示できるようにします</translation> <translation id="2206488550163399966"><ph name="APP_NAME" /> はウェブアプリです(<ph name="APP_URL" />)。</translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" /> として続行</translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">失敗</translation> <translation id="2781151931089541271">残り 1 秒</translation> <translation id="2784212955220061919">ライトモードを使用すると、Chrome でページの読み込みが高速化され、データ使用量も最大 60 パーセント抑えることができます。Google のクラウド技術により、アクセス先のページが最適化されます。</translation> +<translation id="2785336755839207516"><ph name="APP_NAME" /> をアンインストールしました。</translation> <translation id="2803478378562657435">保存したパスワードとパスワードのオプションを表示しています</translation> <translation id="2810645512293415242">簡易版ページを使用してデータの保存と読み込みを高速化します。</translation> <translation id="281504910091592009"><ph name="BEGIN_LINK" />Google アカウント<ph name="END_LINK" />での保存パスワードの表示と管理</translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">情報を表示</translation> <translation id="3123473560110926937">一部のサイトでブロックされています</translation> <translation id="3137521801621304719">シークレット モードを終了</translation> +<translation id="3143515551205905069">同期をキャンセル</translation> <translation id="3148434565183091099">お使いのどの端末でも同じブックマークを使用するには、Chrome にログインします。</translation> <translation id="3157842584138209013">[その他のオプション] からデータ削減量を確認できます</translation> <translation id="3166827708714933426">タブとウィンドウのショートカット</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">画像を読み込む</translation> <translation id="3269956123044984603">他の端末と同じタブを使用するには、Android のアカウント設定で [データの自動同期] を有効にします。</translation> <translation id="3282568296779691940">Chrome にログイン</translation> +<translation id="3288003805934695103">ページを再読み込みする</translation> <translation id="32895400574683172">通知が許可されています</translation> <translation id="3295530008794733555">高速ブラウジングで、データ使用量も抑えることができます。</translation> <translation id="3295602654194328831">情報を表示しない</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> 件のダウンロードを削除しました</translation> <translation id="3819562311292413223">おすすめの記事をダウンロード</translation> <translation id="3822502789641063741">サイトのストレージを消去しますか?</translation> +<translation id="385051799172605136">戻る</translation> <translation id="3859306556332390985">前方にシーク再生</translation> <translation id="3894427358181296146">フォルダの追加</translation> <translation id="3895926599014793903">強制的にズームを有効にする</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">ログイン</translation> <translation id="395206256282351086">検索とサイトの候補の表示が無効</translation> <translation id="3955193568934677022">保護されたコンテンツの再生をサイトに許可する(推奨)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{準備が完了すると Chrome でページが読み込まれます}other{準備が完了すると Chrome でページが読み込まれます}}</translation> <translation id="3963007978381181125">パスフレーズ暗号化の対象に Google Pay のお支払い方法と住所は含まれません。パスフレーズを知っているユーザーだけが暗号化データを読み取ることができます。パスフレーズが Google に送信されたり Google で保存されたりすることはありません。パスフレーズを忘れた場合や、この設定を変更する場合は、同期をリセットする必要があります。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation> <translation id="3967822245660637423">ダウンロード完了</translation> <translation id="397583555483684758">同期は停止されました</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">メディア</translation> <translation id="4278390842282768270">許可</translation> <translation id="429312253194641664">サイトでメディアが再生されています</translation> +<translation id="4298388696830689168">リンク済みのサイト</translation> <translation id="4307992518367153382">基本設定</translation> <translation id="4314815835985389558">同期の管理</translation> <translation id="4351244548802238354">ダイアログを閉じる</translation> @@ -534,7 +541,7 @@ <translation id="5004416275253351869">Google アクティビティ管理</translation> <translation id="5005498671520578047">パスワードのコピー</translation> <translation id="5011311129201317034"><ph name="SITE" /> が接続を要求しています</translation> -<translation id="5013696553129441713">新しい候補はありません</translation> +<translation id="5013696553129441713">新しいおすすめ記事はありません</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">許可</translation> <translation id="5040262127954254034">プライバシー</translation> @@ -683,7 +690,7 @@ <translation id="614940544461990577">次をお試しください:</translation> <translation id="6154478581116148741">この端末からパスワードをエクスポートするには、[設定] で画面ロックをオンにしてください。</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> のデータを削減</translation> -<translation id="6165508094623778733">詳しく見る</translation> +<translation id="6165508094623778733">詳細</translation> <translation id="6171019622954353983">続行すると、本サービスの提供にあたって Chrome の自動入力のデータ、サイトの URL、サイトのコンテンツを Google に送信することに同意したものとみなされます。\n\nChrome の Google アシスタントと自動入力をオフにするには、Chrome の設定にアクセスしてください。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation> <translation id="6177111841848151710">現在の検索エンジンに対してはブロック</translation> <translation id="6177390657002841081">データセーバーをオンにする</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">「トラッキング拒否」を有効にすると、リクエストが閲覧トラフィックに含まれるようになります。ウェブサイトがリクエストに応答するかどうか、またリクエストがどのように解釈されるかによって、この影響は異なります。 たとえば一部のウェブサイトでは、このリクエストに対して、ユーザーが過去にアクセスしたウェブサイトとは関係のない広告が表示されます。トラッキングを拒否しても、実際のところ多くのウェブサイトではユーザーの閲覧データが収集され利用されています。その用途としては、セキュリティの強化、コンテンツ、サービス、広告、おすすめの表示、レポート統計情報の作成などが挙げられます。</translation> +<translation id="624789221780392884">アップデート準備完了</translation> <translation id="6255999984061454636">おすすめのコンテンツ</translation> <translation id="6277522088822131679">ページの印刷中に問題が発生しました。もう一度お試しください。</translation> <translation id="6295158916970320988">すべてのサイト</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">動画をダウンロード</translation> <translation id="6482749332252372425">ストレージの空き容量が不足しているため、<ph name="FILE_NAME" /> をダウンロードできませんでした。</translation> <translation id="6496823230996795692"><ph name="APP_NAME" /> を初めて使用する場合は、インターネットに接続してください。</translation> +<translation id="6508722015517270189">Chrome を再起動する</translation> <translation id="6527303717912515753">共有</translation> <translation id="6534565668554028783">Google からの応答に時間がかかりすぎています</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB をダウンロード済み</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Google Play 開発者サービスの更新完了を待機しています</translation> <translation id="7189598951263744875">共有...</translation> <translation id="7191430249889272776">バックグラウンドでタブを開きました。</translation> -<translation id="7221869452894271364">このページを再読み込みします</translation> <translation id="723171743924126238">画像を選択</translation> <translation id="7243308994586599757">画面の下の方にオプションがあります</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> 件選択されています</translation> @@ -875,7 +883,7 @@ <translation id="7514365320538308">ダウンロード</translation> <translation id="751961395872307827">サイトに接続できません</translation> <translation id="7521387064766892559">Javascript</translation> -<translation id="7542481630195938534">候補を取得できません</translation> +<translation id="7542481630195938534">おすすめの記事を取得できません</translation> <translation id="7559975015014302720">ライトモードはオフです</translation> <translation id="7562080006725997899">閲覧データの消去</translation> <translation id="756809126120519699">Chrome データの消去完了</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">期間</translation> <translation id="7851858861565204677">その他のデバイス</translation> <translation id="7854964836418414587">類似するコンテンツを閉じる</translation> +<translation id="7871791972254842204"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> の利用規約の確認と同意は後で行います</translation> <translation id="7875915731392087153">メールを作成</translation> <translation id="7876243839304621966">すべて削除</translation> <translation id="7882131421121961860">履歴が見つかりません</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">再開</translation> <translation id="8209050860603202033">画像を開く</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB をダウンロードで使用中</translation> +<translation id="8232956427053453090">データを保持</translation> <translation id="8249310407154411074">一番上に移動</translation> <translation id="8250920743982581267">ドキュメント</translation> <translation id="825412236959742607">このページは大量のメモリを使用しているため、Chrome により一部のコンテンツが削除されました。</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">カード名義人</translation> <translation id="8604763363205185560">Chrome とそのセキュリティの向上に協力する</translation> <translation id="8609465669617005112">上に移動</translation> +<translation id="8611192991944347781">データ管理</translation> <translation id="8616006591992756292">お使いの Google アカウントの <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> に、他の形式の閲覧履歴が記録されている場合があります。</translation> <translation id="8617240290563765734">ダウンロード コンテンツに指定されている URL を開きますか?</translation> <translation id="8636825310635137004">他の端末と同じタブを使用するには、同期を有効にします。</translation> <translation id="8641930654639604085">成人向けのサイトを可能な限りブロックする</translation> +<translation id="8655129584991699539">Chrome の設定でデータを消去できます</translation> <translation id="8662811608048051533">ほとんどのサイトからログアウトします。</translation> <translation id="8664979001105139458">同じ名前のファイルが存在します</translation> <translation id="8676374126336081632">入力内容を消去</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">連絡先を検索</translation> <translation id="869891660844655955">有効期限</translation> <translation id="8719023831149562936">現在のタブはビームできません</translation> +<translation id="8723954843026426558"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> の利用規約、プライバシー ポリシー、利用を中止する権利について同意します</translation> <translation id="8725066075913043281">やり直し</translation> <translation id="8728487861892616501">このアプリケーションを使用すると、Chrome の<ph name="BEGIN_LINK1" />利用規約<ph name="END_LINK1" />と<ph name="BEGIN_LINK2" />プライバシーに関するお知らせ<ph name="END_LINK2" />、および <ph name="BEGIN_LINK3" />ファミリー リンクで管理する Google アカウントのプライバシーに関するお知らせ<ph name="END_LINK3" />に同意したことになります。</translation> <translation id="8730621377337864115">完了</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_kn.xtb b/chrome/android/java/strings/translations/android_chrome_strings_kn.xtb index 345f849..41f9d57 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_kn.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_kn.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="kn"> <translation id="1006017844123154345">ಆನ್ಲೈನ್ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation> +<translation id="1023450834687746199">ನೀವು <ph name="APP_NAME" />ಸಲುವಾಗಿನ ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಿದ್ದೀರಿ.</translation> <translation id="1036727731225946849"><ph name="WEBAPK_NAME" /> ಅನ್ನು ಸೇರಿಸಲಾಗುತ್ತಿದೆ...</translation> <translation id="1041308826830691739">ವೆಬ್ಸೈಟ್ಗಳ ಮೂಲಕ</translation> <translation id="1049743911850919806">ಅದೃಶ್ಯ</translation> @@ -24,7 +25,7 @@ <translation id="1172593791219290334">ಆರಂಭಿಕ ಪುಟ</translation> <translation id="1175310183703641346">ನಿಮ್ಮ ಬುಕ್ಮಾರ್ಕ್ಗಳು, ಇತಿಹಾಸ, ಪಾಸ್ವರ್ಡ್ಗಳು ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳನ್ನು ಇನ್ನು ಮುಂದೆ ನಿಮ್ಮ Google ಖಾತೆಗೆ ಸಿಂಕ್ ಮಾಡುವುದಿಲ್ಲ</translation> <translation id="1178581264944972037">ವಿರಾಮ</translation> -<translation id="1181037720776840403">ತೆಗೆದುಹಾಕು</translation> +<translation id="1181037720776840403">ತೆಗೆದುಹಾಕಿ</translation> <translation id="1197267115302279827">ಬುಕ್ಮಾರ್ಕ್ಗಳನ್ನು ಚಲಿಸಿ</translation> <translation id="119944043368869598">ಎಲ್ಲವನ್ನೂ ತೆಗೆದುಹಾಕಿ</translation> <translation id="1201402288615127009">ಮುಂದೆ</translation> @@ -143,6 +144,7 @@ <translation id="2017836877785168846">ಇತಿಹಾಸವನ್ನು ತೆರವುಗೊಳಿಸಿ ಮತ್ತು ವಿಳಾಸಪಟ್ಟಿಯಲ್ಲಿರುವುದನ್ನು ಸ್ವಯಂಪೂರ್ಣಗೊಳಿಸಿ.</translation> <translation id="2021896219286479412">ಪೂರ್ಣ ಪರದೆ ಸೈಟ್ ನಿಯಂತ್ರಣಗಳು</translation> <translation id="2038563949887743358">ಡೆಸ್ಕ್ಟಾಪ್ ಸೈಟ್ ವಿನಂತಿಯನ್ನು ಆನ್ ಮಾಡಿ</translation> +<translation id="204321170514947529"><ph name="APP_NAME" />ಆ್ಯಪ್ನ ಡೇಟಾವು Chrome ನಲ್ಲಿಯೂ ಇದೆ</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB ಇತರ ಅಪ್ಲಿಕೇಶನ್ಗಳು</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">ಹುಡುಕಲು ಟ್ಯಾಪ್ ಮಾಡಿ</translation> @@ -166,7 +168,6 @@ <translation id="2154484045852737596">ಕಾರ್ಡ್ ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="2154710561487035718">URL ನಕಲಿಸಿ</translation> <translation id="2156074688469523661">ಉಳಿದ ಸೈಟ್ಗಳು (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">ನಿಮ್ಮ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ</translation> <translation id="2197557662829090533">ನೀವು ಭೇಟಿ ನೀಡಿರುವ ವೆಬ್ಸೈಟ್ಗಳನ್ನು ತೋರಿಸಲು ಡಿಜಿಟಲ್ ಯೋಗಕ್ಷೇಮವನ್ನು ಅನುಮತಿಸಿ</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್. <ph name="APP_URL" /></translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" /> ನಂತೆ ಮುಂದುವರಿಸಿ</translation> @@ -243,6 +244,7 @@ <translation id="2779651927720337254">ವಿಫಲವಾಗಿದೆ</translation> <translation id="2781151931089541271">1 ಸೆಕೆಂಡು ಉಳಿದಿದೆ</translation> <translation id="2784212955220061919">ಲೈಟ್ ಮೋಡ್ನಲ್ಲಿ, Chrome ವೇಗವಾಗಿ ಪುಟಗಳನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ, ಮತ್ತು ಡೇಟಾವನ್ನು ಸುಮಾರು ಶೇಕಡಾ 60 ರಷ್ಟು ಕಡಿಮೆ ಬಳಸುತ್ತದೆ. Google ನ ಕ್ಲೌಡ್ ತಂತ್ರಜ್ಞಾನವು, ನೀವು ಭೇಟಿ ನೀಡುವ ಪುಟಗಳನ್ನು ಆಪ್ಟಿಮೈಸ್ ಮಾಡುತ್ತದೆ.</translation> +<translation id="2785336755839207516">ನೀವು <ph name="APP_NAME" />ಅನ್ನು ಅನ್ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿದ್ದೀರಿ.</translation> <translation id="2803478378562657435">ಉಳಿಸಿದ ಪಾಸ್ವರ್ಡ್ಗಳು ಮತ್ತು ಪಾಸ್ವರ್ಡ್ ಆಯ್ಕೆಗಳನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ</translation> <translation id="2810645512293415242">ಡೇಟಾ ಉಳಿಸಲು ಮತ್ತು ವೇಗವಾಗಿ ಲೋಡ್ ಮಾಡಲು ಪುಟವನ್ನು ಸರಳೀಕೃತಗೊಳಿಸಲಾಗಿದೆ.</translation> <translation id="281504910091592009">ಉಳಿಸಲಾದ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ನಿಮ್ಮ <ph name="BEGIN_LINK" />Google ಖಾತೆಯಲ್ಲಿ<ph name="END_LINK" /> ವೀಕ್ಷಿಸಿ ಮತ್ತು ನಿರ್ವಹಿಸಿ</translation> @@ -279,11 +281,12 @@ <translation id="305593374596241526">ಸ್ಥಳ ಆಫ್ ಆಗಿದೆ; <ph name="BEGIN_LINK" />Android ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ<ph name="END_LINK" /> ಇದನ್ನು ಆನ್ ಮಾಡಿ.</translation> <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> ಬುಕ್ಮಾರ್ಕ್}one{<ph name="BOOKMARKS_COUNT_MANY" /> ಬುಕ್ಮಾರ್ಕ್ಗಳು}other{<ph name="BOOKMARKS_COUNT_MANY" /> ಬುಕ್ಮಾರ್ಕ್ಗಳು}}</translation> <translation id="307908932405420782">ಶೀಘ್ರವೇ ಇನ್ನಷ್ಟು ಲೇಖನಗಳು ಕಂಡುಬರುತ್ತವೆ. ನಿಮ್ಮ ಬೆಳಿಗ್ಗೆ ಸಮಯವನ್ನು ಆನಂದಿಸಿ!</translation> -<translation id="3089395242580810162">ಅಪರಿಚಿತ ಟ್ಯಾಬ್ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation> +<translation id="3089395242580810162">ಅದೃಶ್ಯ ಟ್ಯಾಬ್ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation> <translation id="311456632243022227">Chrome ನಲ್ಲಿ ಹಲವು ಲಿಂಕ್ಗಳು ತೆರೆದುಕೊಂಡಿವೆ</translation> <translation id="3115898365077584848">ಮಾಹಿತಿಯನ್ನು ತೋರಿಸಿ</translation> <translation id="3123473560110926937">ಕೆಲವು ಸೈಟ್ಗಳಲ್ಲಿ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</translation> <translation id="3137521801621304719">ಅದೃಶ್ಯ ಮೋಡ್ನಿಂದ ಹೊರಬನ್ನಿ</translation> +<translation id="3143515551205905069">ಸಿಂಕ್ ಮಾಡುವಿಕೆಯನ್ನು ರದ್ದುಪಡಿಸಿ</translation> <translation id="3148434565183091099">ನಿಮ್ಮ ಎಲ್ಲ ಸಾಧನಗಳಲ್ಲಿ ನಿಮ್ಮ ಬುಕ್ಮಾರ್ಕ್ಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಲು, Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation> <translation id="3157842584138209013">ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳ ಬಟನ್ ಮೂಲಕ ನೀವು ಎಷ್ಟು ಡೇಟಾ ಉಳಿಸಿದ್ದಿರಾ ಎಂದು ನೋಡಿ</translation> <translation id="3166827708714933426">ಟ್ಯಾಬ್ ಮತ್ತು ವಿಂಡೋ ಶಾರ್ಟ್ಕಟ್ಗಳು</translation> @@ -302,6 +305,7 @@ <translation id="3269093882174072735">ಚಿತ್ರ ಲೋಡ್ ಮಾಡಿ</translation> <translation id="3269956123044984603">ನಿಮ್ಮ ಇತರೆ ಸಾಧನಗಳಿಂದ ನಿಮ್ಮ ಟ್ಯಾಬ್ಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಲು, Android ಖಾತೆ ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ''ಸ್ವಯಂ-ಸಿಂಕ್ ಡೇಟಾ" ಆನ್ ಮಾಡಿ.</translation> <translation id="3282568296779691940">Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ</translation> +<translation id="3288003805934695103">ಪುಟ ಮರುಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation> <translation id="32895400574683172">ಅಧಿಸೂಚನೆಗಳನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ</translation> <translation id="3295530008794733555">ವೇಗವಾಗಿ ಬ್ರೌಸ್ ಮಾಡಿ. ಕಡಿಮೆ ಡೇಟಾವನ್ನು ಬಳಸಿ.</translation> <translation id="3295602654194328831">ಮಾಹಿತಿಯನ್ನು ಮರೆಮಾಡಿ</translation> @@ -371,6 +375,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> ಡೌನ್ಲೋಡ್ಗಳನ್ನು ಅಳಿಸಲಾಗಿದೆ</translation> <translation id="3819562311292413223">ನಿಮಗಾಗಿ ಲೇಖನಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಿ</translation> <translation id="3822502789641063741">ಸೈಟ್ ಸಂಗ್ರಹಣೆ ತೆರವುಗೊಳಿಸುವುದೇ?</translation> +<translation id="385051799172605136">ಹಿಂದೆ</translation> <translation id="3859306556332390985">ಮುಂದಕ್ಕೆ ಸೀಕ್ ಮಾಡಿ</translation> <translation id="3894427358181296146">ಫೋಲ್ಡರ್ ಸೇರಿಸು</translation> <translation id="3895926599014793903">ಒತ್ತಾಯದ ಝೂಮ್ ಸಕ್ರಿಯಗೊಳಿಸುವಿಕೆ</translation> @@ -382,6 +387,7 @@ <translation id="3950820424414687140">ಸೈನ್ ಇನ್</translation> <translation id="395206256282351086">ಹುಡುಕಾಟ ಹಾಗೂ ಸೈಟ್ ಕುರಿತಾದ ಸಲಹೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</translation> <translation id="3955193568934677022">ಸಂರಕ್ಷಿಸಲಾದ ವಿಷಯವನ್ನು ಪ್ಲೇ ಮಾಡಲು ಸೈಟ್ಗಳಿಗೆ ಅನುಮತಿಸಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{ಸಿದ್ಧವಾದಾಗ, ನಿಮ್ಮ ಪುಟವನ್ನು Chrome ಲೋಡ್ ಮಾಡುತ್ತದೆ}one{ಸಿದ್ಧವಾದಾಗ, ನಿಮ್ಮ ಪುಟಗಳನ್ನು Chrome ಲೋಡ್ ಮಾಡುತ್ತದೆ}other{ಸಿದ್ಧವಾದಾಗ, ನಿಮ್ಮ ಪುಟಗಳನ್ನು Chrome ಲೋಡ್ ಮಾಡುತ್ತದೆ}}</translation> <translation id="3963007978381181125">ಪಾಸ್ಫ್ರೇಸ್ ಎನ್ಕ್ರಿಪ್ಶನ್, Google Pay ನಿಂದ ಪಾವತಿ ವಿಧಾನಗಳು ಮತ್ತು ವಿಳಾಸಗಳನ್ನು ಒಳಗೊಂಡಿರುವುದಿಲ್ಲ. ನಿಮ್ಮ ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾದ ಡೇಟಾವನ್ನು ನಿಮ್ಮ ಪಾಸ್ಫ್ರೇಸ್ ಹೊಂದಿರುವ ಯಾರಾದರೂ ಮಾತ್ರ ಓದಬಹುದು. ಪಾಸ್ಫ್ರೇಸ್ ಅನ್ನು Google ಗೆ ಕಳುಹಿಸಲಾಗುವುದಿಲ್ಲ ಅಥವಾ ಅದನ್ನು Google ನಿಂದ ಸಂಗ್ರಹಿಸಲಾಗುವುದಿಲ್ಲ. ನಿಮ್ಮ ಪಾಸ್ಫ್ರೇಸ್ ಅನ್ನು ನೀವು ಮರೆತರೆ ಅಥವಾ ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಬದಲಾಯಿಸಲು ಬಯಸಿದರೆ, ನೀವು ಸಿಂಕ್ ಅನ್ನು ಮರುಹೊಂದಿಸುವ ಅಗತ್ಯವಿರುತ್ತದೆ.<ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK" /></translation> <translation id="3967822245660637423">ಡೌನ್ಲೋಡ್ ಪೂರ್ಣಗೊಂಡಿದೆ</translation> <translation id="397583555483684758">ಸಿಂಕ್ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿದೆ</translation> @@ -432,6 +438,7 @@ <translation id="4275663329226226506">ಮಾದ್ಯಮ</translation> <translation id="4278390842282768270">ಅನುಮತಿಸಲಾಗಿದೆ</translation> <translation id="429312253194641664">ಒಂದು ಸೈಟ್, ಮಾಧ್ಯಮವನ್ನು ಪ್ಲೇ ಮಾಡುತ್ತಿದೆ</translation> +<translation id="4298388696830689168">ಲಿಂಕ್ ಮಾಡಿರುವ ಸೈಟ್ಗಳು</translation> <translation id="4307992518367153382">ಬೇಸಿಕ್ಸ್</translation> <translation id="4314815835985389558">ಸಿಂಕ್ ಅನ್ನು ನಿರ್ವಹಿಸಿ</translation> <translation id="4351244548802238354">ಸಂವಾದವನ್ನು ಮುಚ್ಚಿ</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">‘ಟ್ರ್ಯಾಕ್ ಮಾಡಬೇಡಿ’ ಸಕ್ರಿಯಗೊಳಿಸುವುದು ಎಂದರೆ, ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಟ್ರಾಫಿಕ್ ಜೊತೆ ವಿನಂತಿಯನ್ನು ಸೇರಿಸಿಕೊಳ್ಳಲಾಗುತ್ತದೆ ಎಂದಾಗಿದೆ. ವಿನಂತಿಗೆ ವೆಬ್ಸೈಟ್ ಸ್ಪಂದಿಸುತ್ತದೆಯೇ ಹಾಗೂ ವಿನಂತಿಯನ್ನು ಹೇಗೆ ಅರ್ಥೈಸಿಕೊಳ್ಳುತ್ತದೆ ಎಂಬುದರ ಮೇಲೆ ಯಾವುದೇ ಪರಿಣಾಮ ಅವಲಂಬಿಸಿರುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಕೆಲವು ವೆಬ್ಸೈಟ್ಗಳು, ನೀವು ಭೇಟಿ ನೀಡಿದ ಇತರ ವೆಬ್ಸೈಟ್ಗಳನ್ನು ಆಧರಿಸಿಲ್ಲದ ಜಾಹೀರಾತುಗಳನ್ನು ನಿಮಗೆ ತೋರಿಸುವ ಮೂಲಕ ಈ ವಿನಂತಿಗೆ ಸ್ಪಂದಿಸಬಹುದು. ಹೆಚ್ಚಿನ ವೆಬ್ಸೈಟ್ಗಳು ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಡೇಟಾವನ್ನು ಈಗಲೂ ಸಂಗ್ರಹಿಸುತ್ತವೆ ಹಾಗೂ ಅವುಗಳನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತವೆ. ಉದಾಹರಣೆಗೆ, ಭದ್ರತೆಯನ್ನು ಸುಧಾರಿಸಲು, ವಿಷಯ, ಜಾಹೀರಾತುಗಳು ಮತ್ತು ಶಿಫಾರಸುಗಳನ್ನು ಒದಗಿಸಲು ಮತ್ತು ವರದಿಯ ಅಂಕಿಅಂಶಗಳನ್ನು ರಚಿಸಲು.</translation> +<translation id="624789221780392884">ಅಪ್ಡೇಟ್ ಸಿದ್ಧವಾಗಿದೆ</translation> <translation id="6255999984061454636">ವಿಷಯದ ಸಲಹೆಗಳು</translation> <translation id="6277522088822131679">ಪುಟವನ್ನು ಮುದ್ರಿಸುವಲ್ಲಿ ಸಮಸ್ಯೆ ಕಂಡುಬಂದಿದೆ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="6295158916970320988">ಎಲ್ಲಾ ಸೈಟ್ಗಳು</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">ವೀಡಿಯೊ ಡೌನ್ಲೋಡ್ ಮಾಡಿ</translation> <translation id="6482749332252372425">ಸಂಗ್ರಹಣೆ ಸ್ಥಳದ ಕೊರತೆಯ ಕಾರಣದಿಂದ <ph name="FILE_NAME" /> ಡೌನ್ಲೋಡ್ ವಿಫಲವಾಗಿದೆ.</translation> <translation id="6496823230996795692"><ph name="APP_NAME" /> ಅನ್ನು ಮೊದಲ ಬಾರಿಗೆ ಬಳಸಲು, ಇಂಟರ್ನೆಟ್ಗೆ ಸಂಪರ್ಕಸಿ.</translation> +<translation id="6508722015517270189">Chrome ಮರುಪ್ರಾರಂಭಿಸಿ</translation> <translation id="6527303717912515753">ಹಂಚಿಕೊಳ್ಳು</translation> <translation id="6534565668554028783">ಪ್ರತಿಕ್ರಿಯಿಸಲು Google ತೀರಾ ಹೆಚ್ಚು ಸಮಯ ತೆಗೆದುಕೊಂಡಿದೆ.</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB ಡೌನ್ಲೋಡ್ ಮಾಡಲಾಗಿದೆ</translation> @@ -829,11 +838,10 @@ <translation id="7149893636342594995">ಕಳೆದ 24 ಗಂಟೆಗಳು</translation> <translation id="7176368934862295254"><ph name="KILOBYTES" /> KB</translation> <translation id="7177466738963138057">ನೀವು ಇದನ್ನು ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ನಂತರ ಬದಲಾಯಿಸಬಹುದು</translation> -<translation id="7180611975245234373">ರಿಫ್ರೆಶ್ ಮಾಡಿ</translation> +<translation id="7180611975245234373">ರಿಫ್ರೆಶ್</translation> <translation id="7189372733857464326">Google Play ಸೇವೆಗಳು ಅಪ್ಡೇಟ್ ಮಾಡುವಿಕೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ</translation> <translation id="7189598951263744875">ಹಂಚಿ...</translation> <translation id="7191430249889272776">ಟ್ಯಾಬ್ ಅನ್ನು ಹಿನ್ನೆಲೆಯಲ್ಲಿ ತೆರೆಯಲಾಗಿದೆ.</translation> -<translation id="7221869452894271364">ಈ ಪುಟವನ್ನು ರೀಲೋಡ್ ಮಾಡಿ</translation> <translation id="723171743924126238">ಚಿತ್ರಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation> <translation id="7243308994586599757">ಪರದೆಯ ಕೆಳಗೆ ಲಭ್ಯವಿರುವ ಆಯ್ಕೆಗಳು</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> ಅನ್ನು ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ</translation> @@ -920,6 +928,7 @@ <translation id="784934925303690534">ಸಮಯ ವ್ಯಾಪ್ತಿ</translation> <translation id="7851858861565204677">ಇತರ ಸಾಧನಗಳು</translation> <translation id="7854964836418414587">ಇಂತಹ ಇನ್ನಷ್ಟನ್ನು ನೋಡಿ ಅನ್ನು ಮುಚ್ಚಿ</translation> +<translation id="7871791972254842204">ನಂತರ, <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />ಕುರಿತಾದ ನಿಯಮಗಳು ಮತ್ತು ನಿಬಂಧನೆಗಳನ್ನು ಓದಿ ಹಾಗೂ ಅವುಗಳಿಗೆ ಸಮ್ಮತಿಸಿ</translation> <translation id="7875915731392087153">ಇಮೇಲ್ ರಚಿಸಿ</translation> <translation id="7876243839304621966">ಎಲ್ಲವನ್ನೂ ತೆಗೆದುಹಾಕಿ</translation> <translation id="7882131421121961860">ಯಾವುದೇ ಇತಿಹಾಸ ಕಂಡುಬಂದಿಲ್ಲ</translation> @@ -970,6 +979,7 @@ <translation id="8200772114523450471">ಪುನರಾರಂಭಿಸು</translation> <translation id="8209050860603202033">ಚಿತ್ರವನ್ನು ತೆರೆಯಿರಿ</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB ಡೌನ್ಲೋಡ್ ಮಾಡಲಾಗಿದೆ</translation> +<translation id="8232956427053453090">ಡೇಟಾವನ್ನುಇರಿಸಿಕೊಳ್ಳಿ</translation> <translation id="8249310407154411074">ಮೇಲಕ್ಕೆ ಸರಿಸಿ</translation> <translation id="8250920743982581267">ಡಾಕ್ಯುಮೆಂಟ್ಗಳು</translation> <translation id="825412236959742607">ಈ ಪುಟವು ತೀರಾ ಹೆಚ್ಚು ಮೆಮೊರಿಯನ್ನು ಬಳಸುತ್ತದೆ, ಆದ್ದರಿಂದ Chrome ಕೆಲವು ವಿಷಯಗಳನ್ನು ತೆಗೆದುಹಾಕಿದೆ.</translation> @@ -1023,10 +1033,12 @@ <translation id="860043288473659153">ಕಾರ್ಡ್ಹೋಲ್ಡರ್ ಹೆಸರು</translation> <translation id="8604763363205185560">Chrome ಮತ್ತು ಅದರ ಭದ್ರತೆಯನ್ನು ಸುಧಾರಿಸಲು ಸಹಾಯ ಮಾಡಿ</translation> <translation id="8609465669617005112">ಮೇಲೆ ಸರಿಸು</translation> +<translation id="8611192991944347781">ಡೇಟಾವನ್ನು ನಿರ್ವಹಿಸಿ</translation> <translation id="8616006591992756292">ನಿಮ್ಮ Google ಖಾತೆಯು <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> ನಲ್ಲಿ ಇತರ ವಿಧಗಳ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸವನ್ನು ಹೊಂದಿರಬಹುದು.</translation> <translation id="8617240290563765734">ಡೌನ್ಲೋಡ್ ಮಾಡಲಾದ ವಿಷಯದಲ್ಲಿ ಸೂಚಿಸಲಾದ ನಿರ್ದಿಷ್ಟ URL ತೆರೆಯುವುದೇ?</translation> <translation id="8636825310635137004">ನಿಮ್ಮ ಇತರ ಸಾಧನಗಳಿಂದ ನಿಮ್ಮ ಟ್ಯಾಬ್ಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಲು, ಸಿಂಕ್ ಆನ್ ಮಾಡಿ.</translation> <translation id="8641930654639604085">ವಯಸ್ಕರ ಸೈಟ್ಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲು ಪ್ರಯತ್ನಿಸಿ</translation> +<translation id="8655129584991699539">ನೀವು ಡೇಟಾವನ್ನು Chrome ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ತೆರವುಗೊಳಿಸಬಹುದು</translation> <translation id="8662811608048051533">ಹೆಚ್ಚಿನ ವೆಬ್ಸೈಟ್ಗಳಿಂದ ಸೈನ್ ಔಟ್ ಮಾಡುತ್ತದೆ.</translation> <translation id="8664979001105139458">ಫೈಲ್ ಹೆಸರು ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ</translation> <translation id="8676374126336081632">ಇನ್ಪುಟ್ ತೆರವುಗೊಳಿಸು</translation> @@ -1034,6 +1046,7 @@ <translation id="868929229000858085">ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ಹುಡುಕಿ</translation> <translation id="869891660844655955">ಅವಧಿ ಮುಗಿಯುವ ದಿನಾಂಕ</translation> <translation id="8719023831149562936">ಪ್ರಸ್ತುತ ಟ್ಯಾಬ್ ಅನ್ನು ಬೀಮ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ</translation> +<translation id="8723954843026426558">ನಾನು <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />ಡೊಮೇನ್ನ ನಿಯಮಗಳು ಮತ್ತು ನಿಬಂಧನೆಗಳು, ಗೌಪ್ಯತಾ ಕಾರ್ಯನೀತಿ, ಮತ್ತು ಹಿಂತೆಗೆದುಕೊಳ್ಳುವ ಹಕ್ಕಿಗೆ ಸಮ್ಮತಿಸುತ್ತೇನೆ.</translation> <translation id="8725066075913043281">ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ</translation> <translation id="8728487861892616501">ಈ ಅಪ್ಲಿಕೇಶನ್ ಬಳಸುವ ಮೂಲಕ, ನೀವು Chrome ನ <ph name="BEGIN_LINK1" />ಸೇವಾ ನಿಯಮಗಳು<ph name="END_LINK1" /> ಮತ್ತು <ph name="BEGIN_LINK2" />ಗೌಪ್ಯತೆಯ ಸೂಚನೆ<ph name="END_LINK2" /> ಗೆ ಮತ್ತು <ph name="BEGIN_LINK3" />ಕುಟುಂಬದ ಲಿಂಕ್ನಲ್ಲಿ ನಿರ್ವಹಿಸಿದ Google ಖಾತೆಗಳಿಗಾಗಿ ಗೌಪ್ಯತಾ ಸೂಚನೆಗಳನ್ನು<ph name="END_LINK3" /> ಸಮ್ಮತಿಸುತ್ತೀರಿ.</translation> <translation id="8730621377337864115">ಮುಗಿದಿದೆ</translation> @@ -1056,7 +1069,7 @@ <translation id="8920114477895755567">ಪೋಷಕರ ವಿವರಗಳಿಗಾಗಿ ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ.</translation> <translation id="8922289737868596582">ಪುಟಗಳನ್ನು ಆಫ್ಲೈನ್ನಲ್ಲಿ ಬಳಸಲು ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳ ಬಟನ್ ಮೂಲಕ ಡೌನ್ಲೋಡ್ ಮಾಡಿ</translation> <translation id="8941729603749328384">www.example.com</translation> -<translation id="8942627711005830162">ಇತರ ವಿಂಡೋದಲ್ಲಿ ತೆರೆಯಿರಿ</translation> +<translation id="8942627711005830162">ಬೇರೆ ವಿಂಡೋದಲ್ಲಿ ತೆರೆಯಿರಿ</translation> <translation id="8951232171465285730">ನಿಮ್ಮ <ph name="MEGABYTES" /> MB ಅನ್ನು Chrome ಉಳಿಸಿದೆ</translation> <translation id="8958424370300090006">ನಿರ್ದಿಷ್ಟ ಸೈಟ್ ಒಂದಕ್ಕೆ ಕುಕೀಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ.</translation> <translation id="8959122750345127698">ನ್ಯಾವಿಗೇಶನ್ ತಲುಪಲಾಗುವುದಿಲ್ಲ: <ph name="URL" /></translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb index c55a237..4149113 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="ko"> <translation id="1006017844123154345">온라인 열기</translation> +<translation id="1023450834687746199"><ph name="APP_NAME" /> 데이터를 삭제했습니다.</translation> <translation id="1036727731225946849"><ph name="WEBAPK_NAME" /> 추가 중...</translation> <translation id="1041308826830691739">웹사이트 알림</translation> <translation id="1049743911850919806">시크릿</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">검색주소창의 검색 기록 및 자동 완성 항목을 삭제합니다.</translation> <translation id="2021896219286479412">전체화면 사이트 컨트롤</translation> <translation id="2038563949887743358">데스크톱 버전으로 보기 사용 설정</translation> +<translation id="204321170514947529"><ph name="APP_NAME" />도 Chrome에서 데이터를 보유하고 있습니다</translation> <translation id="2045104531052923016">기타 앱 <ph name="GIGABYTES" />GB</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">탭하여 검색</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">카드 수정</translation> <translation id="2154710561487035718">URL 복사</translation> <translation id="2156074688469523661">남은 사이트(<ph name="NUMBER_OF_SITES" />개)</translation> -<translation id="2173302385160625112">인터넷 연결 상태를 확인하세요.</translation> <translation id="2197557662829090533">디지털 웰빙 기능이 내가 방문한 웹사이트를 표시하도록 허용합니다.</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, 웹 앱. <ph name="APP_URL" /></translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" />(으)로 계속</translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">실패</translation> <translation id="2781151931089541271">1초 남음</translation> <translation id="2784212955220061919">Chrome의 라이트 모드를 사용하면 페이지가 더 빠르게 로드되고 데이터가 최대 60퍼센트 절약됩니다. Google의 클라우드 기술이 내가 방문하는 페이지를 최적화해 줍니다.</translation> +<translation id="2785336755839207516"><ph name="APP_NAME" />을(를) 제거했습니다.</translation> <translation id="2803478378562657435">저장된 비밀번호 및 비밀번호 옵션 표시 중</translation> <translation id="2810645512293415242">페이지가 간소화되어 데이터가 절약되고 로드 속도가 빨라졌습니다.</translation> <translation id="281504910091592009"><ph name="BEGIN_LINK" />Google 계정<ph name="END_LINK" />에서 저장된 비밀번호 보기 및 관리</translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">정보 표시</translation> <translation id="3123473560110926937">일부 사이트에서 차단됨</translation> <translation id="3137521801621304719">시크릿 모드 나가기</translation> +<translation id="3143515551205905069">동기화 취소</translation> <translation id="3148434565183091099">어느 기기에서나 내 북마크를 사용하려면 Chrome에 로그인하세요.</translation> <translation id="3157842584138209013">추가 옵션 버튼에서 저장한 데이터의 양 보기</translation> <translation id="3166827708714933426">탭 및 창 단축키</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">이미지 로드</translation> <translation id="3269956123044984603">다른 기기에서 탭을 가져오려면 Android 계정 설정에서 '데이터 자동 동기화'를 사용 설정하세요.</translation> <translation id="3282568296779691940">Chrome에 로그인</translation> +<translation id="3288003805934695103">페이지 새로고침</translation> <translation id="32895400574683172">알림이 허용되었습니다</translation> <translation id="3295530008794733555">데이터를 절약하면서 웹을 더 빠르게 탐색하세요</translation> <translation id="3295602654194328831">정보 숨기기</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326">다운로드 <ph name="NUMBER_OF_DOWNLOADS" />개 삭제됨</translation> <translation id="3819562311292413223">추천 기사 다운로드</translation> <translation id="3822502789641063741">사이트 저장공간을 삭제하시겠습니까?</translation> +<translation id="385051799172605136">뒤로</translation> <translation id="3859306556332390985">앞으로 탐색</translation> <translation id="3894427358181296146">폴더 추가</translation> <translation id="3895926599014793903">확대/축소 강제 사용</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">로그인</translation> <translation id="395206256282351086">검색 및 사이트 추천이 사용 중지됨</translation> <translation id="3955193568934677022">사이트에서 보호된 콘텐츠를 재생하도록 허용(권장)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{준비가 완료되면 Chrome에서 페이지를 로드합니다.}other{준비가 완료되면 Chrome에서 페이지를 로드합니다.}}</translation> <translation id="3963007978381181125">Google Pay 결제 수단 및 주소는 암호로 암호화되지 않습니다. 암호를 아는 사람만 암호화된 데이터를 읽을 수 있습니다. 암호는 Google로 전송되거나 Google에 저장되지 않습니다. 암호가 기억나지 않거나 이 설정을 변경하려면 동기화를 재설정해야 합니다. <ph name="BEGIN_LINK" />자세히 알아보기<ph name="END_LINK" /></translation> <translation id="3967822245660637423">다운로드 완료</translation> <translation id="397583555483684758">동기화가 중지되었습니다.</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">미디어</translation> <translation id="4278390842282768270">허용됨</translation> <translation id="429312253194641664">사이트에서 미디어 재생 중</translation> +<translation id="4298388696830689168">연결된 사이트</translation> <translation id="4307992518367153382">기본설정</translation> <translation id="4314815835985389558">동기화 관리</translation> <translation id="4351244548802238354">대화상자 닫기</translation> @@ -534,7 +541,7 @@ <translation id="5004416275253351869">Google 활동 제어</translation> <translation id="5005498671520578047">비밀번호 복사</translation> <translation id="5011311129201317034"><ph name="SITE" />에서 연결하려고 함</translation> -<translation id="5013696553129441713">새 추천 없음</translation> +<translation id="5013696553129441713">새로운 추천 콘텐츠 없음</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">허용</translation> <translation id="5040262127954254034">개인정보</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">‘추적 안함’을 사용하도록 설정하면 요청이 사용자의 인터넷 사용 트래픽에 포함됩니다. 웹사이트가 요청에 응답하는지 여부와 요청이 해석되는 방법에 따라 결과가 결정됩니다. 예를 들어 어떤 웹사이트는 사용자가 방문한 다른 웹사이트를 기반으로 하지 않는 광고를 표시하여 이 요청에 응답할 수 있습니다. 그러나 대부분의 웹사이트에서는 보안을 개선하거나 웹사이트에 콘텐츠, 광고, 권장사항 등을 제공하거나 보고서 통계를 생성하기 위해 사용자의 인터넷 사용 기록을 계속 수집하고 사용합니다.</translation> +<translation id="624789221780392884">업데이트 준비 완료</translation> <translation id="6255999984061454636">콘텐츠 추천</translation> <translation id="6277522088822131679">페이지를 인쇄하는 중에 문제가 발생했습니다. 다시 시도해 주세요.</translation> <translation id="6295158916970320988">모든 사이트</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">동영상 다운로드</translation> <translation id="6482749332252372425">저장공간이 부족하여 <ph name="FILE_NAME" />을(를) 다운로드할 수 없습니다.</translation> <translation id="6496823230996795692">처음으로 <ph name="APP_NAME" />을(를) 사용하는 경우 인터넷에 연결하세요.</translation> +<translation id="6508722015517270189">Chrome 다시 시작하기</translation> <translation id="6527303717912515753">공유</translation> <translation id="6534565668554028783">Google에서 응답하는 데 시간이 너무 오래 걸립니다.</translation> <translation id="6538442820324228105"><ph name="GBS" />GB 다운로드됨</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Google Play 서비스 업데이트 완료 대기 중</translation> <translation id="7189598951263744875">공유...</translation> <translation id="7191430249889272776">탭이 백그라운드에 열림</translation> -<translation id="7221869452894271364">페이지 새로고침</translation> <translation id="723171743924126238">이미지 선택</translation> <translation id="7243308994586599757">화면 하단에서 옵션 선택 가능</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" />개 선택됨</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">기간</translation> <translation id="7851858861565204677">다른 기기</translation> <translation id="7854964836418414587">'비슷한 항목 더보기' 닫기</translation> +<translation id="7871791972254842204">나중에 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />에서 이용약관을 읽고 동의하겠습니다.</translation> <translation id="7875915731392087153">이메일 만들기</translation> <translation id="7876243839304621966">모두 삭제</translation> <translation id="7882131421121961860">방문 기록이 없습니다.</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">다시 시작</translation> <translation id="8209050860603202033">이미지 열기</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" />GB가 다운로드됨</translation> +<translation id="8232956427053453090">데이터 보관</translation> <translation id="8249310407154411074">맨 위로 이동</translation> <translation id="8250920743982581267">문서</translation> <translation id="825412236959742607">페이지에서 너무 많은 메모리를 사용하므로 Chrome에서 일부 콘텐츠를 삭제했습니다.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">카드 명의자 이름</translation> <translation id="8604763363205185560">Chrome 및 보안 개선에 참여</translation> <translation id="8609465669617005112">위로 이동</translation> +<translation id="8611192991944347781">데이터 관리</translation> <translation id="8616006591992756292">Google 계정의 내 활동(<ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />)에는 인터넷 사용 기록이 다른 형식으로 남아 있을 수도 있습니다.</translation> <translation id="8617240290563765734">다운로드한 콘텐츠에 지정된 추천 URL을 여시겠습니까?</translation> <translation id="8636825310635137004">다른 기기에서 탭을 가져오려면 동기화를 사용 설정하세요.</translation> <translation id="8641930654639604085">성인용 사이트 차단 시도</translation> +<translation id="8655129584991699539">Chrome 설정에서 데이터를 삭제할 수 있습니다.</translation> <translation id="8662811608048051533">대부분의 사이트에서 로그아웃됩니다.</translation> <translation id="8664979001105139458">이미 존재하는 이름입니다.</translation> <translation id="8676374126336081632">입력내용 지우기</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">연락처 검색</translation> <translation id="869891660844655955">유효기간</translation> <translation id="8719023831149562936">현재 탭을 공유할 수 없습니다.</translation> +<translation id="8723954843026426558"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />의 철회 권리, 이용약관, 개인정보처리방침에 동의합니다.</translation> <translation id="8725066075913043281">다시 시도하세요</translation> <translation id="8728487861892616501">이 애플리케이션을 사용하면 Chrome의 <ph name="BEGIN_LINK1" />서비스 약관<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />개인정보처리방침<ph name="END_LINK2" />, <ph name="BEGIN_LINK3" />Family Link로 관리되는 Google 계정용 개인정보처리방침<ph name="END_LINK3" />에 동의하게 됩니다.</translation> <translation id="8730621377337864115">완료</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb b/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb index 3bad8b9..da91bbb6 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb
@@ -167,7 +167,6 @@ <translation id="2154484045852737596">Kortelės informacijos redagavimas</translation> <translation id="2154710561487035718">Kopijuoti URL adresą</translation> <translation id="2156074688469523661">Likusios svetainės (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Patikrinkite interneto ryšį</translation> <translation id="2197557662829090533">Leiskite Skaitmeninės gerovės programai rodyti svetaines, kuriose lankėtės</translation> <translation id="2206488550163399966">„<ph name="APP_NAME" />“, žiniatinklio programa. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Tęsti kaip <ph name="USER_FULL_NAME" /></translation> @@ -286,6 +285,7 @@ <translation id="3115898365077584848">Rodyti informaciją</translation> <translation id="3123473560110926937">Užblokuota kai kuriose svetainėse</translation> <translation id="3137521801621304719">Išjungti inkognito režimą</translation> +<translation id="3143515551205905069">Atšaukti sinchronizavimą</translation> <translation id="3148434565183091099">Prisijunkite naršyklėje „Chrome“, kad pasiektumėte žymes visuose įrenginiuose.</translation> <translation id="3157842584138209013">Žr., kiek duomenų sutaupėte, spustelėję mygtuką „Daugiau parinkčių“</translation> <translation id="3166827708714933426">Skirtukų ir langų spartieji klavišai</translation> @@ -304,6 +304,7 @@ <translation id="3269093882174072735">Įkelti vaizdą</translation> <translation id="3269956123044984603">Jei norite pasiekti skirtukus iš kitų įrenginių, „Android“ paskyros nustatymuose įjunkite parinktį „Automatiškai sinchronizuoti duomenis“.</translation> <translation id="3282568296779691940">Prisijungti prie „Chrome“</translation> +<translation id="3288003805934695103">Iš naujo įkelti puslapį</translation> <translation id="32895400574683172">Pranešimai leidžiami</translation> <translation id="3295530008794733555">Naršykite greičiau. Naudokite mažiau duomenų.</translation> <translation id="3295602654194328831">Slėpti informaciją</translation> @@ -373,6 +374,7 @@ <translation id="3819178904835489326">Ištrinta atsisiuntimų: <ph name="NUMBER_OF_DOWNLOADS" /></translation> <translation id="3819562311292413223">Atsisiunčiami jums skirti straipsniai</translation> <translation id="3822502789641063741">Išvalyti svet. saugyklą?</translation> +<translation id="385051799172605136">Atgal</translation> <translation id="3859306556332390985">Eiti pirmyn</translation> <translation id="3894427358181296146">Aplanko pridėjimas</translation> <translation id="3895926599014793903">Priverstinai įgalinti mastelio keitimą</translation> @@ -704,6 +706,7 @@ <translation id="6232535412751077445">Įgalinus funkciją „Nestebėti“, užklausa bus įtraukta į naršymo srautą. Poveikis priklauso nuo to, ar svetainė atsako į užklausą ir kaip užklausa interpretuojama. Pavyzdžiui, kai kurios svetainės gali atsakyti į šią užklausą rodydamos jums skelbimus, nepagrįstus kitomis svetainėmis, kuriose lankėtės. Daugelis svetainių vis tiek rinks ir naudos jūsų naršymo duomenis, kad, pvz., patobulintų saugą, teiktų turinį, skelbimus bei rekomendacijas ir sugeneruotų ataskaitų teikimo statistiką.</translation> +<translation id="624789221780392884">Naujinys paruoštas</translation> <translation id="6255999984061454636">Turinio pasiūlymai</translation> <translation id="6277522088822131679">Spausdinant puslapį kilo problema. Bandykite dar kartą.</translation> <translation id="6295158916970320988">Visos svetainės</translation> @@ -739,6 +742,7 @@ <translation id="6475951671322991020">Atsisiųsti vaizdo įrašą</translation> <translation id="6482749332252372425">Nepavyko atsisiųsti „<ph name="FILE_NAME" />“ dėl trūkstamos vietos saugykloje.</translation> <translation id="6496823230996795692">Jei „<ph name="APP_NAME" />“ norite naudoti pirmą kartą, prisijunkite prie interneto.</translation> +<translation id="6508722015517270189">Iš naujo paleiskite „Chrome“</translation> <translation id="6527303717912515753">Bendrinti</translation> <translation id="6534565668554028783">Per ilgai laukta „Google“ atsako</translation> <translation id="6538442820324228105">Atsisiųsta <ph name="GBS" /> GB</translation> @@ -837,7 +841,6 @@ <translation id="7189372733857464326">Laukiama, kol bus baigtas „Google Play“ paslaugų atnaujinimas</translation> <translation id="7189598951263744875">Bendrinti...</translation> <translation id="7191430249889272776">Skirtuko lapas atidarytas fone.</translation> -<translation id="7221869452894271364">Įkelti iš naujo šį puslapį</translation> <translation id="723171743924126238">Pasirinkti vaizdus</translation> <translation id="7243308994586599757">Parinktys pasiekiamos netoli ekrano apačios</translation> <translation id="7250468141469952378">Pasirinkta: <ph name="ITEM_COUNT" /></translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb b/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb index 1a5b75a..0fd693a 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="lv"> <translation id="1006017844123154345">Atvērt tiešsaistē</translation> +<translation id="1023450834687746199">Jūs notīrījāt <ph name="APP_NAME" /> datus.</translation> <translation id="1036727731225946849">Tiek pievienots <ph name="WEBAPK_NAME" />...</translation> <translation id="1041308826830691739">No vietnēm</translation> <translation id="1049743911850919806">Inkognito</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Notīra vēsturi un automātiskās pabeigšanas ierakstus adreses joslā.</translation> <translation id="2021896219286479412">Pilnekrāna vietnes vadīklas</translation> <translation id="2038563949887743358">Ieslēgt iestatījumu “Pieprasīt datora vietni”</translation> +<translation id="204321170514947529">Pārlūkā Chrome ir arī “<ph name="APP_NAME" />” dati</translation> <translation id="2045104531052923016">Citas lietotnes: <ph name="GIGABYTES" /> GB</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Pieskarties, lai meklētu</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Kartes informācijas rediģēšana</translation> <translation id="2154710561487035718">Kopēt URL</translation> <translation id="2156074688469523661">Pārējās vietnes (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Pārbaudiet interneta savienojumu</translation> <translation id="2197557662829090533">Atļaut Digitālajai labjutībai rādīt jūsu apmeklētās vietnes</translation> <translation id="2206488550163399966">Tīmekļa lietotne <ph name="APP_NAME" />. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Turpināt kā: <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">neizdevās</translation> <translation id="2781151931089541271">Atlikusi 1 s</translation> <translation id="2784212955220061919">Vienkāršotajā režīmā Chrome ielādē lapas ātrāk un patērē pat par 60 procentiem mazāk datu. Google mākoņa tehnoloģija optimizē lapas, kuras apmeklējat.</translation> +<translation id="2785336755839207516">Jūs atinstalējāt lietotni <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Tiek rādītas saglabātās paroles un paroļu iespējas</translation> <translation id="2810645512293415242">Lapa tika vienkāršota, lai samazinātu datu lietojumu un paātrinātu ielādi.</translation> <translation id="281504910091592009">Skatiet un pārvaldiet saglabātās paroles savā <ph name="BEGIN_LINK" />Google kontā<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Rādīt informāciju</translation> <translation id="3123473560110926937">Bloķētas dažās vietnēs</translation> <translation id="3137521801621304719">Iziet no inkognito režīma</translation> +<translation id="3143515551205905069">Atcelt sinhronizāciju</translation> <translation id="3148434565183091099">Pierakstieties pārlūkā Chrome, lai grāmatzīmes būtu pieejamas visās jūsu ierīcēs.</translation> <translation id="3157842584138209013">Izmantojiet pogu Vairāk opciju, lai uzzinātu ietaupīto datu apjomu</translation> <translation id="3166827708714933426">Ciļņu un logu īsinājumtaustiņi</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Ielādēt attēlu</translation> <translation id="3269956123044984603">Lai būtu pieejamas cilnes no citām jūsu ierīcēm, Android konta iestatījumos ieslēdziet iestatījumu “Automātiski sinhronizēt datus”.</translation> <translation id="3282568296779691940">Pierakstīties pārlūkā Chrome</translation> +<translation id="3288003805934695103">Atkārtoti ielādējiet lapu.</translation> <translation id="32895400574683172">Paziņojumi ir atļauti.</translation> <translation id="3295530008794733555">Ietaupiet laiku. Samaziniet datu lietojumu.</translation> <translation id="3295602654194328831">Slēpt informāciju</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326">Izdzēsti <ph name="NUMBER_OF_DOWNLOADS" /> lejupielādētie vienumi</translation> <translation id="3819562311292413223">Ieteikto rakstu lejupielāde</translation> <translation id="3822502789641063741">Vai notīrīt vietnes krātuvi?</translation> +<translation id="385051799172605136">Atpakaļ</translation> <translation id="3859306556332390985">Pārtīt uz priekšu</translation> <translation id="3894427358181296146">Mapes pievienošana</translation> <translation id="3895926599014793903">Tālummaiņas piespiedu iespējošana</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Pierakstīties</translation> <translation id="395206256282351086">Meklēšanas un vietņu ieteikumi atspējoti</translation> <translation id="3955193568934677022">Atļaut vietnēm atskaņot aizsargātu saturu (ieteicams)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Kad ierīce būs gatava, jūsu lapa tiks ielādēta pārlūkā Chrome}zero{Kad ierīce būs gatava, jūsu lapas tiks ielādētas pārlūkā Chrome}one{Kad ierīce būs gatava, jūsu lapas tiks ielādētas pārlūkā Chrome}other{Kad ierīce būs gatava, jūsu lapas tiks ielādētas pārlūkā Chrome}}</translation> <translation id="3963007978381181125">Ieejas frāzes šifrējumā nav iekļauti maksājumu veidi un adreses no pakalpojuma Google Pay. Jūsu šifrētos datus var lasīt tikai personas, kurām ir zināma jūsu ieejas frāze. Ieejas frāze netiek sūtīta Google serveriem un netiek tajos glabāta. Ja aizmirsīsiet ieejas frāzi vai vēlēsieties mainīt šo iestatījumu, jums būs jāatiestata sinhronizācija. <ph name="BEGIN_LINK" />Uzziniet vairāk<ph name="END_LINK" />.</translation> <translation id="3967822245660637423">Lejupielāde pabeigta</translation> <translation id="397583555483684758">Sinhronizācija vairs nedarbojas</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Multivide</translation> <translation id="4278390842282768270">Atļauts</translation> <translation id="429312253194641664">Vietne atskaņo multivides saturu</translation> +<translation id="4298388696830689168">Saistītās vietnes</translation> <translation id="4307992518367153382">Pamata</translation> <translation id="4314815835985389558">Sinhronizācijas pārvaldība</translation> <translation id="4351244548802238354">Aizvērt dialoglodziņu</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Iespējojot funkciju “Nesekot”, jūsu pārlūkošanas datplūsmā tiks iekļauts pieprasījums. Rezultāts būs atkarīgs no tā, vai vietne nodrošinās atbildi uz pieprasījumu un kā pieprasījums tiks interpretēts. Piemēram, dažas vietnes, reaģējot uz šo pieprasījumu, var rādīt jums reklāmas, kuru pamatā nav citas jūsu apmeklētās vietnes. Tomēr daudzas vietnes apkopos un izmantos jūsu pārlūkošanas datus, piemēram, lai uzlabotu drošību, nodrošinātu saturu, reklāmas un ieteikumus un ģenerētu pārskatu statistiku.</translation> +<translation id="624789221780392884">Var veikt atjaunināšanu</translation> <translation id="6255999984061454636">Satura ieteikumi</translation> <translation id="6277522088822131679">Drukājot lapu, radās problēma. Lūdzu, mēģiniet vēlreiz.</translation> <translation id="6295158916970320988">Visas vietnes</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Lejupielādēt videoklipu</translation> <translation id="6482749332252372425">Neizdevās lejupielādēt failu <ph name="FILE_NAME" />, jo krātuvē nav pietiekami daudz vietas.</translation> <translation id="6496823230996795692">Lai pirmo reizi izmantotu lietotni <ph name="APP_NAME" />, lūdzu, izveidojiet savienojumu ar internetu.</translation> +<translation id="6508722015517270189">Restartējiet pārlūku Chrome</translation> <translation id="6527303717912515753">Kopīgot</translation> <translation id="6534565668554028783">Google pārāk ilgi nereaģēja</translation> <translation id="6538442820324228105">Lejupielādēts: <ph name="GBS" /> GB</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Gaida, kad tiks pabeigta Google Play pakalpojumu atjaunināšana</translation> <translation id="7189598951263744875">Kopīgot...</translation> <translation id="7191430249889272776">Cilne tika atvērta fonā.</translation> -<translation id="7221869452894271364">Pārlādēt šo lapu</translation> <translation id="723171743924126238">Atlasīt attēlus</translation> <translation id="7243308994586599757">Opcijas, kas pieejamas ekrāna apakšējā daļā</translation> <translation id="7250468141469952378">Atlasīti vienumi: <ph name="ITEM_COUNT" /></translation> @@ -875,7 +883,7 @@ <translation id="7514365320538308">Lejupielādēt</translation> <translation id="751961395872307827">Nevar izveidot savienojumu ar vietni.</translation> <translation id="7521387064766892559">JavaScript</translation> -<translation id="7542481630195938534">Nevar iegūt ieteikumus</translation> +<translation id="7542481630195938534">Nevar iegūt ieteikumus.</translation> <translation id="7559975015014302720">Vienkāršotais režīms ir izslēgts</translation> <translation id="7562080006725997899">Notiek pārlūkošanas datu notīrīšana</translation> <translation id="756809126120519699">Chrome dati tika notīrīti</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Laika periods</translation> <translation id="7851858861565204677">Citas ierīces</translation> <translation id="7854964836418414587">Aizvērt līdzīgus vienumus</translation> +<translation id="7871791972254842204">Vēlāk izlasīt <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> pakalpojumu sniegšanas noteikumus un piekrist tiem</translation> <translation id="7875915731392087153">Izveidojiet e-pasta ziņojumu.</translation> <translation id="7876243839304621966">Noņemt visu</translation> <translation id="7882131421121961860">Vēsture nav atrasta</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Kopsavilkums</translation> <translation id="8209050860603202033">Atvērt attēlu</translation> <translation id="8220488350232498290">Lejupielādes: <ph name="GIGABYTES" /> GB</translation> +<translation id="8232956427053453090">Paturēt datus</translation> <translation id="8249310407154411074">Pārvietot uz augšdaļu</translation> <translation id="8250920743982581267">Dokumenti</translation> <translation id="825412236959742607">Šī lapa izmanto pārāk daudz atmiņas, tādēļ pārlūks Chrome noņēma daļu satura.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Bankas kartes īpašnieka vārds</translation> <translation id="8604763363205185560">Palīdziet uzlabot pārlūkprogrammu Chrome un tās drošību</translation> <translation id="8609465669617005112">Virziet uz augšu</translation> +<translation id="8611192991944347781">Pārvaldīt datus</translation> <translation id="8616006591992756292">Jūsu Google kontam var būt citu veidu pārlūkošanas vēstures dati vietnē <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Vai atvērt lejupielādētajā saturā norādīto ieteikto URL?</translation> <translation id="8636825310635137004">Ieslēdziet sinhronizāciju, lai būtu pieejamas cilnes no citām jūsu ierīcēm.</translation> <translation id="8641930654639604085">Pēc iespējas bloķēt vietnes ar pieaugušajiem paredzētu saturu</translation> +<translation id="8655129584991699539">Varat notīrīt datus Chrome iestatījumos</translation> <translation id="8662811608048051533">Jūs tiksiet izrakstīts no lielākās daļas vietņu.</translation> <translation id="8664979001105139458">Faila nosaukums jau pastāv</translation> <translation id="8676374126336081632">Notīrīt ievadi</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Meklējiet kontaktpersonas</translation> <translation id="869891660844655955">Derīguma termiņš</translation> <translation id="8719023831149562936">Nevar kopīgot šo cilni, izmantojot Beam.</translation> +<translation id="8723954843026426558">Es piekrītu domēna <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> pakalpojumu sniegšanas noteikumiem, konfidencialitātes politikai un atteikuma tiesībām</translation> <translation id="8725066075913043281">Mēģināt vēlreiz</translation> <translation id="8728487861892616501">Izmantojot šo lietojumprogrammu, jūs piekrītat Chrome <ph name="BEGIN_LINK1" />pakalpojumu sniegšanas noteikumiem<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />paziņojumam par konfidencialitāti<ph name="END_LINK2" /> un <ph name="BEGIN_LINK3" />paziņojumam par konfidencialitāti Google kontiem, kas tiek pārvaldīti lietotnē Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Gatavs</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ml.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ml.xtb index 0a049cf..e91843b 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ml.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ml.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="ml"> <translation id="1006017844123154345">ഓൺലൈനായി തുറക്കുക</translation> +<translation id="1023450834687746199"><ph name="APP_NAME" /> എന്നതിനുള്ള ഡാറ്റ മായ്ച്ചു.</translation> <translation id="1036727731225946849"><ph name="WEBAPK_NAME" /> ചേർക്കുന്നു...</translation> <translation id="1041308826830691739">വെബ്സൈറ്റുകളിൽ നിന്ന്</translation> <translation id="1049743911850919806">ആള്മാറാട്ടം</translation> @@ -28,7 +29,7 @@ <translation id="1197267115302279827">ബുക്ക്മാർക്കുകൾ നീക്കുക</translation> <translation id="119944043368869598">എല്ലാം നീക്കുക</translation> <translation id="1201402288615127009">അടുത്തത്</translation> -<translation id="1204037785786432551">ലിങ്ക് ഡൗൺലോഡുചെയ്യുക</translation> +<translation id="1204037785786432551">ലിങ്ക് ഡൗൺലോഡ് ചെയ്യുക</translation> <translation id="1206892813135768548">ലിങ്ക് വാചകം പകർത്തുക</translation> <translation id="1208340532756947324">ഉപകരണങ്ങളിൽ ഉടനീളം സമന്വയിപ്പിക്കാനും വ്യക്തിപരമാക്കാനും, സമന്വയിപ്പിക്കൽ ഓണാക്കുക</translation> <translation id="1209206284964581585">ഇപ്പോഴത്തേയ്ക്ക് മറയ്ക്കുക</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">വിലാസ ബാറിലെ ചരിത്രവും സ്വയം പൂർത്തീകരണങ്ങളും മായ്ക്കുന്നു.</translation> <translation id="2021896219286479412">പൂർണ്ണ സ്ക്രീൻ സൈറ്റ് നിയന്ത്രണങ്ങൾ</translation> <translation id="2038563949887743358">'ഡെസ്ക്ടോപ്പ് സൈറ്റ് അഭ്യർത്ഥിക്കുക' ഓണാക്കുക</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> എന്നതിനും Chrome-ൽ ഡാറ്റയുണ്ടായിരുന്നു</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB മറ്റ് ആപ്പുകൾ</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">തിരയാൻ ടാപ്പുചെയ്യുക</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">കാർഡ് എഡിറ്റുചെയ്യുക</translation> <translation id="2154710561487035718">URL പകര്ത്തുക</translation> <translation id="2156074688469523661">ശേഷിക്കുന്ന സൈറ്റുകൾ (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">ഇന്റർനെറ്റ് കണക്ഷൻ പരിശോധിക്കുക</translation> <translation id="2197557662829090533">നിങ്ങൾ സന്ദർശിച്ച വെബ്സൈറ്റുകൾ കാണിക്കാൻ ഡിജിറ്റൽ ആരോഗ്യത്തെ അനുവദിക്കുക</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, വെബ് അപ്ലിക്കേഷൻ. <ph name="APP_URL" /></translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" /> എന്ന പേരിൽ തുടരുക</translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">പരാജയപ്പെട്ടു</translation> <translation id="2781151931089541271">ഒരു സെക്കൻഡ് ശേഷിക്കുന്നു</translation> <translation id="2784212955220061919">ലൈറ്റ് മോഡിൽ, Chrome 60 ശതമാനം വരെ കുറവ് ഡാറ്റ ഉപയോഗിക്കുകയും പേജുകൾ വേഗത്തിൽ ലോഡ് ചെയ്യുകയും ചെയ്യുന്നു. Google-ന്റെ ക്ലൗഡ് സാങ്കേതികവിദ്യ, നിങ്ങൾ സന്ദർശിക്കുന്ന പേജുകൾ ഒപ്റ്റിമൈസ് ചെയ്യുന്നു.</translation> +<translation id="2785336755839207516">നിങ്ങൾ <ph name="APP_NAME" /> ഇൻസ്റ്റാൾ ചെയ്തു.</translation> <translation id="2803478378562657435">സംരക്ഷിച്ച പാസ്വേഡുകളും പാസ്വേഡ് ഓപ്ഷനുകളും കാണിക്കുന്നു</translation> <translation id="2810645512293415242">ഡാറ്റ ലാഭിക്കുന്നതിനും വേഗത്തിൽ ലോഡുചെയ്യുന്നതിനുമായി ലളിതവൽക്കരിച്ചിരിക്കുന്ന പേജ്.</translation> <translation id="281504910091592009">നിങ്ങളുടെ <ph name="BEGIN_LINK" />Google അക്കൗണ്ടിൽ<ph name="END_LINK" /> സംരക്ഷിച്ച പാസ്വേഡുകൾ കാണുക, മാനേജ് ചെയ്യുക</translation> @@ -278,11 +280,12 @@ <translation id="305593374596241526">ലൊക്കേഷൻ ഓഫാണ്; <ph name="BEGIN_LINK" />Android ക്രമീകരണത്തിൽ<ph name="END_LINK" /> അത് ഓണാക്കുക.</translation> <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> ബുക്ക്മാർക്ക്}other{<ph name="BOOKMARKS_COUNT_MANY" /> ബുക്ക്മാർക്കുകൾ}}</translation> <translation id="307908932405420782">ഉടൻ തന്നെ കൂടുതൽ ലേഖനങ്ങൾ ദൃശ്യമാകും. പ്രഭാതം ആസ്വദിക്കൂ!</translation> -<translation id="3089395242580810162">ആൾമാറാട്ട ടാബിൽ തുറക്കുക</translation> +<translation id="3089395242580810162">അദൃശ്യ ടാബിൽ തുറക്കുക</translation> <translation id="311456632243022227">Chrome-ൽ ഒന്നിലധികം ലിങ്കുകൾ തുറന്നു</translation> <translation id="3115898365077584848">വിവരങ്ങൾ കാണിക്കുക</translation> <translation id="3123473560110926937">ചില സൈറ്റുകളിൽ ബ്ലോക്ക് ചെയ്തിരിക്കുന്നു</translation> <translation id="3137521801621304719">ആൾമാറാട്ട മോഡ് വിടുക</translation> +<translation id="3143515551205905069">സമന്വയം റദ്ദാക്കുക</translation> <translation id="3148434565183091099">നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങളിലും ബുക്ക്മാർക്കുകൾ ലഭിക്കാൻ, Chrome-ലേക്ക് സൈൻ ഇൻ ചെയ്യുക.</translation> <translation id="3157842584138209013">'കൂടുതൽ ഓപ്ഷനുകൾ' ബട്ടണിൽ നിങ്ങൾ എത്ര ഡാറ്റ ലാഭിച്ചെന്ന് കാണുക</translation> <translation id="3166827708714933426">ടാബ്, വിൻഡോ കുറുക്കുവഴികൾ</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">ചിത്രം ലോഡുചെയ്യുക</translation> <translation id="3269956123044984603">നിങ്ങളുടെ മറ്റ് ഉപകരണങ്ങളിൽ നിന്നുള്ള ടാബുകൾ ലഭിക്കാൻ, Android അക്കൗണ്ട് ക്രമീകരണത്തിൽ "ഡാറ്റ സ്വയം സമന്വയിപ്പിക്കുക" ഓണാക്കുക.</translation> <translation id="3282568296779691940">Chrome-ലേക്ക് സൈൻ ഇൻ ചെയ്യുക</translation> +<translation id="3288003805934695103">പേജ് റീലോഡുചെയ്യുന്നു</translation> <translation id="32895400574683172">അറിയിപ്പുകൾ അനുവദിച്ചിരിക്കുന്നു</translation> <translation id="3295530008794733555">വേഗത്തിൽ ബ്രൗസ് ചെയ്യൂ. കുറച്ച് ഡാറ്റ ഉപയോഗിക്കൂ.</translation> <translation id="3295602654194328831">വിവരങ്ങൾ മറയ്ക്കുക</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> ഡൗൺലോഡുകൾ ഇല്ലാതാക്കി</translation> <translation id="3819562311292413223">നിങ്ങൾക്കായി ലേഖനങ്ങൾ ഡൗൺലോഡ് ചെയ്യുക</translation> <translation id="3822502789641063741">സൈറ്റ് സ്റ്റോറേജ് മായ്ക്കണോ?</translation> +<translation id="385051799172605136">പിന്നോട്ട്</translation> <translation id="3859306556332390985">മുന്നോട്ട് സീക്കുചെയ്യുക</translation> <translation id="3894427358181296146">ഫോൾഡർ ചേർക്കുക</translation> <translation id="3895926599014793903">നിർബന്ധിത സൂം തയ്യാറാക്കുക</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">സൈൻ ഇൻ</translation> <translation id="395206256282351086">തിരയലും സൈറ്റ് നിർദ്ദേശങ്ങളും പ്രവർത്തനരഹിതമാക്കി</translation> <translation id="3955193568934677022">പരിരക്ഷിത ഉള്ളടക്കം പ്ലേ ചെയ്യാൻ സൈറ്റുകളെ അനുവദിക്കുക (ശുപാർശ ചെയ്തിരിക്കുന്നു)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{നിങ്ങളുടെ പേജ് തയ്യാറാകുമ്പോൾ Chrome ലോഡ് ചെയ്യും}other{നിങ്ങളുടെ പേജുകൾ തയ്യാറാകുമ്പോൾ Chrome ലോഡ് ചെയ്യും}}</translation> <translation id="3963007978381181125">പാസ്ഫ്രെയ്സ് എൻക്രിപ്ഷനിൽ, Google Pay-ൽ നിന്നുള്ള പേയ്മെന്റ് രീതികളും വിലാസങ്ങളും ഉൾപ്പെടുന്നില്ല. നിങ്ങളുടെ പാസ്ഫ്രെയ്സുള്ള വ്യക്തിക്ക് മാത്രമേ എൻക്രിപ്റ്റ് ചെയ്ത ഡാറ്റ വായിക്കാനാവൂ. പാസ്ഫ്രെയ്സ് Google-ലേക്ക് അയയ്ക്കുകയോ സംഭരിക്കുകയോ ചെയ്യുന്നില്ല. പാസ്ഫ്രെയ്സ് മറന്നുപോവുകയോ ഈ ക്രമീകരണം മാറ്റുകയോ ചെയ്യണമെങ്കിൽ, സമന്വയം പുനഃക്രമീകരിക്കേണ്ടി വരും. <ph name="BEGIN_LINK" />കൂടുതലറിയുക<ph name="END_LINK" /></translation> <translation id="3967822245660637423">ഡൗൺലോഡ് പൂർത്തിയായി</translation> <translation id="397583555483684758">'സമന്വയം' പ്രവർത്തനം നിർത്തി</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">മീഡിയ</translation> <translation id="4278390842282768270">അനുവദനീയം</translation> <translation id="429312253194641664">സൈറ്റ്, മീഡിയ പ്ലേ ചെയ്യുന്നു</translation> +<translation id="4298388696830689168">ലിങ്ക് ചെയ്ത സൈറ്റുകൾ</translation> <translation id="4307992518367153382">അടിസ്ഥാനങ്ങള്</translation> <translation id="4314815835985389558">സമന്വയിപ്പിക്കൽ മാനേജ് ചെയ്യുക</translation> <translation id="4351244548802238354">ഡയലോഗ് അടയ്ക്കുക</translation> @@ -683,7 +690,7 @@ <translation id="614940544461990577">പരീക്ഷിച്ചുനോക്കൂ:</translation> <translation id="6154478581116148741">ഈ ഉപകരണത്തിൽ നിന്ന് നിങ്ങളുടെ പാസ്വേഡുകൾ എക്സ്പോർട്ട് ചെയ്യാൻ ക്രമീകരണത്തിൽ സ്ക്രീൻ ലോക്ക് ഓണാക്കുക</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> ഡാറ്റ ലാഭിക്കൽ</translation> -<translation id="6165508094623778733">കൂടുതൽ മനസിലാക്കുക</translation> +<translation id="6165508094623778733">കൂടുതലറിയുക</translation> <translation id="6171019622954353983">തുടരുന്നതിലൂടെ, ഈ സേവനം നൽകാൻ Chrome സ്വമേധയാ പൂരിപ്പിക്കലിൽ നിന്നുള്ള ഡാറ്റ, സൈറ്റിൻ്റെ URL, അതിൻ്റെ ഉള്ളടക്കം എന്നിവ Chrome, Google-ലേക്ക് അയയ്ക്കുമെന്നത് നിങ്ങൾ അംഗീകരിക്കുന്നു.\n\nChrome-ലെയും Chrome സ്വമേധയാ പൂരിപ്പിക്കലിലെയും Google അസിസ്റ്റൻ്റ് ഓഫാക്കാൻ, Chrome ക്രമീകരണം സന്ദർശിക്കുക. <ph name="BEGIN_LINK" />കൂടുതലറിയുക<ph name="END_LINK" /></translation> <translation id="6177111841848151710">നിലവിലെ തിരയൽ എഞ്ചിനിൽ ബ്ലോക്ക് ചെയ്തിരിക്കുന്നു</translation> <translation id="6177390657002841081">ഡാറ്റ സേവർ ഓണാക്കുക</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">നിങ്ങളുടെ ബ്രൗസിംഗ് ട്രാഫിക്കിൽ ഒരു അഭ്യർത്ഥന ഉൾപ്പെടുത്തുമെന്നാണ് 'ട്രാക്ക് ചെയ്യരുത്' ഫീച്ചർ പ്രവർത്തനക്ഷമമാക്കുക എന്നത് അർത്ഥമാക്കുന്നത്. അതിനെ തുടർന്നുള്ള ഏതൊരു കാര്യവും, ഒരു വെബ്സൈറ്റ് അഭ്യർത്ഥനയിന്മേൽ പ്രതികരിക്കുന്നുണ്ടോ എന്നതിനെയും അഭ്യർത്ഥന വ്യാഖ്യാനിക്കുന്നതെങ്ങനെ എന്നതിനെയും ആശ്രയിച്ചിരിക്കും. ഉദാഹരണത്തിന്, ചില വെബ്സൈറ്റുകൾ നിങ്ങൾ സന്ദർശിച്ച മറ്റ് വെബ്സൈറ്റുകളെ അടിസ്ഥാനമാക്കിയുള്ളതല്ലാത്ത പരസ്യങ്ങൾ കാണിച്ച് ഈ അഭ്യർത്ഥനയോട് പ്രതികരിക്കാം. മിക്ക വെബ്സൈറ്റുകളും തുടർന്നും നിങ്ങളുടെ ബ്രൗസിംഗ് ഡാറ്റ ശേഖരിക്കുകയും ഉപയോഗിക്കുകയും ചെയ്യും - ഉദാഹരണത്തിന് അവരുടെ വെബ്സൈറ്റുകളിൽ സുരക്ഷ മെച്ചപ്പെടുത്തുന്നതിനും ഉള്ളടക്കവും പരസ്യങ്ങളും ശുപാർശകളും നൽകുന്നതിനും റിപ്പോർട്ടിംഗ് സ്ഥിതിവിവരക്കണക്കുകൾ സൃഷ്ടിക്കുന്നതിനും.</translation> +<translation id="624789221780392884">അപ്ഡേറ്റ് തയ്യാറാണ്</translation> <translation id="6255999984061454636">ഉള്ളടക്ക നിർദ്ദേശങ്ങൾ</translation> <translation id="6277522088822131679">പേജ് പ്രിന്റുചെയ്യുന്നതിൽ ഒരു പ്രശ്നമുണ്ടായി. വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="6295158916970320988">എല്ലാ സൈറ്റുകളും</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">വീഡിയോ ഡൗൺലോഡുചെയ്യുക</translation> <translation id="6482749332252372425">സ്റ്റോറേജ് ഇടമില്ലാത്തതിനാൽ <ph name="FILE_NAME" /> ഡൗൺലോഡ് ചെയ്യാനായില്ല.</translation> <translation id="6496823230996795692"><ph name="APP_NAME" /> ആദ്യമായി ഉപയോഗിക്കാൻ, ഇന്റര്നെറ്റിലേക്ക് കണക്റ്റുചെയ്യുക.</translation> +<translation id="6508722015517270189">Chrome റീസ്റ്റാർട്ടുചെയ്യുക</translation> <translation id="6527303717912515753">പങ്കിടുക</translation> <translation id="6534565668554028783">Google പ്രതികരിക്കാൻ കൂടുതൽ സമയമെടുത്തു</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB ഡൗൺലോഡുചെയ്തു</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Google Play സേവനങ്ങൾ അപ്ഡേറ്റുചെയ്യുന്നത് പൂർത്തിയാക്കാൻ കാത്തിരിക്കുന്നു</translation> <translation id="7189598951263744875">പങ്കിടുക...</translation> <translation id="7191430249889272776">ടാബ് പശ്ചാത്തലത്തിൽ തുറന്നു.</translation> -<translation id="7221869452894271364">ഈ പേജ് വീണ്ടും ലോഡ് ചെയ്യുക</translation> <translation id="723171743924126238">ചിത്രങ്ങൾ തിരഞ്ഞെടുക്കുക</translation> <translation id="7243308994586599757">സ്ക്രീനിന്റെ ചുവടെ ഓപ്ഷനുകൾ ലഭ്യമാണ്</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> എണ്ണം തിരഞ്ഞെടുത്തു</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">സമയ ശ്രേണി</translation> <translation id="7851858861565204677">മറ്റ് ഉപകരണങ്ങൾ</translation> <translation id="7854964836418414587">'ഇതുപോലുള്ള കൂടുതല്' അവസാനിപ്പിക്കുക</translation> +<translation id="7871791972254842204">പിന്നീട് <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> എന്നതിലെ നയങ്ങളും നിബന്ധനകളും വായിച്ച് അംഗീകരിക്കുക</translation> <translation id="7875915731392087153">ഇമെയിൽ സൃഷ്ടിക്കുക</translation> <translation id="7876243839304621966">എല്ലാം നീക്കംചെയ്യുക</translation> <translation id="7882131421121961860">ചരിത്രം കണ്ടില്ല</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">തുടരൂ</translation> <translation id="8209050860603202033">ചിത്രം തുറക്കുക</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB ഡൗൺലോഡുചെയ്തു</translation> +<translation id="8232956427053453090">ഡാറ്റ സൂക്ഷിക്കുക</translation> <translation id="8249310407154411074">മുകളിലേക്ക് നീക്കുക</translation> <translation id="8250920743982581267">ഡോക്യുമെന്റുകൾ</translation> <translation id="825412236959742607">ഈ പേജ് കൂടുതൽ മെമ്മറി ഉപയോഗിക്കുന്നു, അതിനാൽ Chrome കുറച്ച് ഉള്ളടക്കം നീക്കം ചെയ്തു.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">കാർഡിന്റെ ഉടമയുടെ പേര്</translation> <translation id="8604763363205185560">Chrome, അതിന്റെ സുരക്ഷ എന്നിവ മെച്ചപ്പെടുത്താൻ സഹായിക്കുക</translation> <translation id="8609465669617005112">മുകളിലേക്ക് നീക്കുക</translation> +<translation id="8611192991944347781">ഡാറ്റ മാനേജ് ചെയ്യുക</translation> <translation id="8616006591992756292">നിങ്ങളുടെ Google അക്കൗണ്ടിന് <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> എന്നതിൽ മറ്റ് തരത്തിലുള്ള ബ്രൗസിംഗ് ചരിത്രമുണ്ടായിരിക്കാം.</translation> <translation id="8617240290563765734">ഡൗൺലോഡുചെയ്ത ഉള്ളടക്കത്തിൽ നിർദ്ദേശിച്ചിട്ടുള്ള URL തുറക്കണോ?</translation> <translation id="8636825310635137004">നിങ്ങളുടെ മറ്റ് ഉപകരണങ്ങളിൽ നിന്നുള്ള ടാബുകൾ ലഭിക്കാൻ, സമന്വയിപ്പിക്കൽ ഓണാക്കുക.</translation> <translation id="8641930654639604085">മുതിർന്നവർക്കുള്ള സൈറ്റുകൾ ബ്ലോക്കുചെയ്യുന്നത് പരീക്ഷിച്ചുനോക്കൂ</translation> +<translation id="8655129584991699539">Chrome ക്രമീകരണത്തിൽ നിങ്ങൾക്ക് ഈ ഡാറ്റ മായ്ക്കാം</translation> <translation id="8662811608048051533">നിങ്ങൾ മിക്ക സൈറ്റുകളിൽ നിന്നും സൈൻ ഔട്ടാകും.</translation> <translation id="8664979001105139458">ഫയലിന്റെ പേര് ഇതിനകം നിലവിലുണ്ട്</translation> <translation id="8676374126336081632">ഇൻപുട്ട് മായ്ക്കുക</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">നിങ്ങളുടെ കോൺടാക്റ്റുകൾ തിരയുക</translation> <translation id="869891660844655955">കാലഹരണപ്പെടല് തീയതി</translation> <translation id="8719023831149562936">നിലവിലെ ടാബ് ബീം ചെയ്യാനാകില്ല</translation> +<translation id="8723954843026426558">നയങ്ങളും നിബന്ധനകളും, സ്വകാര്യതാ നയം, <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />-ന്റെ റദ്ദാക്കാനുള്ള അവകാശം എന്നിവ ഞാൻ അംഗീകരിക്കുന്നു.</translation> <translation id="8725066075913043281">വീണ്ടും ശ്രമിക്കുക</translation> <translation id="8728487861892616501">ഈ ആപ്പ് ഉപയോഗിക്കുന്നതിലൂടെ, നിങ്ങൾ Chrome-ന്റെ <ph name="BEGIN_LINK1" />സേവന നിബന്ധനകൾ<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />സ്വകാര്യതാ അറിയിപ്പ്<ph name="END_LINK2" />, <ph name="BEGIN_LINK3" />Family Link ഉപയോഗിച്ച് നിയന്ത്രിക്കുന്ന Google അക്കൗണ്ടുകളുടെ സ്വകാര്യതാ അറിയിപ്പ്<ph name="END_LINK3" /> എന്നിവ അംഗീകരിക്കുന്നു.</translation> <translation id="8730621377337864115">പൂർത്തിയാക്കി</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_mr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_mr.xtb index e87de49..16fe7c3 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_mr.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_mr.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="mr"> <translation id="1006017844123154345">ऑनलाइन उघडा</translation> +<translation id="1023450834687746199">तुम्ही <ph name="APP_NAME" />साठीचा डेटा साफ केला आहे.</translation> <translation id="1036727731225946849"><ph name="WEBAPK_NAME" /> जोडत आहे…</translation> <translation id="1041308826830691739">वेबसाइटवरून</translation> <translation id="1049743911850919806">गुप्त</translation> @@ -28,7 +29,7 @@ <translation id="1197267115302279827">बुकर्माक हलवा</translation> <translation id="119944043368869598">सर्व साफ करा</translation> <translation id="1201402288615127009">पुढील</translation> -<translation id="1204037785786432551">दुवा डाउनलोड करा</translation> +<translation id="1204037785786432551">लिंक डाउनलोड करा</translation> <translation id="1206892813135768548">दुवा मजकूर कॉपी करा</translation> <translation id="1208340532756947324">सर्व डिव्हाइसवर सिंक आणि पर्सनलाइझ करण्यासाठी, सिंक सुरू करा</translation> <translation id="1209206284964581585">आतासाठी लपवा</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">अॅड्रेस बारमधील इतिहास आणि आपोआप पूर्ण केलेले साफ करते.</translation> <translation id="2021896219286479412">फुल स्क्रीन साइट नियंत्रणे</translation> <translation id="2038563949887743358">डेस्कटॉप साइट विनंती चालू करा</translation> +<translation id="204321170514947529"><ph name="APP_NAME" />चा Chrome मध्ये देखील डेटा आहे</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB अन्य अॅप्स</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">शोधण्यासाठी टॅप करा</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">कार्ड संपादित करा</translation> <translation id="2154710561487035718">URL कॉपी करा</translation> <translation id="2156074688469523661">उर्वरित साइट (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">तुमचे इंटरनेट कनेक्शन तपासा</translation> <translation id="2197557662829090533">डिजिटल संतुलनाला तुम्ही भेट दिलेल्या वेबसाइट दाखवण्याची अनुमती द्या</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, वेब ॲप. <ph name="APP_URL" /></translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" /> म्हणून सुरू ठेवा</translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">अयशस्वी झाले</translation> <translation id="2781151931089541271">1 सेकंद शिल्लक</translation> <translation id="2784212955220061919">लाइट मोडमध्ये, Chrome पेज आणखी जलद लोड करते आणि ६० टक्के पर्यंत कमी डेटा वापरते. Google चे क्लाउड तंत्रज्ञान तुम्ही भेट देत असलेल्या पेजना ऑप्टिमाइझ करते.</translation> +<translation id="2785336755839207516">तुम्ही <ph name="APP_NAME" /> अनइंस्टॉल केले आहे.</translation> <translation id="2803478378562657435">सेव्ह केलेले पासवर्ड आणि पासवर्ड पर्याय दाखवत आहे</translation> <translation id="2810645512293415242">डेटा सेव्ह करण्यासाठी आणि तो लवकर लोड होण्यासाठी पेज सुलभ केले.</translation> <translation id="281504910091592009">तुमच्या <ph name="BEGIN_LINK" />Google खात्यामध्ये<ph name="END_LINK" /> सेव्ह केलेले पासवर्ड पाहा आणि व्यवस्थापित करा</translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">माहिती दाखवा</translation> <translation id="3123473560110926937">काही साइटवर ब्लॉक केले आहे</translation> <translation id="3137521801621304719">गुप्त मोड सोडा</translation> +<translation id="3143515551205905069">सिंक रद्द करा</translation> <translation id="3148434565183091099">आपल्या सर्व डिव्हाइसेसवर तुमचे बुकमार्क प्राप्त करण्यासाठी, Chrome मध्ये साइन इन करा.</translation> <translation id="3157842584138209013">आणिखी पर्याय बटणावरून तुम्ही किती डेटा सेव्ह केला आहे ते पहा</translation> <translation id="3166827708714933426">टॅब आणि विंडो शॉर्टकट</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">इमेज लोड करा</translation> <translation id="3269956123044984603">तुमच्या अन्य डिव्हाइसवरून तुमचे टॅब मिळविण्यासाठी, Android खाते सेटिंग्ज मधील “डेटा अॉटो-सिंक करा” चालू करा.</translation> <translation id="3282568296779691940">Chrome वर साइन इन करा</translation> +<translation id="3288003805934695103">पृष्ठ रीलोड करणे</translation> <translation id="32895400574683172">सूचनांना अनुमती आहे</translation> <translation id="3295530008794733555">आणखी जलद ब्राउझ करा. कमी डेटा वापरा.</translation> <translation id="3295602654194328831">माहिती लपवा</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> डाउनलोड हटविले</translation> <translation id="3819562311292413223">तुमच्यासाठी लेख डाउनलोड करा</translation> <translation id="3822502789641063741">साइट स्टोरेज साफ करायचा?</translation> +<translation id="385051799172605136">मागील</translation> <translation id="3859306556332390985">पुढे शोधा</translation> <translation id="3894427358181296146">फोल्डर जोडा</translation> <translation id="3895926599014793903">झूम सक्षम करण्याची सक्ती</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">साइन इन करा</translation> <translation id="395206256282351086">शोध आणि साइट सूचना बंद आहेत</translation> <translation id="3955193568934677022">संरक्षित सामग्री प्ले करण्यासाठी साइटना अनुमती द्या (शिफारस केलेले)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{तयार झाल्यावर, Chrome तुमचे पेज लोड करेल}one{तयार झाल्यावर, Chrome तुमचे पेज लोड करेल}other{तयार झाल्यावर, Chrome तुमची पेज लोड करेल}}</translation> <translation id="3963007978381181125">पासफ्रेज एंक्रिप्शनमध्ये Google Pay वरील पेमेंट पद्धतींचा आणि पत्त्यांचा समावेश नसतो. फक्त तुमचा पासफ्रेज असलेली एखादी व्यक्ती तुमचा एंक्रिप्ट केलेला डेटा वाचू शकते. पासफ्रेज Google कडे पाठवला किंवा त्याद्वारे स्टोअर केला जात नाही. तुम्ही तुमचा पासफ्रेज विसरल्यास किंवा तुम्हाला हे सेटिंग बदलायचे असल्यास, तुम्हाला सिंक रीसेट करण्याची आवश्यकता असेल. <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation> <translation id="3967822245660637423">पूर्ण डाउनलोड करा</translation> <translation id="397583555483684758">संकालनाने कार्य करणे थांबविले आहे</translation> @@ -415,7 +421,7 @@ <translation id="4170011742729630528">सेवा उपलब्ध नाही; नंतर पुन्हा प्रयत्न करा.</translation> <translation id="4179980317383591987"><ph name="AMOUNT" /> वापरला</translation> <translation id="4181841719683918333">भाषा</translation> -<translation id="4195643157523330669">नवीन विंडोमध्ये उघडा</translation> +<translation id="4195643157523330669">नवीन टॅबमध्ये उघडा</translation> <translation id="4198423547019359126">कोणतीही डाउनलोड स्थाने उपलब्ध नाहीत</translation> <translation id="4209895695669353772">Google ने सुचवलेला पर्सनलाइझ केलेला आशय मिळवण्यासाठी, सिंक सुरू करा</translation> <translation id="4225719675976901337">कोणताही आशय आढळला नाही</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">माध्यम</translation> <translation id="4278390842282768270">अनुमत</translation> <translation id="429312253194641664">साइट मीडिया प्ले करत आहे</translation> +<translation id="4298388696830689168">लिंक केलेल्या साइट</translation> <translation id="4307992518367153382">मूलभूत</translation> <translation id="4314815835985389558">सिंक व्यवस्थापित करा</translation> <translation id="4351244548802238354">संवाद बंद करा</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">'Do Not Track' सक्षम करणे अर्थात आपल्या ब्राउझिंग रहदारीमध्ये एक विनंती समाविष्ट केली जाईल. वेबसाइट विनंतीस प्रतिसाद देते किंवा नाही आणि विनंतीचा निष्कर्ष कसा काढला जातो यावर कोणताही प्रभाव अवलंबून असतो. उदाहरणार्थ, काही वेबसाइट तुम्ही भेट दिलेल्या इतर वेबसाइटवर आधारित नसलेल्या जाहिराती आपल्याला दर्शवून या विनंतीस प्रतिसाद देऊ शकतात. अनेक वेबसाइट अद्यापही तुमचा ब्राउझिंग डेटा संकलित करून त्याचा वापर करतील - उदाहरणार्थ त्यांच्या वेबसाइटवर सुरक्षितता सुधारणे, सामग्री, जाहिराती आणि शिफारशी प्रदान करणे आणि अहवाल आकडेवारी व्युत्पन्न करणे.</translation> +<translation id="624789221780392884">अपडेट तयार</translation> <translation id="6255999984061454636">आशय सूचना</translation> <translation id="6277522088822131679">पृष्ठ प्रिंट करण्यात एक समस्या होती. कृपया पुन्हा प्रयत्न करा.</translation> <translation id="6295158916970320988">सर्व साइट</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">व्हिडिओ डाउनलोड करा</translation> <translation id="6482749332252372425">स्टोरेज स्थानाच्या अभावामुळे <ph name="FILE_NAME" /> डाउनलोड अयशस्वी झाले.</translation> <translation id="6496823230996795692"><ph name="APP_NAME" /> पहिल्यांदा वापरण्यासाठी, कृपया इंटरनेटशी कनेक्ट करा.</translation> +<translation id="6508722015517270189">Chrome रीस्टार्ट करा</translation> <translation id="6527303717912515753">शेअर करा</translation> <translation id="6534565668554028783">Google ने प्रतिसाद देण्यास बराच वेळ घेतला</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB डाउलोड केले</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Google Play सेवांंनी अपडेट करणे समाप्त करण्याची प्रतीक्षा करीत आहे</translation> <translation id="7189598951263744875">सामयिक करा...</translation> <translation id="7191430249889272776">पार्श्वभूमीवर उघडा असलेला टॅब.</translation> -<translation id="7221869452894271364">हे पृष्ठ रीलोड करा</translation> <translation id="723171743924126238">इमेज निवडा</translation> <translation id="7243308994586599757">स्क्रीनच्या तळाशी पर्याय उपलब्ध आहेत</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> निवडले</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">वेळ वर्गवारी</translation> <translation id="7851858861565204677">इतर डिव्हाइसेस</translation> <translation id="7854964836418414587">यासारखे आणखी बंद करा</translation> +<translation id="7871791972254842204">नंतर <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> वरील अटी आणि नियम वाचा आणि त्यांच्याशी सहमती दर्शवा</translation> <translation id="7875915731392087153">ईमेल तयार करा</translation> <translation id="7876243839304621966">सर्व काढून टाका</translation> <translation id="7882131421121961860">कोणताही इतिहास सापडला नाही</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">रेझ्युमे</translation> <translation id="8209050860603202033">इमेज उघडा</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB डाउनलोड केले</translation> +<translation id="8232956427053453090">स्टोअर करायचा असलेला डेटा</translation> <translation id="8249310407154411074">वर न्या</translation> <translation id="8250920743982581267">दस्तऐवज</translation> <translation id="825412236959742607">हे पेज खूप जास्त मेमरी वापरत असल्यामुळे, Chrome ने काही आशय काढून टाकला आहे.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">कार्डधारकाचे नाव</translation> <translation id="8604763363205185560">Chrome आणि त्याची सुरक्षितता सुधारण्यास मदत करा</translation> <translation id="8609465669617005112">वर हलवा</translation> +<translation id="8611192991944347781">डेटा व्यवस्थापित करा</translation> <translation id="8616006591992756292">तुमच्या Google खात्यात <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> वर ब्राउझिंग इतिहासाची अन्य स्वरूपे असू शकतात.</translation> <translation id="8617240290563765734">डाउनलोड केलेल्या सामग्रीमध्ये नमूद केलेली सुचविलेली URL उघडायची?</translation> <translation id="8636825310635137004">आपल्या इतर डिव्हाइसेस मधून तुमचे टॅब प्राप्त करण्यासाठी, संकालन चालू करा</translation> <translation id="8641930654639604085">प्रौढ सामग्री असलेल्या साइटना अवरोधित करण्याचा प्रयत्न करा</translation> +<translation id="8655129584991699539">तुम्ही Chrome सेटिंग्जमध्ये डेटा साफ करू शकता</translation> <translation id="8662811608048051533">तुम्हाला बहुतांश साइटवरून साइन आउट करते.</translation> <translation id="8664979001105139458">फाइलचे नाव आधीपासून अस्तित्वात आहे</translation> <translation id="8676374126336081632">इनपुट साफ करा</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">तुमचे संपर्क शोधा</translation> <translation id="869891660844655955">कालावधी समाप्ती तारीख</translation> <translation id="8719023831149562936">वर्तमान टॅब बीम करू शकत नाही</translation> +<translation id="8723954843026426558">मी अटी आणि नियम, गोपनीयता धोरण आणि <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> मधून बाहेर पडण्याच्या अधिकाराला साहमती दर्शवतो/ते</translation> <translation id="8725066075913043281">पुन्हा प्रयत्न करा</translation> <translation id="8728487861892616501">हे अॅप्लिकेशन वापरून, तुम्ही Chrome च्या <ph name="BEGIN_LINK1" />सेवा अटी<ph name="END_LINK1" /> आणि <ph name="BEGIN_LINK2" />गोपनीयता सूचना<ph name="END_LINK2" /> आणि <ph name="BEGIN_LINK3" />Family Link ने व्यवस्थापित केलेल्या Google खात्यांसाठी गोपनीयता सूचना<ph name="END_LINK3" /> यांना सहमती दर्शवता.</translation> <translation id="8730621377337864115">पूर्ण झाले</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ms.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ms.xtb index 551d64a..31115c1 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ms.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ms.xtb
@@ -167,7 +167,6 @@ <translation id="2154484045852737596">Edit kad</translation> <translation id="2154710561487035718">Salin URL</translation> <translation id="2156074688469523661">Baki tapak (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Periksa sambungan Internet anda</translation> <translation id="2197557662829090533">Benarkan Kesejahteraan Digital menunjukkan tapak web yang anda lawati</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, apl web. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Teruskan sebagai <ph name="USER_FULL_NAME" /></translation> @@ -286,6 +285,7 @@ <translation id="3115898365077584848">Tunjukkan Maklumat</translation> <translation id="3123473560110926937">Disekat di sesetengah tapak</translation> <translation id="3137521801621304719">Tinggalkan mod inkognito</translation> +<translation id="3143515551205905069">Batalkan penyegerakan</translation> <translation id="3148434565183091099">Log masuk ke Chrome untuk mendapatkan penanda halaman pada semua peranti anda.</translation> <translation id="3157842584138209013">Lihat jumlah data yang dapat dijimatkan daripada butang Lagi Pilihan</translation> <translation id="3166827708714933426">Pintasan tab dan tetingkap</translation> @@ -304,6 +304,7 @@ <translation id="3269093882174072735">Muatkan imej</translation> <translation id="3269956123044984603">Untuk mendapatkan tab daripada peranti anda yang lain, hidupkan "Auto segerak data" dalam tetapan akaun Android.</translation> <translation id="3282568296779691940">Log masuk ke Chrome</translation> +<translation id="3288003805934695103">Memuatkan semula halaman</translation> <translation id="32895400574683172">Pemberitahuan dibenarkan</translation> <translation id="3295530008794733555">Semak imbas lebih pantas. Gunakan kurang data.</translation> <translation id="3295602654194328831">Sembunyikan Maklumat</translation> @@ -373,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> muat turun dipadamkan</translation> <translation id="3819562311292413223">Muat turun artikel untuk anda</translation> <translation id="3822502789641063741">Hapuskan storan tapak?</translation> +<translation id="385051799172605136">Kembali</translation> <translation id="3859306556332390985">Cari ke hadapan</translation> <translation id="3894427358181296146">Tambah folder</translation> <translation id="3895926599014793903">Zum didaya paksa</translation> @@ -704,6 +706,7 @@ <translation id="6232535412751077445">Tindakan mendayakan "Jangan Kesan" bermaksud permintaan akan disertakan dengan trafik penyemakan imbas anda. Sebarang kesan bergantung pada sama ada tapak web memberi respons kepada permintaan dan cara permintaan ditafsirkan. Sebagai contoh, sesetengah tapak web mungkin memberi respons kepada permintaan ini dengan memaparkan iklan yang tidak berdasarkan tapak web lain yang anda lawati. Pelbagai tapak web masih akan mengumpul dan menggunakan data penyemakan imbas anda — contohnya, untuk meningkatkan keselamatan, untuk menyediakan kandungan, iklan dan cadangan serta untuk menjana statistik pelaporan.</translation> +<translation id="624789221780392884">Kemaskini bersedia</translation> <translation id="6255999984061454636">Cadangan kandungan</translation> <translation id="6277522088822131679">Terdapat masalah semasa mencetak halaman. Sila cuba sekali lagi.</translation> <translation id="6295158916970320988">Semua tapak</translation> @@ -739,6 +742,7 @@ <translation id="6475951671322991020">Muat turun video</translation> <translation id="6482749332252372425">Muat turun <ph name="FILE_NAME" /> gagal kerana ruang storan tidak mencukupi.</translation> <translation id="6496823230996795692">Untuk menggunakan <ph name="APP_NAME" /> buat kali pertama, sila bersambung ke Internet.</translation> +<translation id="6508722015517270189">Mulakan semula Chrome</translation> <translation id="6527303717912515753">Kongsi</translation> <translation id="6534565668554028783">Google mengambil masa terlalu lama untuk bertindak balas</translation> <translation id="6538442820324228105">Dimuat turun <ph name="GBS" /> GB</translation> @@ -837,7 +841,6 @@ <translation id="7189372733857464326">Menunggu Perkhidmatan Google Play selesai mengemas kini</translation> <translation id="7189598951263744875">Kongsi...</translation> <translation id="7191430249889272776">Tab dibuka di latar belakang.</translation> -<translation id="7221869452894271364">Muatkan semula halaman ini</translation> <translation id="723171743924126238">Pilih imej</translation> <translation id="7243308994586599757">Pilihan tersedia berhampiran bahagian bawah skrin</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> dipilih</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb index b1e76be1..0fc73ea 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="nl"> <translation id="1006017844123154345">Online openen</translation> +<translation id="1023450834687746199">Je hebt de gegevens voor <ph name="APP_NAME" /> verwijderd.</translation> <translation id="1036727731225946849"><ph name="WEBAPK_NAME" /> toevoegen...</translation> <translation id="1041308826830691739">Van websites</translation> <translation id="1049743911850919806">Incognito</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Wist de geschiedenis en automatische aanvullingen in de adresbalk.</translation> <translation id="2021896219286479412">Siteopties op volledig scherm</translation> <translation id="2038563949887743358">'Desktopsite aanvragen' inschakelen</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> heeft ook gegevens in Chrome</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB voor andere apps</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Tikken om te zoeken</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Kaart bewerken</translation> <translation id="2154710561487035718">URL kopiëren</translation> <translation id="2156074688469523661">Resterende sites (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Controleer je internetverbinding</translation> <translation id="2197557662829090533">Digitaal welzijn toestaan om websites weer te geven die je hebt bezocht</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, webapp. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Doorgaan als <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">mislukt</translation> <translation id="2781151931089541271">1 seconde resterend</translation> <translation id="2784212955220061919">In de Lite-versie van Chrome worden pagina's sneller geladen en wordt tot wel 60 procent minder data verbruikt. De cloudtechnologie van Google optimaliseert de pagina's die je bezoekt.</translation> +<translation id="2785336755839207516">Je hebt <ph name="APP_NAME" /> verwijderd.</translation> <translation id="2803478378562657435">Opgeslagen wachtwoorden en wachtwoordopties weergeven</translation> <translation id="2810645512293415242">Vereenvoudigde pagina om data te besparen en sneller te laden.</translation> <translation id="281504910091592009">Bekijk en beheer opgeslagen wachtwoorden in je <ph name="BEGIN_LINK" />Google-account<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Informatie weergeven</translation> <translation id="3123473560110926937">Geblokkeerd op bepaalde sites</translation> <translation id="3137521801621304719">Incognitomodus verlaten</translation> +<translation id="3143515551205905069">Synchronisatie annuleren</translation> <translation id="3148434565183091099">Log in bij Chrome om al je bladwijzers op al je apparaten te bekijken.</translation> <translation id="3157842584138209013">Via de knop 'Meer opties' kun je zien hoeveel data je hebt bespaard</translation> <translation id="3166827708714933426">Sneltoetsen voor tabbladen en vensters</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Afbeelding laden</translation> <translation id="3269956123044984603">Schakel in je account bij de instellingen van Android 'Gegevens automatisch synchroniseren' in om de tabbladen op je andere apparaten te bekijken.</translation> <translation id="3282568296779691940">Inloggen bij Chrome</translation> +<translation id="3288003805934695103">Laad de pagina opnieuw</translation> <translation id="32895400574683172">Meldingen zijn toegestaan</translation> <translation id="3295530008794733555">Surf sneller en verbruik minder data</translation> <translation id="3295602654194328831">Informatie verbergen</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> downloads verwijderd</translation> <translation id="3819562311292413223">Artikelen voor jou downloaden</translation> <translation id="3822502789641063741">Site-opslag wissen?</translation> +<translation id="385051799172605136">Vorige</translation> <translation id="3859306556332390985">Vooruit zoeken</translation> <translation id="3894427358181296146">Map toevoegen</translation> <translation id="3895926599014793903">Zoom inschakelen forceren</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Inloggen</translation> <translation id="395206256282351086">Zoek- en sitesuggesties uitgeschakeld</translation> <translation id="3955193568934677022">Toestaan dat sites beveiligde content afspelen (aanbevolen)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome laadt de pagina wanneer deze gereed is}other{Chrome laadt de pagina's wanneer deze gereed zijn}}</translation> <translation id="3963007978381181125">Wachtwoordzinversleuteling is niet van toepassing op betaalmethoden en adressen van Google Pay. Alleen iemand met je wachtwoordzin kan je versleutelde gegevens lezen. De wachtwoordzin wordt niet verzonden naar of opgeslagen door Google. Als je je wachtwoordzin vergeet of deze instelling wilt wijzigen, moet je de synchronisatie resetten. <ph name="BEGIN_LINK" />Meer informatie<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Downloaden voltooid</translation> <translation id="397583555483684758">Synchronisatie werkt niet meer</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Media</translation> <translation id="4278390842282768270">Toegestaan</translation> <translation id="429312253194641664">Een site speelt media af</translation> +<translation id="4298388696830689168">Gekoppelde sites</translation> <translation id="4307992518367153382">Basisinstellingen</translation> <translation id="4314815835985389558">Synchronisatie beheren</translation> <translation id="4351244548802238354">Dialoogvenster sluiten</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Als je 'Niet bijhouden' inschakelt, wordt hiervoor een verzoek opgenomen in je browseverkeer. Het resultaat daarvan hangt af van of een website reageert op het verzoek en hoe het verzoek wordt geïnterpreteerd. Zo kunnen sommige websites op dit verzoek reageren door advertenties weer te geven die niet zijn gebaseerd op andere websites die je hebt bezocht. Toch blijven veel websites je browsegegevens nog verzamelen en gebruiken, bijvoorbeeld om de beveiliging te verbeteren, om content, services, advertenties en aanbevelingen te leveren en om rapportagestatistieken te genereren.</translation> +<translation id="624789221780392884">Update gereed</translation> <translation id="6255999984061454636">Contentsuggesties</translation> <translation id="6277522088822131679">Er is een fout opgetreden bij het afdrukken van de pagina. Probeer het opnieuw.</translation> <translation id="6295158916970320988">Alle sites</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Video downloaden</translation> <translation id="6482749332252372425">Downloaden van <ph name="FILE_NAME" /> is mislukt door te weinig opslagruimte.</translation> <translation id="6496823230996795692">Maak verbinding met internet als je <ph name="APP_NAME" /> voor het eerst wilt gebruiken.</translation> +<translation id="6508722015517270189">Chrome opnieuw starten</translation> <translation id="6527303717912515753">Delen</translation> <translation id="6534565668554028783">Het duurt te lang voordat Google reageert</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB gedownload</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Wachten tot Google Play-services is geüpdatet</translation> <translation id="7189598951263744875">Delen...</translation> <translation id="7191430249889272776">Tabblad op de achtergrond geopend.</translation> -<translation id="7221869452894271364">Deze pagina opnieuw laden</translation> <translation id="723171743924126238">Afbeeldingen selecteren</translation> <translation id="7243308994586599757">Opties beschikbaar onder aan het scherm</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> geselecteerd</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Periode</translation> <translation id="7851858861565204677">Andere apparaten</translation> <translation id="7854964836418414587">'Meer zoals dit' sluiten</translation> +<translation id="7871791972254842204">De algemene voorwaarden voor <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> later lezen en ermee akkoord gaan</translation> <translation id="7875915731392087153">E-mail maken</translation> <translation id="7876243839304621966">Alles verwijderen</translation> <translation id="7882131421121961860">Geen geschiedenis gevonden</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Hervatten</translation> <translation id="8209050860603202033">Afbeelding openen</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB gedownload</translation> +<translation id="8232956427053453090">Gegevens behouden</translation> <translation id="8249310407154411074">Bovenaan zetten</translation> <translation id="8250920743982581267">Documenten</translation> <translation id="825412236959742607">Omdat deze pagina te veel geheugen gebruikt, heeft Chrome wat content verwijderd.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Naam kaarthouder</translation> <translation id="8604763363205185560">Help Chrome en de beveiliging daarvan te verbeteren</translation> <translation id="8609465669617005112">Omhoog</translation> +<translation id="8611192991944347781">Gegevens beheren</translation> <translation id="8616006591992756292">Er kunnen andere vormen van browsegeschiedenis zijn opgeslagen voor je Google-account op <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">De voorgestelde URL in de gedownloade content openen?</translation> <translation id="8636825310635137004">Schakel synchronisatie in om de tabbladen op je andere apparaten te bekijken</translation> <translation id="8641930654639604085">Sites met content voor volwassenen proberen te blokkeren</translation> +<translation id="8655129584991699539">Je kunt de gegevens wissen in de Chrome-instellingen</translation> <translation id="8662811608048051533">Hiermee word je uitgelogd van de meeste sites.</translation> <translation id="8664979001105139458">Bestandsnaam bestaat al</translation> <translation id="8676374126336081632">Invoer wissen</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Zoek in je contacten</translation> <translation id="869891660844655955">Vervaldatum</translation> <translation id="8719023831149562936">Kan huidig tabblad niet beamen</translation> +<translation id="8723954843026426558">Ik ga akkoord met de algemene voorwaarden, het privacybeleid en het herroepingsrecht van <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Opnieuw proberen</translation> <translation id="8728487861892616501">Door deze app te gebruiken, ga je akkoord met de <ph name="BEGIN_LINK1" />Servicevoorwaarden<ph name="END_LINK1" /> en het <ph name="BEGIN_LINK2" />Privacybeleid<ph name="END_LINK2" /> van Chrome en het <ph name="BEGIN_LINK3" />Privacybeleid voor Google-accounts die worden beheerd met Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Gereed</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_no.xtb b/chrome/android/java/strings/translations/android_chrome_strings_no.xtb index d160d05e..e7329ba0 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_no.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_no.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="no"> <translation id="1006017844123154345">Åpne på nettet</translation> +<translation id="1023450834687746199">Du har slettet dataene for <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">Legger til <ph name="WEBAPK_NAME" /> …</translation> <translation id="1041308826830691739">Fra nettsteder</translation> <translation id="1049743911850919806">Inkognito</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Tømmer loggen og fjerner automatiske fullføringer fra adressefeltet.</translation> <translation id="2021896219286479412">Navigering i full skjerm</translation> <translation id="2038563949887743358">Slå på Bruk skrivebordsversjon</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> har også data i Chrome</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB andre apper</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Trykk for å søke</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Endre kortet</translation> <translation id="2154710561487035718">Kopier nettadresse</translation> <translation id="2156074688469523661">Andre nettsteder (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Sjekk internettilkoblingen</translation> <translation id="2197557662829090533">La Digital balanse vise nettsteder du har besøkt</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, nettprogram. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Fortsett som <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">mislyktes</translation> <translation id="2781151931089541271">1 sekund igjen</translation> <translation id="2784212955220061919">I forenklet modus laster Chrome inn sider raskere og bruker opptil 60 prosent mindre data. Googles skyteknologi optimaliserer sidene du besøker.</translation> +<translation id="2785336755839207516">Du har avinstallert <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Viser lagrede passord og passordalternativer</translation> <translation id="2810645512293415242">Siden er forenklet for å spare data og laste den inn raskere.</translation> <translation id="281504910091592009">Se og administrer lagrede passord i <ph name="BEGIN_LINK" />Google-kontoen<ph name="END_LINK" /> din</translation> @@ -277,12 +279,13 @@ <translation id="3045654778214005718">Se mer som dette fra Google</translation> <translation id="305593374596241526">Posisjon er slått av. Slå den på i <ph name="BEGIN_LINK" />Android-innstillingene<ph name="END_LINK" />.</translation> <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> bokmerke}other{<ph name="BOOKMARKS_COUNT_MANY" /> bokmerker}}</translation> -<translation id="307908932405420782">Flere artikler kommer snart. Ha en fin morgen.</translation> +<translation id="307908932405420782">Flere artikler kommer snart. Ha en fin dag.</translation> <translation id="3089395242580810162">Åpne i inkognitofane</translation> <translation id="311456632243022227">Flere linker er åpnet i Chrome</translation> <translation id="3115898365077584848">Vis informasjon</translation> <translation id="3123473560110926937">Blokkert på enkelte nettsteder</translation> <translation id="3137521801621304719">Avslutt inkognitomodus</translation> +<translation id="3143515551205905069">Avbryt synkronisering</translation> <translation id="3148434565183091099">Logg på Chrome for å få bokmerkene dine på alle enhetene du bruker.</translation> <translation id="3157842584138209013">Se hvor mye data du har spart, via Flere alternativer-knappen</translation> <translation id="3166827708714933426">Hurtigtaster for vinduer og faner</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Last inn bildet</translation> <translation id="3269956123044984603">For å få fanene dine fra de andre enhetene du bruker, slå på «Synkroniser data automatisk» i kontoinnstillingene for Android.</translation> <translation id="3282568296779691940">Logg på Chrome</translation> +<translation id="3288003805934695103">Last inn siden på nytt</translation> <translation id="32895400574683172">Varsler er tillatt</translation> <translation id="3295530008794733555">Surf raskere. Bruk mindre data.</translation> <translation id="3295602654194328831">Skjul informasjonen</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> nedlastinger er slettet</translation> <translation id="3819562311292413223">Last ned artikler for deg</translation> <translation id="3822502789641063741">Slette nettstedslagring?</translation> +<translation id="385051799172605136">Tilbake</translation> <translation id="3859306556332390985">Spol fremover</translation> <translation id="3894427358181296146">Legg til en mappe</translation> <translation id="3895926599014793903">Tving zoom på</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Logg på</translation> <translation id="395206256282351086">Nettsteds- og søkeforslag er slått av</translation> <translation id="3955193568934677022">Gi nettsteder tillatelse til å spille av beskyttet innhold (anbefales)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome laster inn siden når den er klar}other{Chrome laster inn sidene når de er klare}}</translation> <translation id="3963007978381181125">Kryptering av passordfraser inkluderer ikke betalingsmåter og adresser fra Google Pay. Bare personer som har passordfrasen din, kan lese de krypterte dataene dine. Passordfrasen blir verken sendt til Google eller lagret. Hvis du glemmer den, må du tilbakestille synkroniseringen. <ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Nedlasting fullført</translation> <translation id="397583555483684758">Synkroniseringen har sluttet å fungere</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Medier</translation> <translation id="4278390842282768270">Tillatt</translation> <translation id="429312253194641664">Et nettsted spiller av medier</translation> +<translation id="4298388696830689168">Tilknyttede nettsteder</translation> <translation id="4307992518367153382">Generelt</translation> <translation id="4314815835985389558">Administrer synkronisering</translation> <translation id="4351244548802238354">Lukk dialogboks</translation> @@ -683,7 +690,7 @@ <translation id="614940544461990577">Prøv dette:</translation> <translation id="6154478581116148741">Slå på skjermlåsen i Innstillinger for å eksportere passordene dine fra denne enheten</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> datasparing</translation> -<translation id="6165508094623778733">Les mer</translation> +<translation id="6165508094623778733">Finn ut mer</translation> <translation id="6171019622954353983">Hvis du fortsetter, godtar du at Chrome sender data fra Chrome autofyll samt nettstedets nettadresse og innhold til Google, slik at vi kan levere denne tjenesten.\n\nDu kan gå til Chrome-innstillingene for å slå av Google-assistenten i Chrome og Chrome autofyll. <ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" /></translation> <translation id="6177111841848151710">Blokkert for den aktive søkemotoren</translation> <translation id="6177390657002841081">Slå på Datasparing</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Hvis du slår på «Deaktivering av sporing», blir det sendt en forespørsel sammen med nettrafikken din. Hvilke virkninger dette eventuelt får, avhenger av om det aktuelle nettstedet svarer på forespørselen eller ikke, samt hvordan forespørselen tolkes. Noen nettsteder kan for eksempel svare på denne forespørselen ved å vise deg annonser som ikke er basert på andre nettsteder du har besøkt. Mange nettsteder samler likevel inn og bruker nettlesingsdataene dine – for eksempel for å forbedre sikkerheten, for å levere innhold, annonser og anbefalinger og for å generere rapporteringsstatistikk.</translation> +<translation id="624789221780392884">Oppdateringen er klar</translation> <translation id="6255999984061454636">Innholdsforslag</translation> <translation id="6277522088822131679">Det oppsto et problem med å skrive ut siden. Prøv på nytt.</translation> <translation id="6295158916970320988">Alle nettsteder</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Last ned videoen</translation> <translation id="6482749332252372425">Nedlastingen av <ph name="FILE_NAME" /> ble avbrutt på grunn av mangel på lagringsplass.</translation> <translation id="6496823230996795692">For å bruke <ph name="APP_NAME" /> for første gang, koble til Internett.</translation> +<translation id="6508722015517270189">Start Chrome på nytt</translation> <translation id="6527303717912515753">Del</translation> <translation id="6534565668554028783">Google brukte for lang tid på å svare</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB er lastet ned</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Venter på at Google Play Tjenester fullfører oppdateringen</translation> <translation id="7189598951263744875">Del</translation> <translation id="7191430249889272776">En fane ble åpnet i bakgrunnen.</translation> -<translation id="7221869452894271364">Last inn denne siden på nytt</translation> <translation id="723171743924126238">Velg bilder</translation> <translation id="7243308994586599757">Du finner alternativer ved bunnen av skjermen</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> er valgt</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Tidsperiode</translation> <translation id="7851858861565204677">Andre enheter</translation> <translation id="7854964836418414587">Lukk Mer av dette</translation> +<translation id="7871791972254842204">Les og godta vilkårene på <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> senere</translation> <translation id="7875915731392087153">Opprett e-post</translation> <translation id="7876243839304621966">Fjern alle</translation> <translation id="7882131421121961860">Fant ingen logg</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Fortsett</translation> <translation id="8209050860603202033">Åpne bildet</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB er lastet ned</translation> +<translation id="8232956427053453090">Behold dataene</translation> <translation id="8249310407154411074">Flytt til toppen</translation> <translation id="8250920743982581267">Dokumenter</translation> <translation id="825412236959742607">Denne siden bruker for mye minne, så Chrome har fjernet noe av innholdet.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Kortinnehavers navn</translation> <translation id="8604763363205185560">Hjelp til med å gjøre Chrome bedre og sikrere</translation> <translation id="8609465669617005112">Flytt opp</translation> +<translation id="8611192991944347781">Administrer data</translation> <translation id="8616006591992756292">Det kan hende Google-kontoen din har andre typer nettlesingslogger på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Vil du åpne den foreslåtte nettadressen som er spesifisert i det nedlastede innholdet?</translation> <translation id="8636825310635137004">For å få fanene dine fra de andre enhetene du bruker, slå på synkronisering.</translation> <translation id="8641930654639604085">Prøv å blokkere nettsteder med voksent innhold</translation> +<translation id="8655129584991699539">Du kan slette dataene i Chrome-innstillingene</translation> <translation id="8662811608048051533">Logger deg av de fleste nettsteder.</translation> <translation id="8664979001105139458">Filnavnet finnes allerede</translation> <translation id="8676374126336081632">Slett teksten</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Søk i kontaktene dine</translation> <translation id="869891660844655955">Utløpsdato</translation> <translation id="8719023831149562936">Kan ikke beame gjeldende fane</translation> +<translation id="8723954843026426558">Jeg godtar vilkårene, personvernreglene og angreretten for <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Prøv igjen</translation> <translation id="8728487861892616501">Når du bruker denne appen, godtar du <ph name="BEGIN_LINK1" />vilkårene for bruk<ph name="END_LINK1" /> av Chrome, <ph name="BEGIN_LINK2" />merknaden om personvern<ph name="END_LINK2" /> og <ph name="BEGIN_LINK3" />merknaden om personvern for Google-kontoer som administreres med Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Ferdig</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb index bd8b5a7..f05eadf 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb
@@ -167,7 +167,6 @@ <translation id="2154484045852737596">Edytowanie karty</translation> <translation id="2154710561487035718">Kopiuj adres URL</translation> <translation id="2156074688469523661">Pozostałe strony (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Sprawdź połączenie z internetem</translation> <translation id="2197557662829090533">Zezwól Cyfrowej równowadze na wyświetlanie odwiedzonych przez Ciebie stron</translation> <translation id="2206488550163399966"><ph name="APP_NAME" /> – aplikacja internetowa. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Kontynuuj jako <ph name="USER_FULL_NAME" /></translation> @@ -286,6 +285,7 @@ <translation id="3115898365077584848">Pokaż informacje</translation> <translation id="3123473560110926937">Blokowane na niektórych stronach</translation> <translation id="3137521801621304719">Wyłącz tryb incognito</translation> +<translation id="3143515551205905069">Anuluj synchronizację</translation> <translation id="3148434565183091099">Aby korzystać ze swoich zakładek na wszystkich urządzeniach, zaloguj się w Chrome.</translation> <translation id="3157842584138209013">Sprawdź ilość zaoszczędzonych danych, używając przycisku Więcej opcji</translation> <translation id="3166827708714933426">Skróty kart i okien</translation> @@ -304,6 +304,7 @@ <translation id="3269093882174072735">Wczytaj obraz</translation> <translation id="3269956123044984603">Aby korzystać z kart ze swoich pozostałych urządzeń, włącz opcję „Autosynchronizacja danych” w ustawieniach konta na urządzeniu z Androidem.</translation> <translation id="3282568296779691940">Zaloguj się w Chrome</translation> +<translation id="3288003805934695103">Odśwież stronę</translation> <translation id="32895400574683172">Powiadomienia są włączone</translation> <translation id="3295530008794733555">Szybsze przeglądanie. Mniejsze zużycie danych.</translation> <translation id="3295602654194328831">Ukryj informacje</translation> @@ -373,6 +374,7 @@ <translation id="3819178904835489326">Usunięte pobrane pliki: <ph name="NUMBER_OF_DOWNLOADS" /></translation> <translation id="3819562311292413223">Pobieranie artykułów dla Ciebie</translation> <translation id="3822502789641063741">Wyczyścić dane witryn?</translation> +<translation id="385051799172605136">Wstecz</translation> <translation id="3859306556332390985">Przewiń do przodu</translation> <translation id="3894427358181296146">Dodaj folder</translation> <translation id="3895926599014793903">Wymuś powiększenie</translation> @@ -704,6 +706,7 @@ <translation id="6232535412751077445">Włączenie opcji „Bez śledzenia” oznacza, że podczas przeglądania będzie wysyłane żądanie. Jego wynik zależy od tego, czy strona na nie odpowie oraz jak zostanie ono zinterpretowane. Na przykład niektóre strony mogą na nie zareagować, wyświetlając reklamy bez związku ze stronami odwiedzonymi przez Ciebie wcześniej. Wiele stron będzie nadal gromadzić dane przeglądania i używać ich na przykład do poprawy bezpieczeństwa, pokazywania treści, reklam i rekomendacji oraz do generowania statystyk.</translation> +<translation id="624789221780392884">Aktualizacja jest gotowa</translation> <translation id="6255999984061454636">Polecane treści</translation> <translation id="6277522088822131679">Podczas drukowania strony wystąpił problem. Spróbuj ponownie.</translation> <translation id="6295158916970320988">Wszystkie witryny</translation> @@ -739,6 +742,7 @@ <translation id="6475951671322991020">Pobierz film</translation> <translation id="6482749332252372425">Nie udało się pobrać pliku <ph name="FILE_NAME" /> z powodu braku miejsca.</translation> <translation id="6496823230996795692">Aby pierwszy raz skorzystać z aplikacji <ph name="APP_NAME" />, połącz się z internetem.</translation> +<translation id="6508722015517270189">Uruchom ponownie Chrome</translation> <translation id="6527303717912515753">Udostępnij</translation> <translation id="6534565668554028783">Google zbyt długo nie odpowiada</translation> <translation id="6538442820324228105">Pobrano <ph name="GBS" /> GB</translation> @@ -837,7 +841,6 @@ <translation id="7189372733857464326">Czekam na zakończenie aktualizacji Usług Google Play</translation> <translation id="7189598951263744875">Udostępnij...</translation> <translation id="7191430249889272776">Karta otwarta w tle.</translation> -<translation id="7221869452894271364">Odśwież stronę</translation> <translation id="723171743924126238">Wybierz zdjęcia</translation> <translation id="7243308994586599757">Opcje dostępne u dołu ekranu</translation> <translation id="7250468141469952378">Wybrano <ph name="ITEM_COUNT" /></translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb b/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb index 89e5836..c95b05f 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="pt-BR"> <translation id="1006017844123154345">Abrir on-line</translation> +<translation id="1023450834687746199">Você excluiu os dados do app <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">Adicionando <ph name="WEBAPK_NAME" />…</translation> <translation id="1041308826830691739">De sites</translation> <translation id="1049743911850919806">Modo anônimo</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Limpa o histórico e o preenchimento automático na barra de endereço.</translation> <translation id="2021896219286479412">Controles de site em tela cheia</translation> <translation id="2038563949887743358">Ativar "Ver versão para Web"</translation> +<translation id="204321170514947529">O app <ph name="APP_NAME" /> também tem dados no Chrome</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB de outros apps</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Tocar para pesquisar</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Editar cartão</translation> <translation id="2154710561487035718">Copiar URL</translation> <translation id="2156074688469523661">Sites restantes (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Verifique sua conexão com a Internet</translation> <translation id="2197557662829090533">Permitir que o Bem-estar digital mostre os sites visitados</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, aplicativo da Web. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Continuar como <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">falha</translation> <translation id="2781151931089541271">Um segundo restante</translation> <translation id="2784212955220061919">Com o Modo Lite, as páginas são carregadas mais rapidamente no Chrome, e há uma economia de dados de até 60 por cento. A tecnologia de nuvem do Google otimiza as páginas visitadas.</translation> +<translation id="2785336755839207516">Você desinstalou o app <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Mostrando as senhas salvas e as opções de senha</translation> <translation id="2810645512293415242">Página simplificada para economizar dados e carregar mais rapidamente.</translation> <translation id="281504910091592009">Ver e gerenciar as senhas salvas na sua <ph name="BEGIN_LINK" />Conta do Google<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Mostrar informações</translation> <translation id="3123473560110926937">Bloqueados em alguns sites</translation> <translation id="3137521801621304719">Sair do modo de navegação anônima</translation> +<translation id="3143515551205905069">Cancelar sincronização</translation> <translation id="3148434565183091099">Para ter seus favoritos em todos os seus dispositivos, faça login no Chrome.</translation> <translation id="3157842584138209013">Veja a quantidade de dados que você salvou no botão Mais opções</translation> <translation id="3166827708714933426">Atalhos de guias e janelas</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Carregar imagem</translation> <translation id="3269956123044984603">Para ver as guias dos seus outros dispositivos, ative a opção "Sincronizar dados automaticamente" nas configurações de conta do Android.</translation> <translation id="3282568296779691940">Fazer login no Google Chrome</translation> +<translation id="3288003805934695103">Atualizar a página</translation> <translation id="32895400574683172">Notificações são permitidas</translation> <translation id="3295530008794733555">Navegue com mais rapidez. Use menos dados.</translation> <translation id="3295602654194328831">Ocultar informações</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> downloads excluídos</translation> <translation id="3819562311292413223">Fazer o download de artigos para você</translation> <translation id="3822502789641063741">Limpar armaz. de sites?</translation> +<translation id="385051799172605136">Voltar</translation> <translation id="3859306556332390985">Avançar</translation> <translation id="3894427358181296146">Adicionar pasta</translation> <translation id="3895926599014793903">Forçar zoom</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Fazer login</translation> <translation id="395206256282351086">Sugestões de pesquisa e sites desativadas</translation> <translation id="3955193568934677022">Permitir que os sites reproduzam conteúdo protegido (recomendado)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{O Chrome carregará sua página quando estiver pronto}one{O Chrome carregará sua página quando estiver pronto}other{O Chrome carregará suas páginas quando estiver pronto}}</translation> <translation id="3963007978381181125">A criptografia por senha longa não inclui formas de pagamento e endereços do Google Pay. Apenas uma pessoa que tenha sua senha longa pode ler seus dados criptografados. Essa senha não é enviada ou armazenada pelo Google. Se você esquecer a senha longa ou quiser alterar essa configuração, será necessário redefinir a sincronização. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Download concluído</translation> <translation id="397583555483684758">A sincronização parou de funcionar</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Mídia</translation> <translation id="4278390842282768270">Permitido</translation> <translation id="429312253194641664">Um site está com mídia aberta</translation> +<translation id="4298388696830689168">Sites vinculados</translation> <translation id="4307992518367153382">Básicas</translation> <translation id="4314815835985389558">Gerenciar sincronização</translation> <translation id="4351244548802238354">Fechar caixa de diálogo</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">A ativação de "Não rastrear" significa que uma solicitação será incluída no tráfego de navegação. Todo efeito depende de um website responder à solicitação e de como a solicitação é interpretada. Por exemplo, alguns websites podem reagir a esse pedido mostrando anúncios que não têm qualquer relação com os sites que você costuma visitar. Mesmo assim, alguns websites ainda vão coletar e usar seus dados de navegação para, por exemplo, melhorar a segurança, gerar conteúdo, anúncios, recomendações e relatórios de estatística.</translation> +<translation id="624789221780392884">Atualização pronta</translation> <translation id="6255999984061454636">Sugestões de conteúdo</translation> <translation id="6277522088822131679">Ocorreu um problema ao imprimir a página. Tente novamente.</translation> <translation id="6295158916970320988">Todos os sites</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Fazer o download do vídeo</translation> <translation id="6482749332252372425">Falha no download do arquivo <ph name="FILE_NAME" /> devido à falta de espaço de armazenamento.</translation> <translation id="6496823230996795692">Para usar o app <ph name="APP_NAME" /> pela primeira vez, conecte-se à Internet</translation> +<translation id="6508722015517270189">Reiniciar o Chrome</translation> <translation id="6527303717912515753">Compartilhar</translation> <translation id="6534565668554028783">O Google demorou muito para responder</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB transferido(s) por download</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Aguardando o fim da atualização do Google Play Services</translation> <translation id="7189598951263744875">Compartilhar...</translation> <translation id="7191430249889272776">Guia aberta no plano de fundo.</translation> -<translation id="7221869452894271364">Recarregar esta página</translation> <translation id="723171743924126238">Selecionar imagens</translation> <translation id="7243308994586599757">Opções disponíveis perto da parte inferior da tela</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> itens selecionados</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Intervalo de tempo</translation> <translation id="7851858861565204677">Outros dispositivos</translation> <translation id="7854964836418414587">Fechar "Mais opções semelhantes"</translation> +<translation id="7871791972254842204">Ler e aceitar os Termos e Condições em <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> mais tarde</translation> <translation id="7875915731392087153">Criar e-mail</translation> <translation id="7876243839304621966">Remover tudo</translation> <translation id="7882131421121961860">Nenhum histórico encontrado</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Retomar</translation> <translation id="8209050860603202033">Abrir imagem</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB transferido(s) por download</translation> +<translation id="8232956427053453090">Manter dados</translation> <translation id="8249310407154411074">Mover para o início</translation> <translation id="8250920743982581267">Documentos</translation> <translation id="825412236959742607">Como esta página usa muita memória, o Chrome removeu parte do conteúdo.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Nome do titular do cartão</translation> <translation id="8604763363205185560">Ajude a melhorar o Chrome e a segurança do navegador</translation> <translation id="8609465669617005112">Mover para cima</translation> +<translation id="8611192991944347781">Gerenciar dados</translation> <translation id="8616006591992756292">Sua Conta do Google pode ter outras formas de histórico de navegação em <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Abrir o URL sugerido especificado no conteúdo transferido por download?</translation> <translation id="8636825310635137004">Para ver as guias dos seus outros dispositivos, ative a sincronização.</translation> <translation id="8641930654639604085">Tentar bloquear sites com conteúdo para adultos</translation> +<translation id="8655129584991699539">É possível limpar os dados nas configurações do Chrome</translation> <translation id="8662811608048051533">Desconecta você da maioria dos sites.</translation> <translation id="8664979001105139458">O nome do arquivo já existe</translation> <translation id="8676374126336081632">Limpar entrada</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Pesquisar seus contatos</translation> <translation id="869891660844655955">Validade</translation> <translation id="8719023831149562936">Não é possível enviar a guia atual</translation> +<translation id="8723954843026426558">Concordo com os Termos e Condições, com a Política de Privacidade e com o direito legal de cancelamento de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Tentar novamente</translation> <translation id="8728487861892616501">Ao usar este aplicativo, você concorda com os <ph name="BEGIN_LINK1" />Termos de Serviço<ph name="END_LINK1" /> e o <ph name="BEGIN_LINK2" />Aviso de Privacidade<ph name="END_LINK2" /> do Chrome, bem como o <ph name="BEGIN_LINK3" />Aviso de Privacidade de Contas do Google gerenciadas com o Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Concluído</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb index 6e561fcf..dbf61fbf 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb
@@ -167,7 +167,6 @@ <translation id="2154484045852737596">Editar cartão</translation> <translation id="2154710561487035718">Copiar URL</translation> <translation id="2156074688469523661">Sites restantes (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Verifique a ligação à Internet</translation> <translation id="2197557662829090533">Permitir que o Bem-estar digital apresente os Websites que visitou</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, aplicação Web. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Continuar como <ph name="USER_FULL_NAME" /></translation> @@ -281,11 +280,12 @@ <translation id="305593374596241526">A localização está desativada. Ative-a nas <ph name="BEGIN_LINK" />Definições do Android<ph name="END_LINK" />.</translation> <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> marcador}other{<ph name="BOOKMARKS_COUNT_MANY" /> marcadores}}</translation> <translation id="307908932405420782">Serão apresentados mais artigos em breve. Desfrute da sua manhã!</translation> -<translation id="3089395242580810162">Abrir no separador anónimo</translation> +<translation id="3089395242580810162">Abrir num sep. de nav. anónima</translation> <translation id="311456632243022227">Vários links abertos no Chrome</translation> <translation id="3115898365077584848">Mostrar informações</translation> <translation id="3123473560110926937">Bloqueado em alguns sites.</translation> <translation id="3137521801621304719">Sair do modo de navegação anónima</translation> +<translation id="3143515551205905069">Cancelar sincronização</translation> <translation id="3148434565183091099">Para obter os seus marcadores em todos os dispositivos, inicie sessão no Chrome.</translation> <translation id="3157842584138209013">Veja a quantidade de dados que poupou através do botão Mais opções.</translation> <translation id="3166827708714933426">Atalhos de separadores e de janelas</translation> @@ -304,6 +304,7 @@ <translation id="3269093882174072735">Carregar imagem</translation> <translation id="3269956123044984603">Para obter os separadores dos seus outros dispositivos, ative a opção "Sincronizar automaticamente os dados" nas definições da conta do Android.</translation> <translation id="3282568296779691940">Iniciar sessão no Chrome</translation> +<translation id="3288003805934695103">Atualizar a página</translation> <translation id="32895400574683172">As notificações são permitidas.</translation> <translation id="3295530008794733555">Navegue mais depressa. Utilize menos dados.</translation> <translation id="3295602654194328831">Ocultar informações</translation> @@ -373,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> transferências eliminadas</translation> <translation id="3819562311292413223">Transferir artigos para si</translation> <translation id="3822502789641063741">Limpar armazenamento do site?</translation> +<translation id="385051799172605136">Anterior</translation> <translation id="3859306556332390985">Procurar para a frente</translation> <translation id="3894427358181296146">Adicionar pasta</translation> <translation id="3895926599014793903">Forçar ativação do zoom</translation> @@ -539,7 +541,7 @@ <translation id="5004416275253351869">Controlos da atividade Google</translation> <translation id="5005498671520578047">Copiar palavra-passe</translation> <translation id="5011311129201317034"><ph name="SITE" /> pretende estabelecer ligação</translation> -<translation id="5013696553129441713">Não existem novas sugestões.</translation> +<translation id="5013696553129441713">Não existem novas sugestões</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Permitir</translation> <translation id="5040262127954254034">Privacidade</translation> @@ -704,6 +706,7 @@ <translation id="6232535412751077445">A ativação da funcionalidade "Não Monitorizar" significa que é incluído um pedido no seu tráfego de navegação. Qualquer efeito depende de um Website responder ou não ao pedido e do modo como o pedido é interpretado. Por exemplo, alguns Sites podem responder a este pedido ao mostrar-lhe anúncios que não são baseados noutros Sites que tenha visitado. Ainda assim, muitos Sites continuam a recolher e a utilizar os seus dados de navegação para, por exemplo, melhorar a segurança, fornecer conteúdo, anúncios e recomendações, e gerar estatísticas de relatórios.</translation> +<translation id="624789221780392884">Atualização pronta</translation> <translation id="6255999984061454636">Sugestões de conteúdo</translation> <translation id="6277522088822131679">Ocorreu um problema ao imprimir a página. Tente novamente.</translation> <translation id="6295158916970320988">Todos os sites</translation> @@ -739,6 +742,7 @@ <translation id="6475951671322991020">Transferir vídeo</translation> <translation id="6482749332252372425">A transferência de <ph name="FILE_NAME" /> falhou devido à falta de espaço de armazenamento.</translation> <translation id="6496823230996795692">Para utilizar a aplicação <ph name="APP_NAME" /> pela primeira vez, ligue-se à Internet.</translation> +<translation id="6508722015517270189">Reiniciar o Chrome</translation> <translation id="6527303717912515753">Partilhar</translation> <translation id="6534565668554028783">A Google demorou demasiado tempo a responder</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB transferido(s)</translation> @@ -837,7 +841,6 @@ <translation id="7189372733857464326">A aguardar pela conclusão da atualização dos Serviços do Google Play…</translation> <translation id="7189598951263744875">Partilhar...</translation> <translation id="7191430249889272776">Separador aberto em segundo plano.</translation> -<translation id="7221869452894271364">Recarregar esta página</translation> <translation id="723171743924126238">Selecionar imagens</translation> <translation id="7243308994586599757">Opções disponíveis junto à parte inferior do ecrã</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> selecionado(s).</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb index 9832d77..c44093a 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="ro"> <translation id="1006017844123154345">Deschide online</translation> +<translation id="1023450834687746199">Ai șters datele aplicației <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">Se adaugă <ph name="WEBAPK_NAME" />...</translation> <translation id="1041308826830691739">De la site-uri</translation> <translation id="1049743911850919806">Incognito</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Șterge istoricul și completările automate din bara de adrese.</translation> <translation id="2021896219286479412">Comenzi site în ecran complet</translation> <translation id="2038563949887743358">Activează opțiunea Versiune site pentru desktop</translation> +<translation id="204321170514947529">Și <ph name="APP_NAME" /> are date în Chrome</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB pentru alte aplicații</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Atinge pentru a căuta</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Editează cardul</translation> <translation id="2154710561487035718">Copiați adresa URL</translation> <translation id="2156074688469523661">Site-uri rămase (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Verifică-ți conexiunea la internet</translation> <translation id="2197557662829090533">Permite Bunăstării digitale să afișeze paginile pe care le-ai accesat</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, aplicație web. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Continuă ca <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">nereușită</translation> <translation id="2781151931089541271">1 sec. rămasă</translation> <translation id="2784212955220061919">În modul Lite, Chrome încarcă mai repede paginile și folosește cu până la 60 de procente mai puține date. Tehnologia Google cloud optimizează paginile pe care le vizitezi.</translation> +<translation id="2785336755839207516">Ai dezinstalat <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Se afișează parolele salvate și opțiunile pentru parole</translation> <translation id="2810645512293415242">Pagină simplificată pentru economie de date și încărcare mai rapidă.</translation> <translation id="281504910091592009">Vezi și gestionează parolele salvate în <ph name="BEGIN_LINK" />Contul Google<ph name="END_LINK" /></translation> @@ -278,11 +280,12 @@ <translation id="305593374596241526">Locația este dezactivată; activeaz-o în <ph name="BEGIN_LINK" />Setări Android<ph name="END_LINK" />.</translation> <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> marcaj}few{<ph name="BOOKMARKS_COUNT_MANY" /> marcaje}other{<ph name="BOOKMARKS_COUNT_MANY" /> de marcaje}}</translation> <translation id="307908932405420782">În curând vor apărea mai multe articole. O dimineață plăcută!</translation> -<translation id="3089395242580810162">Deschideți într-o filă incognito</translation> +<translation id="3089395242580810162">Deschide într-o filă incognito</translation> <translation id="311456632243022227">Linkuri multiple deschise în Chrome</translation> <translation id="3115898365077584848">Afișează informațiile</translation> <translation id="3123473560110926937">Blocate pe anumite site-uri</translation> <translation id="3137521801621304719">Ieși din modul incognito</translation> +<translation id="3143515551205905069">Anulează sincronizarea</translation> <translation id="3148434565183091099">Pentru a accesa marcajele pe toate dispozitivele, conectează-te la Chrome.</translation> <translation id="3157842584138209013">Vezi ce volum de date ai economisit folosind butonul Mai multe opțiuni</translation> <translation id="3166827708714933426">Comenzi rapide pentru file și ferestre</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Încarcă imaginea</translation> <translation id="3269956123044984603">Pentru a accesa filele de pe alte dispozitive, activează opțiunea „Sincronizează automat datele” în setările Android din Contul Google.</translation> <translation id="3282568296779691940">Conectați-vă la Chrome</translation> +<translation id="3288003805934695103">să reîncarci pagina;</translation> <translation id="32895400574683172">Notificările sunt permise</translation> <translation id="3295530008794733555">Navighează mai rapid. Folosește mai puține date.</translation> <translation id="3295602654194328831">Ascunde informațiile</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> descărcări șterse</translation> <translation id="3819562311292413223">Descarcă articole pentru tine</translation> <translation id="3822502789641063741">Ștergi stocarea site-urilor?</translation> +<translation id="385051799172605136">Înapoi</translation> <translation id="3859306556332390985">Derulează înainte</translation> <translation id="3894427358181296146">Adaugă un dosar</translation> <translation id="3895926599014793903">Forțează activarea zoomului</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Conectează-te</translation> <translation id="395206256282351086">Sugestiile de căutare și de site-uri sunt dezactivate</translation> <translation id="3955193568934677022">Permite site-urilor să redea conținutul protejat (recomandat)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome va încărca pagina când este gata}few{Chrome va încărca paginile când este gata}other{Chrome va încărca paginile când este gata}}</translation> <translation id="3963007978381181125">Criptarea expresiei de acces nu include metodele de plată și adresele din Google Pay. Numai cine are expresia ta de acces poate citi datele tale criptate. Expresia de acces nu este trimisă sau stocată la Google. Dacă îți uiți expresia de acces sau vrei să modifici această setare, va trebui să resetezi sincronizarea. <ph name="BEGIN_LINK" />Află mai multe<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Descărcare finalizată</translation> <translation id="397583555483684758">Sincronizarea nu mai funcționează</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Media</translation> <translation id="4278390842282768270">Se permite</translation> <translation id="429312253194641664">Un site redă fișiere media</translation> +<translation id="4298388696830689168">Site-uri conectate</translation> <translation id="4307992518367153382">Elemente de bază</translation> <translation id="4314815835985389558">Gestionează sincronizarea</translation> <translation id="4351244548802238354">Închide caseta de dialog</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Dacă activezi opțiunea „Nu urmări”, o solicitare va fi inclusă împreună cu traficul de navigare. Efectul variază în funcție de răspunsul site-ului la solicitare și în funcție de modul în care este interpretată solicitarea. De exemplu, unele site-uri pot răspunde la această solicitare afișând anunțuri care nu se bazează pe alte site-uri accesate de tine. Numeroase site-uri vor culege și vor utiliza în continuare datele de navigare. De exemplu, pentru a îmbunătăți securitatea, pentru a oferi conținut, anunțuri și recomandări și pentru a genera statistici de raportare.</translation> +<translation id="624789221780392884">Actualizarea este pregătită</translation> <translation id="6255999984061454636">Sugestii de conținut</translation> <translation id="6277522088822131679">A apărut o problemă la printarea paginii. Încercați din nou.</translation> <translation id="6295158916970320988">Toate site-urile</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Descarcă videoclipul</translation> <translation id="6482749332252372425">Descărcarea fișierului <ph name="FILE_NAME" /> nu a reușit din cauza spațiului de stocare insuficient.</translation> <translation id="6496823230996795692">Ca să folosești <ph name="APP_NAME" /> pentru prima dată, conectează-te la internet.</translation> +<translation id="6508722015517270189">repornește Chrome;</translation> <translation id="6527303717912515753">Trimite</translation> <translation id="6534565668554028783">Google a răspuns prea târziu</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB descărcați</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Se așteaptă finalizarea actualizării pentru serviciile Google Play</translation> <translation id="7189598951263744875">Trimite...</translation> <translation id="7191430249889272776">A fost deschisă o filă în fundal.</translation> -<translation id="7221869452894271364">Reîncarcă această pagină</translation> <translation id="723171743924126238">Selectează imagini</translation> <translation id="7243308994586599757">Opțiuni disponibile în partea de jos a ecranului</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> selectate</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Interval de timp</translation> <translation id="7851858861565204677">Alte dispozitive</translation> <translation id="7854964836418414587">Închide foaia „Mai multe similare”</translation> +<translation id="7871791972254842204">Citește și acceptă termenii și condițiile domeniului <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> mai târziu</translation> <translation id="7875915731392087153">Creează un e-mail</translation> <translation id="7876243839304621966">Elimină tot</translation> <translation id="7882131421121961860">Nu s-a găsit niciun istoric</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Reia</translation> <translation id="8209050860603202033">Deschideți imaginea</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB pentru descărcări</translation> +<translation id="8232956427053453090">Păstrează datele</translation> <translation id="8249310407154411074">Mută la început</translation> <translation id="8250920743982581267">Documente</translation> <translation id="825412236959742607">Această pagină folosește prea multă memorie, prin urmare Chrome a eliminat o parte din conținut.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Nume titular de card</translation> <translation id="8604763363205185560">Ajută la îmbunătățirea Chrome și a securității acestuia</translation> <translation id="8609465669617005112">Mutați mai sus</translation> +<translation id="8611192991944347781">Gestionează datele</translation> <translation id="8616006591992756292">Contul Google poate să ofere alte forme ale istoricului de navigare la <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Deschizi adresa URL sugerată specificată în conținutul descărcat?</translation> <translation id="8636825310635137004">Pentru a accesa filele de pe alte dispozitive, activează sincronizarea.</translation> <translation id="8641930654639604085">Încearcă să blochezi site-urile destinate adulților</translation> +<translation id="8655129584991699539">Poți șterge datele în Setările Chrome</translation> <translation id="8662811608048051533">Te deconectează de pe majoritatea site-urilor.</translation> <translation id="8664979001105139458">Numele fișierului există deja</translation> <translation id="8676374126336081632">Șterge textul introdus</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Caută în agendă</translation> <translation id="869891660844655955">Dată de expirare</translation> <translation id="8719023831149562936">Fila actuală nu poate fi transmisă</translation> +<translation id="8723954843026426558">Sunt de acord cu termenii și condițiile, politica de confidențialitate și dreptul de retragere ale <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Încearcă din nou</translation> <translation id="8728487861892616501">Dacă folosești aplicația, accepți <ph name="BEGIN_LINK1" />Termenii și condițiile<ph name="END_LINK1" /> și <ph name="BEGIN_LINK2" />Notificarea privind confidențialitatea<ph name="END_LINK2" /> Chrome și <ph name="BEGIN_LINK3" />Notificarea privind confidențialitatea pentru Conturile Google gestionate cu Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Terminat</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb index a7fe9a6..9b326c0 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="ru"> <translation id="1006017844123154345">Открыть в Интернете</translation> +<translation id="1023450834687746199">Данные приложения "<ph name="APP_NAME" />" удалены</translation> <translation id="1036727731225946849">Добавление файла "<ph name="WEBAPK_NAME" />"…</translation> <translation id="1041308826830691739">От сайтов</translation> <translation id="1049743911850919806">Инкогнито</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Удаление истории и вариантов автозаполнения в адресной строке</translation> <translation id="2021896219286479412">Настройки полноэкранного режима</translation> <translation id="2038563949887743358">Включить полную версию сайта</translation> +<translation id="204321170514947529">У приложения "<ph name="APP_NAME" />" также есть данные в Chrome</translation> <translation id="2045104531052923016">Другие приложения: <ph name="GIGABYTES" /> ГБ</translation> <translation id="2049574241039454490"><ph name="DESCRIPTION" /> <ph name="SEPARATOR" /> <ph name="FILE_SIZE_OF_TOTAL" /></translation> <translation id="2063713494490388661">Нажмите для поиска</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Изменение данных карты</translation> <translation id="2154710561487035718">Копировать URL</translation> <translation id="2156074688469523661">Прочие сайты (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Проверьте подключение к Интернету</translation> <translation id="2197557662829090533">Разрешить сервису "Цифровое благополучие" показывать сайты, на которые вы заходили?</translation> <translation id="2206488550163399966">Приложение "<ph name="APP_NAME" />" (<ph name="APP_URL" />)</translation> <translation id="2227444325776770048">Продолжить как <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">ошибка</translation> <translation id="2781151931089541271">Осталась 1 сек.</translation> <translation id="2784212955220061919">В упрощенном режиме Chrome быстрее загружает страницы и экономит до 60 процентов трафика. Страницы, на которые вы заходите, оптимизируются с помощью технологий Google.</translation> +<translation id="2785336755839207516">Приложение "<ph name="APP_NAME" />" удалено</translation> <translation id="2803478378562657435">На экране показаны сохраненные пароли и настройки паролей</translation> <translation id="2810645512293415242">Страница была открыта в упрощенном виде, чтобы уменьшить объем трафика и время загрузки.</translation> <translation id="281504910091592009">Просматривайте сохраненные пароли и управляйте ими на странице <ph name="BEGIN_LINK" />Аккаунт Google<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Показать информацию</translation> <translation id="3123473560110926937">Заблокировано на некоторых сайтах</translation> <translation id="3137521801621304719">Выключить режим инкогнито</translation> +<translation id="3143515551205905069">Отмена</translation> <translation id="3148434565183091099">Чтобы получить доступ к закладкам на всех ваших устройствах, войдите в Chrome.</translation> <translation id="3157842584138209013">Чтобы узнать, сколько трафика вы сэкономили, нажмите кнопку "Ещё"</translation> <translation id="3166827708714933426">Работа с вкладками и окнами</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Загрузить изображение</translation> <translation id="3269956123044984603">Чтобы получить доступ к вкладкам на всех своих устройствах, включите автосинхронизацию данных в настройках аккаунта на устройстве Android.</translation> <translation id="3282568296779691940">Войдите в Chrome</translation> +<translation id="3288003805934695103">Обновите страницу.</translation> <translation id="32895400574683172">Может отправлять уведомления</translation> <translation id="3295530008794733555">Быстрый просмотр сайтов и экономия трафика</translation> <translation id="3295602654194328831">Скрыть информацию</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326">Удаленные скачивания: <ph name="NUMBER_OF_DOWNLOADS" /></translation> <translation id="3819562311292413223">Скачивать статьи для вас</translation> <translation id="3822502789641063741">Удалить данные сайтов?</translation> +<translation id="385051799172605136">Назад</translation> <translation id="3859306556332390985">Перемотать вперед</translation> <translation id="3894427358181296146">Добавление папки</translation> <translation id="3895926599014793903">Принудительно изменять масштаб</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Вход</translation> <translation id="395206256282351086">Подсказки запросов и сайтов отключены</translation> <translation id="3955193568934677022">Разрешить сайтам воспроизводить защищенный контент (рекомендуется)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Страница будет загружена при подключении к сети}one{Страницы будут загружены при подключении к сети}few{Страницы будут загружены при подключении к сети}many{Страницы будут загружены при подключении к сети}other{Страницы будут загружены при подключении к сети}}</translation> <translation id="3963007978381181125">Шифрование с помощью кодовой фразы не применяется к способам оплаты и адресам из Google Pay. Доступ к зашифрованным данным будет только у тех, кто знает кодовую фразу. Она не пересылается и не хранится в Google. Если вы забудете фразу или решите изменить эту настройку, вам придется сбросить параметры синхронизации. <ph name="BEGIN_LINK" />Подробнее…<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Скачивание завершено</translation> <translation id="397583555483684758">Ошибка синхронизации</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Камера и микрофон </translation> <translation id="4278390842282768270">Разрешены</translation> <translation id="429312253194641664">На сайте воспроизводятся медиафайлы</translation> +<translation id="4298388696830689168">Связанные сайты</translation> <translation id="4307992518367153382">Основные</translation> <translation id="4314815835985389558">Настройки синхронизации</translation> <translation id="4351244548802238354">Закрыть</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Если вы запретите отслеживание, в запросы браузера будет включена специальная команда. Сайты могут интерпретировать ее и отвечать на нее по-разному. Например, некоторые сайты перестанут показывать рекламу, подобранную на основе посещенных вами страниц. Другие сайты продолжат собирать и использовать данные о работе в браузере (например, для повышения уровня безопасности, предоставления контента, демонстрации рекламы и рекомендаций или формирования статистических отчетов).</translation> +<translation id="624789221780392884">Обновление готово</translation> <translation id="6255999984061454636">Предлагаемый контент</translation> <translation id="6277522088822131679">Не удалось распечатать страницу. Повторите попытку.</translation> <translation id="6295158916970320988">Все сайты</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Скачать видео</translation> <translation id="6482749332252372425">Не удалось скачать файл <ph name="FILE_NAME" />, так как места для хранения данных недостаточно.</translation> <translation id="6496823230996795692">При первом запуске приложения "<ph name="APP_NAME" />" требуется подключение к Интернету.</translation> +<translation id="6508722015517270189">Перезапустите Google Chrome.</translation> <translation id="6527303717912515753">Поделиться</translation> <translation id="6534565668554028783">Превышено время ожидания ответа от Google</translation> <translation id="6538442820324228105">Скачано <ph name="GBS" /> ГБ</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Обновление сервисов Google Play…</translation> <translation id="7189598951263744875">Поделиться…</translation> <translation id="7191430249889272776">Вкладка открыта в фоновом режиме</translation> -<translation id="7221869452894271364">Обновить эту страницу</translation> <translation id="723171743924126238">Выберите изображения</translation> <translation id="7243308994586599757">Доступные параметры указаны в нижней части экрана</translation> <translation id="7250468141469952378">Выбрано: <ph name="ITEM_COUNT" /></translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Временной диапазон</translation> <translation id="7851858861565204677">Другие устройства</translation> <translation id="7854964836418414587">Закрыть панель "Показать похожие страницы"</translation> +<translation id="7871791972254842204">Прочитать и принять Условия использования <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> позже.</translation> <translation id="7875915731392087153">Написать письмо</translation> <translation id="7876243839304621966">Удалить все</translation> <translation id="7882131421121961860">История не найдена</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Возобновить</translation> <translation id="8209050860603202033">Открыть изображение</translation> <translation id="8220488350232498290">Скачанные файлы: <ph name="GIGABYTES" /> ГБ</translation> +<translation id="8232956427053453090">Не удалять данные</translation> <translation id="8249310407154411074">Переместить в начало</translation> <translation id="8250920743982581267">Документы</translation> <translation id="825412236959742607">Эта страница расходовала слишком много памяти, поэтому часть контента была удалена.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Имя владельца карты</translation> <translation id="8604763363205185560">Помогайте Google улучшать Chrome и его функции безопасности</translation> <translation id="8609465669617005112">Переместить вверх</translation> +<translation id="8611192991944347781">Управление данными</translation> <translation id="8616006591992756292">Информация о других ваших действиях в Интернете может также храниться на странице <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Открыть предложенный URL из скачанного контента?</translation> <translation id="8636825310635137004">Чтобы получить доступ к вкладкам на всех ваших устройствах, включите синхронизацию.</translation> <translation id="8641930654639604085">Блокировать сайты для взрослых</translation> +<translation id="8655129584991699539">Удалить данные можно в настройках Chrome</translation> <translation id="8662811608048051533">Вы автоматически выйдете из учетных записей на большинстве сайтов.</translation> <translation id="8664979001105139458">Файл с таким именем уже существует.</translation> <translation id="8676374126336081632">Очистить</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Поиск контактов</translation> <translation id="869891660844655955">Срок действия</translation> <translation id="8719023831149562936">Не удалось передать текущую вкладку</translation> +<translation id="8723954843026426558">Я соглашаюсь с Условиями использования и Политикой конфиденциальности сайта <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, а также осознаю, что у меня есть право на отзыв данного согласия.</translation> <translation id="8725066075913043281">Повторить попытку</translation> <translation id="8728487861892616501">Используя это приложение, вы соглашаетесь с <ph name="BEGIN_LINK1" />Условиями использования<ph name="END_LINK1" /> и <ph name="BEGIN_LINK2" />Примечанием о конфиденциальности<ph name="END_LINK2" /> Chrome, а также с <ph name="BEGIN_LINK3" />Примечанием о конфиденциальности для аккаунтов Google, управляемых с помощью Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Готово</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb index b354c3c..a61e05ca 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb
@@ -167,7 +167,6 @@ <translation id="2154484045852737596">Úprava karty</translation> <translation id="2154710561487035718">Kopírovať webovú adresu</translation> <translation id="2156074688469523661">Zostávajúce weby (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Skontrolujte svoje internetové pripojenie</translation> <translation id="2197557662829090533">Povoľte digitálnej rovnováhe zobrazovať weby, ktoré ste navštívili</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, webová aplikácia: <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Pokračovať ako <ph name="USER_FULL_NAME" /></translation> @@ -286,6 +285,7 @@ <translation id="3115898365077584848">Zobraziť informácie</translation> <translation id="3123473560110926937">Blokované na niektorých weboch</translation> <translation id="3137521801621304719">Ukončiť režim inkognito</translation> +<translation id="3143515551205905069">Zrušiť synchronizáciu</translation> <translation id="3148434565183091099">Ak chcete mať záložky na všetkých zariadeniach, prihláste sa do Chromu.</translation> <translation id="3157842584138209013">Ak chcete zistiť, koľko dát ste ušetrili, klepnite na tlačidlo Ďalšie možnosti</translation> <translation id="3166827708714933426">Skratky pre karty a okná</translation> @@ -304,6 +304,7 @@ <translation id="3269093882174072735">Načítať obrázok</translation> <translation id="3269956123044984603">Ak chcete získať karty z vašich ďalších zariadení, zapnite v nastaveniach účtu Android možnosť Automaticky synchronizovať dáta.</translation> <translation id="3282568296779691940">Prihlásenie do prehliadača Chrome</translation> +<translation id="3288003805934695103">Opätovne načítať stránku</translation> <translation id="32895400574683172">Upozornenia sú povolené</translation> <translation id="3295530008794733555">Prehliadajte rýchlejšie. Využívajte menej dát.</translation> <translation id="3295602654194328831">Skryť informácie</translation> @@ -373,6 +374,7 @@ <translation id="3819178904835489326">Počet odstránených stiahnutých súborov: <ph name="NUMBER_OF_DOWNLOADS" /></translation> <translation id="3819562311292413223">Sťahovať články pre vás</translation> <translation id="3822502789641063741">Vymazať úložisko webu?</translation> +<translation id="385051799172605136">Naspäť</translation> <translation id="3859306556332390985">Pretočiť dopredu</translation> <translation id="3894427358181296146">Pridanie priečinka</translation> <translation id="3895926599014793903">Vynútiť povolenie priblíženia</translation> @@ -704,6 +706,7 @@ <translation id="6232535412751077445">Ak povolíte možnosť Nesledovať, k odosielaným dátam prehliadania sa pridá žiadosť. Akýkoľvek účinok závisí od toho, či bude web na žiadosť reagovať, a tiež od interpretácie žiadosti. Niektoré weby môžu napríklad na túto žiadosť reagovať tak, že vám zobrazia reklamy, ktoré nie sú založené na ostatných weboch, ktoré ste navštívili. Mnoho webov bude stále zhromažďovať a používať vaše dáta prehliadania, napríklad na zlepšenie zabezpečenia, poskytovanie obsahu, reklám a odporúčaní a na generovanie štatistík prehľadov.</translation> +<translation id="624789221780392884">Aktualizácia je pripravená</translation> <translation id="6255999984061454636">Návrhy obsahu</translation> <translation id="6277522088822131679">Pri tlačení stránky sa vyskytol problém. Skúste to znova.</translation> <translation id="6295158916970320988">Všetky stránky</translation> @@ -739,6 +742,7 @@ <translation id="6475951671322991020">Stiahnuť video</translation> <translation id="6482749332252372425">Súbor <ph name="FILE_NAME" /> sa nepodarilo stiahnuť z dôvodu nedostatku voľného miesta v úložisku.</translation> <translation id="6496823230996795692">Prvé spustenie aplikácie <ph name="APP_NAME" /> vyžaduje pripojenie k internetu.</translation> +<translation id="6508722015517270189">Reštartujte Chrome</translation> <translation id="6527303717912515753">Zdieľať</translation> <translation id="6534565668554028783">Odpoveď Googlu trvala príliš dlho</translation> <translation id="6538442820324228105">Stiahnuté: <ph name="GBS" /> GB</translation> @@ -837,7 +841,6 @@ <translation id="7189372733857464326">Čaká sa na dokončenie aktualizácie služieb Google Play Services</translation> <translation id="7189598951263744875">Zdieľať...</translation> <translation id="7191430249889272776">Karta je otvorená na pozadí.</translation> -<translation id="7221869452894271364">Obnoviť túto stránku</translation> <translation id="723171743924126238">Výber obrázkov</translation> <translation id="7243308994586599757">Možnosti sú k dispozícii v dolnej časti obrazovky</translation> <translation id="7250468141469952378">Vybrané: <ph name="ITEM_COUNT" /></translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb index b9464f29..5613922 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="sl"> <translation id="1006017844123154345">Odpri v spletu</translation> +<translation id="1023450834687746199">Izbrisali ste podatke za aplikacijo <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">Dodajanje <ph name="WEBAPK_NAME" /> ...</translation> <translation id="1041308826830691739">S spletnih mest</translation> <translation id="1049743911850919806">Način brez beleženja zgodovine</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Izbriše zgodovino in samodokončanja v naslovni vrstici.</translation> <translation id="2021896219286479412">Kontrol. za mesto v celo. načinu</translation> <translation id="2038563949887743358">Vklop možnosti »Zahteva za namizno spletno mesto«</translation> +<translation id="204321170514947529">Aplikacija <ph name="APP_NAME" /> ima prav tako podatke v Chromu</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB drugih aplikacij</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /><ph name="SEPARATOR" /><ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Iskanje z dotikom</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Urejanje kartice</translation> <translation id="2154710561487035718">Kopiraj URL</translation> <translation id="2156074688469523661">Preostala spletna mesta (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Preverite internetno povezavo</translation> <translation id="2197557662829090533">Digitalni dobrobiti omogočite prikazovanje obiskanih spletnih mest</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, spletna aplikacija. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Nadaljujte kot <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">ni uspelo</translation> <translation id="2781151931089541271">Še 1 s</translation> <translation id="2784212955220061919">Chrome v lahkem načinu naloži strani hitreje in uporabi do 60 odstotkov manj podatkov. Googlova tehnologija v oblaku optimizira strani, ki jih obiščete.</translation> +<translation id="2785336755839207516">Odmestili ste aplikacijo <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Prikazovanje shranjenih gesel in možnosti za gesla</translation> <translation id="2810645512293415242">Poenostavljena stran zaradi prihranka pri prenosu podatkov in hitrejšega nalaganja.</translation> <translation id="281504910091592009">Ogled in upravljanje shranjenih gesel v <ph name="BEGIN_LINK" />Google Računu<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Pokaži informacije</translation> <translation id="3123473560110926937">Blokirano na nekaterih spletnih mestih</translation> <translation id="3137521801621304719">Izklop načina brez beleženja zgodovine</translation> +<translation id="3143515551205905069">Prekliči sinhronizacijo</translation> <translation id="3148434565183091099">Če želite dostopati do zaznamkov v vseh napravah, se prijavite v Chrome.</translation> <translation id="3157842584138209013">Če pritisnete gumb za več možnosti, si lahko ogledate, koliko prenosa podatkov ste prihranili</translation> <translation id="3166827708714933426">Bližnjice za zavihke in okna</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Naloži sliko</translation> <translation id="3269956123044984603">Če želite dostopati do zavihkov v drugih napravah, v nastavitvah računa za Android vklopite »Samodejno sinhroniziraj podatke«.</translation> <translation id="3282568296779691940">Prijava v Google Chrome</translation> +<translation id="3288003805934695103">znova naložiti stran</translation> <translation id="32895400574683172">Obvestila so dovoljena</translation> <translation id="3295530008794733555">Brskajte hitreje. Uporabite manj podatkov.</translation> <translation id="3295602654194328831">Skrij informacije</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326">Št. izbrisanih prenosov: <ph name="NUMBER_OF_DOWNLOADS" /></translation> <translation id="3819562311292413223">Prenos člankov za vas</translation> <translation id="3822502789641063741">Izbris pod. spl. mesta?</translation> +<translation id="385051799172605136">Nazaj</translation> <translation id="3859306556332390985">Išči naprej</translation> <translation id="3894427358181296146">Dodajanje mape</translation> <translation id="3895926599014793903">Vsili povečavo</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Prijava</translation> <translation id="395206256282351086">Predlogi za iskanje in spletna mesta so onemogočeni</translation> <translation id="3955193568934677022">Dovoli spletnim mestom predvajanje zaščitene vsebine (priporočeno)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome bo naložil stran, ko bo pripravljen}one{Chrome bo naložil strani, ko bo pripravljen}two{Chrome bo naložil strani, ko bo pripravljen}few{Chrome bo naložil strani, ko bo pripravljen}other{Chrome bo naložil strani, ko bo pripravljen}}</translation> <translation id="3963007978381181125">Šifriranje gesla ne vključuje plačilnih sredstev in naslovov iz Googla Pay. Vaše šifrirane podatke lahko bere samo oseba z vašim geslom. Geslo ni poslano Googlu in ni shranjeno v Googlu. Če ga pozabite ali želite spremeniti to nastavitev, boste morali sinhronizacijo ponastaviti. <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Prenos končan</translation> <translation id="397583555483684758">Sinhronizacija je prenehala delovati</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Predstavnosti</translation> <translation id="4278390842282768270">Dovoljeno</translation> <translation id="429312253194641664">Spletno mesto predvaja predstavnost</translation> +<translation id="4298388696830689168">Povezana spletna mesta</translation> <translation id="4307992518367153382">Osnove</translation> <translation id="4314815835985389558">Upravljanje sinhronizacije</translation> <translation id="4351244548802238354">Zapri pogovorno okno</translation> @@ -698,6 +705,7 @@ <translation id="6232535412751077445">Če omogočite možnost »Ne sledi«, bo zahteva vključena v vaš promet brskanja. Učinek je odvisen od odziva spletnega mesta na zahtevo in od tega, kako si zahtevo razlaga. Nekatera spletna mesta se lahko na primer na zahtevo odzovejo tako, da prikažejo oglase, ki ne temeljijo na drugih spletnih mestih, ki ste jih obiskali. Veliko spletnih mest bo še vedno zbiralo in uporabljalo vaše podatke o brskanju, na primer za izboljšanje varnosti, zagotavljanje vsebine, oglasov in priporočil ter za pridobivanje statističnih podatkov za poročanje.</translation> +<translation id="624789221780392884">Posodobitev je pripravljena</translation> <translation id="6255999984061454636">Predlogi za vsebino</translation> <translation id="6277522088822131679">Pri tiskanju strani je prišlo do težave. Poskusite znova.</translation> <translation id="6295158916970320988">Vsa spletna mesta</translation> @@ -733,6 +741,7 @@ <translation id="6475951671322991020">Prenos videoposnetka</translation> <translation id="6482749332252372425">Prenos datoteke <ph name="FILE_NAME" /> ni uspel zaradi pomanjkanja prostora za shranjevanje.</translation> <translation id="6496823230996795692">Pri prvi uporabi aplikacije <ph name="APP_NAME" /> se morate povezati v internet.</translation> +<translation id="6508722015517270189">Znova zaženite Chrome</translation> <translation id="6527303717912515753">Skupna raba</translation> <translation id="6534565668554028783">Google se ni odzval v ustreznem času</translation> <translation id="6538442820324228105">Preneseno <ph name="GBS" /> GB</translation> @@ -831,7 +840,6 @@ <translation id="7189372733857464326">Čakanje na dokončanje posodobitev storitev za Google Play</translation> <translation id="7189598951263744875">Deli z drugimi</translation> <translation id="7191430249889272776">Zavihek se je odprl v ozadju.</translation> -<translation id="7221869452894271364">Ponovno naložite to stran</translation> <translation id="723171743924126238">Izberite slike</translation> <translation id="7243308994586599757">Možnosti so na voljo pri dnu zaslona</translation> <translation id="7250468141469952378">Št. izbranih: <ph name="ITEM_COUNT" /></translation> @@ -918,6 +926,7 @@ <translation id="784934925303690534">Časovno obdobje</translation> <translation id="7851858861565204677">Druge naprave</translation> <translation id="7854964836418414587">Zapiranje več podobnega</translation> +<translation id="7871791972254842204">Pozneje preberite pogoje in določila za <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ter se strinjajte z njimi</translation> <translation id="7875915731392087153">Ustvarite e-poštno sporočilo</translation> <translation id="7876243839304621966">Odstrani vse</translation> <translation id="7882131421121961860">Ni zgodovine</translation> @@ -968,6 +977,7 @@ <translation id="8200772114523450471">Nadaljuj</translation> <translation id="8209050860603202033">Odpri sliko</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB prenesenih datotek</translation> +<translation id="8232956427053453090">Ohrani podatke</translation> <translation id="8249310407154411074">Na vrh</translation> <translation id="8250920743982581267">Dokumenti</translation> <translation id="825412236959742607">Ta stran uporablja preveč pomnilnika, zato je Chrome odstranil nekaj vsebine.</translation> @@ -1021,10 +1031,12 @@ <translation id="860043288473659153">Ime imetnika kartice</translation> <translation id="8604763363205185560">Pomagajte izboljšati Chrome in njegovo varnost</translation> <translation id="8609465669617005112">Premakni navzgor</translation> +<translation id="8611192991944347781">Upravljaj podatke</translation> <translation id="8616006591992756292">V Google Računu so morda druge vrste zgodovine brskanja na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Želite odpreti predlagani URL, naveden v preneseni vsebini?</translation> <translation id="8636825310635137004">Če želite dostopati do zavihkov iz drugih naprav, vklopite sinhronizacijo.</translation> <translation id="8641930654639604085">Poskusi blokirati spletna mesta za odrasle</translation> +<translation id="8655129584991699539">Podatke lahko izbrišete v Chromovih nastavitvah</translation> <translation id="8662811608048051533">Odjavi vas iz večine spletnih mest.</translation> <translation id="8664979001105139458">Ime datoteke že obstaja</translation> <translation id="8676374126336081632">Izbriši vnos</translation> @@ -1032,6 +1044,7 @@ <translation id="868929229000858085">Iskanje po stikih</translation> <translation id="869891660844655955">Datum izteka</translation> <translation id="8719023831149562936">Trenutnega zavihka ni mogoče prenesti</translation> +<translation id="8723954843026426558">Strinjam se s pogoji in določili, pravilnikom o zasebnosti in pravico do umika za <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Poskusite znova</translation> <translation id="8728487861892616501">Če uporabljate to aplikacijo, se strinjate s Chromovimi <ph name="BEGIN_LINK1" />pogoji storitve<ph name="END_LINK1" /> in <ph name="BEGIN_LINK2" />obvestilom o zasebnosti<ph name="END_LINK2" /> ter <ph name="BEGIN_LINK3" />obvestilom o zasebnosti za Google Račune, upravljane s Family Linkom<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Končano</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb index 71d4573..30df7ad 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="sr"> <translation id="1006017844123154345">Отвори онлајн</translation> +<translation id="1023450834687746199">Обрисали сте податке за <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">Додаје се <ph name="WEBAPK_NAME" />...</translation> <translation id="1041308826830691739">Са веб-сајтова</translation> <translation id="1049743911850919806">Без архивирања</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Брише историју и аутоматска довршавања у траци за адресу.</translation> <translation id="2021896219286479412">Контроле сајта на целом екрану</translation> <translation id="2038563949887743358">Укључи захтевање верзије сајта за рачунаре</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> такође има податке у Chrome-у</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB – друге апликације</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Додирните за претрагу</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Измените картицу</translation> <translation id="2154710561487035718">Копирање URL адресе</translation> <translation id="2156074688469523661">Преостали сајтови (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Проверите интернет везу</translation> <translation id="2197557662829090533">Дозволите да вам Дигитално благостање приказује веб-сајтове које сте посетили</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, веб-апликација. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Настави као <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">није успело</translation> <translation id="2781151931089541271">Још 1 сек</translation> <translation id="2784212955220061919">У Lite режиму Chrome учитава странице брже и користи и до 60 процената мање података. Google клауд технологија оптимизује странице које посећујете.</translation> +<translation id="2785336755839207516">Деинсталирали сте <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Приказују се сачуване лозинке и опције за лозинке</translation> <translation id="2810645512293415242">Страница је поједностављена ради уштеде на подацима и бржег учитавања.</translation> <translation id="281504910091592009">Прегледајте сачуване лозинке и управљајте њима на <ph name="BEGIN_LINK" />Google налогу<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Прикажи информације</translation> <translation id="3123473560110926937">Блокирано на неким сајтовима</translation> <translation id="3137521801621304719">Изађи из режима без архивирања</translation> +<translation id="3143515551205905069">Откажи синхронизацију</translation> <translation id="3148434565183091099">Да би вам обележивачи били доступни на свим уређајима, пријавите се у Chrome.</translation> <translation id="3157842584138209013">Погледајте колико сте података уштедели помоћу дугмета Још опција</translation> <translation id="3166827708714933426">Пречице за картице и прозоре</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Учитај слику</translation> <translation id="3269956123044984603">Да би вам биле доступне картице са других уређаја, укључите опцију „Аутоматски синхронизуј податке“ у Android подешавањима на налогу.</translation> <translation id="3282568296779691940">Пријављивање у Chrome</translation> +<translation id="3288003805934695103">да поново учитате страницу</translation> <translation id="32895400574683172">Обавештења су дозвољена</translation> <translation id="3295530008794733555">Прегледајте брже. Користите мање података.</translation> <translation id="3295602654194328831">Сакриј информације</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326">Избрисана преузимања: <ph name="NUMBER_OF_DOWNLOADS" /></translation> <translation id="3819562311292413223">Преузмите чланке за вас</translation> <translation id="3822502789641063741">Бришете меморију сајта?</translation> +<translation id="385051799172605136">Назад</translation> <translation id="3859306556332390985">Премотај унапред</translation> <translation id="3894427358181296146">Додајте директоријум</translation> <translation id="3895926599014793903">Принудно омогући зумирање</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Пријави ме</translation> <translation id="395206256282351086">Предлози за претрагу и сајтове су онемогућени</translation> <translation id="3955193568934677022">Дозволи сајтовима да пуштају заштићени садржај (препоручено)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome ће учитати страницу када буде спремна}one{Chrome ће учитати странице када буду спремне}few{Chrome ће учитати странице када буду спремне}other{Chrome ће учитати странице када буду спремне}}</translation> <translation id="3963007978381181125">Шифровање помоћу приступне фразе не обухвата начине плаћања и адресе из Google Pay-а. Само неко ко има приступну фразу може да чита шифроване податке. Приступна фраза се не шаље Google-у нити је он чува. Ако заборавите приступну фразу или пожелите да промените ово подешавање, треба да ресетујете синхронизацију. <ph name="BEGIN_LINK" />Сазнајте више<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Преузимање је довршено</translation> <translation id="397583555483684758">Синхронизација више не функционише</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Медији</translation> <translation id="4278390842282768270">Дозвољено</translation> <translation id="429312253194641664">Сајт пушта медијски садржај</translation> +<translation id="4298388696830689168">Повезани сајтови</translation> <translation id="4307992518367153382">Основна</translation> <translation id="4314815835985389558">Управљајте синхронизацијом</translation> <translation id="4351244548802238354">Затвори дијалог</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Ако омогућите функцију „Не прати“, захтев ће бити обухваћен саобраћајем прегледања. Последица те радње зависи од тога да ли веб-сајт одговара на захтев и како се захтев тумачи. На пример, неки веб-сајтови могу да одговоре на овај захтев приказивањем огласа који нису засновани на другим веб-сајтовима које сте посетили. Многи веб-сајтови ће ипак прикупљати и користити податке прегледања, на пример, ради побољшања безбедности, пружања садржаја, огласа и препорука, као и ради генерисања статистике извештавања.</translation> +<translation id="624789221780392884">Ажурирање је спремно</translation> <translation id="6255999984061454636">Предлози за садржај</translation> <translation id="6277522088822131679">Дошло је до проблема при штампању странице. Пробајте поново.</translation> <translation id="6295158916970320988">Сви сајтови</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Преузми видео</translation> <translation id="6482749332252372425">Преузимање датотеке <ph name="FILE_NAME" /> није успело због недостатка меморијског простора.</translation> <translation id="6496823230996795692">Да бисте први пут користили <ph name="APP_NAME" />, повежите се на интернет.</translation> +<translation id="6508722015517270189">Поново покрените Chrome</translation> <translation id="6527303717912515753">Дели</translation> <translation id="6534565668554028783">Google-у је требало предуго да одговори</translation> <translation id="6538442820324228105">Преузели сте <ph name="GBS" /> GB</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Чека се да Google Play услуге заврше ажурирање</translation> <translation id="7189598951263744875">Дели...</translation> <translation id="7191430249889272776">Картица је отворена у позадини.</translation> -<translation id="7221869452894271364">Поново учитајте ову страницу</translation> <translation id="723171743924126238">Изаберите слике</translation> <translation id="7243308994586599757">Опције су доступне у дну екрана</translation> <translation id="7250468141469952378">Изабрали сте <ph name="ITEM_COUNT" /></translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Временски опсег</translation> <translation id="7851858861565204677">Други уређаји</translation> <translation id="7854964836418414587">Затворите Још сличних ствари</translation> +<translation id="7871791972254842204">Прочитајте и прихватите услове и одредбе на <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> касније</translation> <translation id="7875915731392087153">Напишите имејл</translation> <translation id="7876243839304621966">Уклони све</translation> <translation id="7882131421121961860">Историја није пронађена</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Настави</translation> <translation id="8209050860603202033">Отвори слику</translation> <translation id="8220488350232498290">Преузели сте <ph name="GIGABYTES" /> GB</translation> +<translation id="8232956427053453090">Задржи податке</translation> <translation id="8249310407154411074">Премести на врх</translation> <translation id="8250920743982581267">Документи</translation> <translation id="825412236959742607">Ова страница користи превише меморије, па је Chrome уклонио одређени садржај.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Име власника картице</translation> <translation id="8604763363205185560">Помозите нам да побољшамо Chrome и његову безбедност</translation> <translation id="8609465669617005112">Премести нагоре</translation> +<translation id="8611192991944347781">Управљајте подацима</translation> <translation id="8616006591992756292">Google налог може да има друге облике историје прегледања на <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Желите ли да отворите предложени URL наведен у преузетом садржају?</translation> <translation id="8636825310635137004">Да би вам картице биле доступне на другим уређајима, укључите синхронизацију.</translation> <translation id="8641930654639604085">Покушај да блокираш сајтове са садржајем за одрасле</translation> +<translation id="8655129584991699539">Можете да обришете податке у Chrome подешавањима</translation> <translation id="8662811608048051533">Одјавиће вас са већине сајтова.</translation> <translation id="8664979001105139458">Име датотеке већ постоји</translation> <translation id="8676374126336081632">Обриши унос</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Претражите контакте</translation> <translation id="869891660844655955">Датум истека</translation> <translation id="8719023831149562936">Није могуће пребацити актуелну картицу</translation> +<translation id="8723954843026426558">Прихватам услове и одредбе, политику приватности и право на одустајање за <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Пробајте поново</translation> <translation id="8728487861892616501">Ако користите ову апликацију, прихватате Chrome <ph name="BEGIN_LINK1" />услове коришћења услуге<ph name="END_LINK1" /> и <ph name="BEGIN_LINK2" />обавештење о приватности<ph name="END_LINK2" />, као и <ph name="BEGIN_LINK3" />обавештење о приватности за Google налоге којима се управља помоћу Family Link-а<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Готово</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb index f639689..03b853e 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="sv"> <translation id="1006017844123154345">Öppna onlineversionen</translation> +<translation id="1023450834687746199">Du har rensat data för <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">Lägger till <ph name="WEBAPK_NAME" /> …</translation> <translation id="1041308826830691739">Från webbplatser</translation> <translation id="1049743911850919806">Inkognito</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Rensar historik och autoslutföranden i adressfältet.</translation> <translation id="2021896219286479412">Helskärmskontroller på webbsidan</translation> <translation id="2038563949887743358">Aktivera begäran av skrivbordsversion</translation> +<translation id="204321170514947529">Data för <ph name="APP_NAME" /> finns även i Chrome</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB används av övriga appar</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Tryck för att söka</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Redigera kortet</translation> <translation id="2154710561487035718">Kopiera webbadress</translation> <translation id="2156074688469523661">Återstående webbplatser (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Kontrollera internetanslutningen</translation> <translation id="2197557662829090533">Tillåt att webbplatser som du har besökt visas i Digitalt välmående</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, webbapp. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Fortsätt som <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">misslyckades</translation> <translation id="2781151931089541271">1 sekund kvar</translation> <translation id="2784212955220061919">I begränsat läge läses sidorna in snabbare och dataförbrukningen minskar med upp till 60 procent. Sidorna du besöker optimeras med Googles molnteknik.</translation> +<translation id="2785336755839207516">Du har avinstallerat <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Sparade lösenord och lösenordsalternativ visas</translation> <translation id="2810645512293415242">Förenklad sida visades för att spara data och minska inläsningstiden.</translation> <translation id="281504910091592009">Visa och hantera sparade lösenord i <ph name="BEGIN_LINK" />Google-kontot<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Visa info</translation> <translation id="3123473560110926937">Blockeras på vissa webbplatser</translation> <translation id="3137521801621304719">Inaktivera inkognitoläge</translation> +<translation id="3143515551205905069">Avbryt synkronisering</translation> <translation id="3148434565183091099">Logga in i Chrome om du vill få tillgång till samma bokmärken på alla enheter.</translation> <translation id="3157842584138209013">Under Fler alternativ kan du se hur mycket data du har sparat</translation> <translation id="3166827708714933426">Kortkommandon för flikar och fönster</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Läs in bild</translation> <translation id="3269956123044984603">Aktivera Automatisk synkronisering av data i kontoinställningarna för Android om du vill ha samma flikar tillgängliga på alla enheter.</translation> <translation id="3282568296779691940">Logga in i Chrome</translation> +<translation id="3288003805934695103">läsa in sidan igen</translation> <translation id="32895400574683172">Aviseringar tillåts</translation> <translation id="3295530008794733555">Surfa snabbare. Förbruka mindre data.</translation> <translation id="3295602654194328831">Dölj info</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> nedladdningar har raderats</translation> <translation id="3819562311292413223">Ladda ned artiklar för dig</translation> <translation id="3822502789641063741">Rensa webbplatslagring?</translation> +<translation id="385051799172605136">Bakåt</translation> <translation id="3859306556332390985">Sök framåt</translation> <translation id="3894427358181296146">Lägg till mapp</translation> <translation id="3895926599014793903">Tvinga aktivering av zoom</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Logga in</translation> <translation id="395206256282351086">Sök- och webbplatsförslag har inaktiverats</translation> <translation id="3955193568934677022">Tillåt att skyddat innehåll spelas upp på webbplatser (rekommenderas)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Sidan läses in i Chrome när den blir tillgänglig}other{Sidorna läses in i Chrome när de blir tillgängliga}}</translation> <translation id="3963007978381181125">Betalningsmetoder och adresser från Google Pay omfattas inte av kryptering med lösenfras. Endast personer som har ditt lösenord kan läsa dina krypterade uppgifter. Lösenfrasen skickas inte till och sparas inte av Google. Om du glömmer lösenfrasen måste du återställa synkroniseringen. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Nedladdning slutförd</translation> <translation id="397583555483684758">Synkroniseringen har slutat fungera</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Media</translation> <translation id="4278390842282768270">Tillåtet</translation> <translation id="429312253194641664">Media spelas upp på en webbplats</translation> +<translation id="4298388696830689168">Länkade webbplatser</translation> <translation id="4307992518367153382">Grunderna</translation> <translation id="4314815835985389558">Hantera synkronisering</translation> <translation id="4351244548802238354">Stäng dialogrutan</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Om du aktiverar Do Not Track inkluderas en begäran i din surftrafik. Eventuella effekter beror på om webbplatsen svarar på begäran och hur begäran tolkas. Vissa webbplatser kan till exempel svara på begäran genom att visa annonser som inte baseras på andra webbplatser du har besökt. Många webbplatser samlar ändå in och använder din webbinformation – till exempel för att förbättra säkerheten, tillhandahålla innehåll, annonser och rekommendationer samt generera rapportstatistik.</translation> +<translation id="624789221780392884">Uppdateringen är klar</translation> <translation id="6255999984061454636">Förslag på innehåll</translation> <translation id="6277522088822131679">Det gick inte att skriva ut sidan. Försök igen.</translation> <translation id="6295158916970320988">Alla webbplatser</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Ladda ned video</translation> <translation id="6482749332252372425">Det gick inte att ladda ned <ph name="FILE_NAME" /> eftersom det inte finns tillräckligt med lagringsutrymme.</translation> <translation id="6496823230996795692">Du behöver vara ansluten till internet när du använder <ph name="APP_NAME" /> för första gången.</translation> +<translation id="6508722015517270189">Starta om Chrome</translation> <translation id="6527303717912515753">Dela</translation> <translation id="6534565668554028783">Google tog för lång tid på sig att svara</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB har laddats ned</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Väntar på Google Play-tjänster ska avsluta uppdateringen</translation> <translation id="7189598951263744875">Dela ...</translation> <translation id="7191430249889272776">Fliken öppnades i bakgrunden.</translation> -<translation id="7221869452894271364">Hämta sidan igen</translation> <translation id="723171743924126238">Välj bilder</translation> <translation id="7243308994586599757">Alternativ visas nära skärmens nedre kant</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> har valts</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Tidsintervall</translation> <translation id="7851858861565204677">Andra enheter</translation> <translation id="7854964836418414587">Stäng Fler liknande</translation> +<translation id="7871791972254842204">Läs igenom och godkänn användarvillkoren på <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> senare</translation> <translation id="7875915731392087153">Skapa ett e-postmeddelande</translation> <translation id="7876243839304621966">Ta bort alla</translation> <translation id="7882131421121961860">Ingen historik hittades</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Återuppta</translation> <translation id="8209050860603202033">Öppna bild</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB används av nedladdningar</translation> +<translation id="8232956427053453090">Behåll data</translation> <translation id="8249310407154411074">Flytta högst upp</translation> <translation id="8250920743982581267">Dokument</translation> <translation id="825412236959742607">Den här sidan använder för mycket minne, så en del innehåll har tagits bort.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Namn på kortinnehavare</translation> <translation id="8604763363205185560">Hjälp till att göra Chrome bättre och säkrare</translation> <translation id="8609465669617005112">Flytta upp</translation> +<translation id="8611192991944347781">Hantera data</translation> <translation id="8616006591992756292">Det kan finnas andra former av webbhistorik i Google-kontot på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Vill du öppna den föreslagna webbadressen i det nedladdade innehållet?</translation> <translation id="8636825310635137004">Aktivera synkronisering om du vill ha samma flikar tillgängliga på alla enheter.</translation> <translation id="8641930654639604085">Försök blockera webbplatser med innehåll för vuxna</translation> +<translation id="8655129584991699539">Du kan rensa data i Chrome-inställningarna</translation> <translation id="8662811608048051533">Du loggas ut från de flesta webbplatser.</translation> <translation id="8664979001105139458">Filnamnet finns redan</translation> <translation id="8676374126336081632">Radera inmatning</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Sök bland kontakterna</translation> <translation id="869891660844655955">Utgångsdatum</translation> <translation id="8719023831149562936">Den aktuella fliken kan inte överföras</translation> +<translation id="8723954843026426558">Jag godkänner användarvillkor, sekretesspolicy och ångerrätt på <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Försök igen</translation> <translation id="8728487861892616501">Genom att fortsätta att använda programmet godkänner du Chromes <ph name="BEGIN_LINK1" />användarvillkor<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />sekretessmeddelande<ph name="END_LINK2" /> och <ph name="BEGIN_LINK3" />sekretessmeddelandet för Google-konton som hanteras via Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Klart</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb index 09ccd54..e6edb81 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="sw"> <translation id="1006017844123154345">Fungua Mtandaoni</translation> +<translation id="1023450834687746199">Umefuta data ya <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">Inaongeza <ph name="WEBAPK_NAME" />...</translation> <translation id="1041308826830691739">Kutoka kwenye tovuti</translation> <translation id="1049743911850919806">Kichupo fiche</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Hufuta historia na ujazaji kiotomatiki katika sehemu ya anwani.</translation> <translation id="2021896219286479412">Vidhibiti vya tovuti vya skrini nzima</translation> <translation id="2038563949887743358">Washa Omba Tovuti ya Eneo-kazi</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> pia ina data katika Chrome</translation> <translation id="2045104531052923016">Programu nyingine za GB <ph name="GIGABYTES" /></translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Gusa ili Utafute</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Badilisha kadi</translation> <translation id="2154710561487035718">Nakili UR:</translation> <translation id="2156074688469523661">Tovuti zilizosalia (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Angalia muunganisho wako wa intaneti</translation> <translation id="2197557662829090533">Ruhusu mpango wa Nidhamu Dijitali uonyeshe tovuti ulizotembelea</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, programu ya wavuti. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Endelea ukitumia <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">imeshindwa</translation> <translation id="2781151931089541271">Imesalia sekunde 1</translation> <translation id="2784212955220061919">Katika Hali nyepesi, Chrome hupakia kurasa haraka zaidi na huokoa data kwa hadi asilimia 60. Teknolojia ya Wingu la Google huboresha kurasa unazotembelea.</translation> +<translation id="2785336755839207516">Umeondoa <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Inaonyesha manenosiri yaliyohifadhiwa na chaguo za manenosiri</translation> <translation id="2810645512293415242">Ukurasa umerahisishwa ili uokoe data na upakie haraka zaidi.</translation> <translation id="281504910091592009">Angalia na udhibiti manenosiri yaliyohifadhiwa kwenye <ph name="BEGIN_LINK" />Akaunti yako ya Google<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Onyesha Maelezo</translation> <translation id="3123473560110926937">Imezuiwa kwenye baadhi ya tovuti</translation> <translation id="3137521801621304719">Ondoka kwenye hali fiche</translation> +<translation id="3143515551205905069">Ghairi usawazishaji</translation> <translation id="3148434565183091099">Ingia katika Chrome ili upate alamisho zako kwenye vifaa vyako vyote.</translation> <translation id="3157842584138209013">Ona kiasi cha data ulichookoa kwa kubofya kitufe cha Chaguo Zaidi</translation> <translation id="3166827708714933426">Njia za mikato ya vichupo na vidirisha</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Pakia picha</translation> <translation id="3269956123044984603">Ili upate vichupo vyako kutoka kwenye vifaa vyako vingine, washa kipengele cha "Kusawazisha data kiotomatiki" katika mipangilio ya akaunti ya Android.</translation> <translation id="3282568296779691940">Ingia katika Chrome</translation> +<translation id="3288003805934695103">Kupakia upya ukurasa</translation> <translation id="32895400574683172">Arifa zinaruhusiwa</translation> <translation id="3295530008794733555">Vinjari haraka. Tumia data chache.</translation> <translation id="3295602654194328831">Ficha Maelezo</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326">Vipakuliwa <ph name="NUMBER_OF_DOWNLOADS" /> vimefutwa</translation> <translation id="3819562311292413223">Pakua makala tunayokupendekezea</translation> <translation id="3822502789641063741">Ungependa kufuta hifadhi ya tovuti?</translation> +<translation id="385051799172605136">Rudi nyuma</translation> <translation id="3859306556332390985">Peleka mbele</translation> <translation id="3894427358181296146">Ongeza folda</translation> <translation id="3895926599014793903">Lazimisha kuwasha ukuzaji</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Ingia</translation> <translation id="395206256282351086">Mapendekezo ya utafutaji na tovuti yamezimwa</translation> <translation id="3955193568934677022">Ruhusu tovuti zicheze maudhui yanayolindwa (inapendekezwa)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome itapakia ukurasa wako ukiwa tayari}other{Chrome itapakia kurasa zako zikiwa tayari}}</translation> <translation id="3963007978381181125">Usimbaji fiche kwa kutumia kauli ya siri haujumuishi njia za kulipa na anwani kutoka Google Pay. Mtu aliye na kauli yako ya siri pekee ndiye anayeweza kusoma data yako iliyosimbwa kwa njia fiche. Kauli ya siri haitumwi kwa au kuhifadhiwa na Google. Ukisahau kauli yako ya siri au utake kubadilisha mipangilio hii, utahitaji kufanya usawazishaji upya. <ph name="BEGIN_LINK" />Pata maelezo zaidi<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Faili imekamilika kupakuliwa</translation> <translation id="397583555483684758">Usawazishaji umeacha kufanya kazi</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Vyombo vya Habari</translation> <translation id="4278390842282768270">Vilivyoruhusiwa</translation> <translation id="429312253194641664">Tovuti inacheza maudhui</translation> +<translation id="4298388696830689168">Tovuti ambazo zimeunganishwa</translation> <translation id="4307992518367153382">Mambo Msingi</translation> <translation id="4314815835985389558">Dhibiti usawazishaji</translation> <translation id="4351244548802238354">Funga kidirisha</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Kuwasha ‘Usifuatilie’ kunamaanisha kuwa ombi litajumuishwa pamoja na maelezo yako mengine ya kuvinjari. Athari yoyote itategemea ikiwa tovuti inajibu ombi, na namna ombi litakavyofasiriwa. Kwa mfano, baadhi ya tovuti zinaweza kujibu ombi hili kwa kukuonyesha matangazo ambayo hayalingani na tovuti nyingine ulizotembelea. Tovuti nyingi bado zitakusanya na kutumia data yako ya kuvinjari — kwa mfano ili kuboresha usalama, kutoa maudhui, matangazo na mapendekezo, na kuzalisha takwimu za kuripoti.</translation> +<translation id="624789221780392884">Sasisho iko tayari</translation> <translation id="6255999984061454636">Mapendekezo ya maudhui</translation> <translation id="6277522088822131679">Kulikuwa na tatizo katika kuchapisha ukurasa. Tafadhali jaribu tena.</translation> <translation id="6295158916970320988">Tovuti zote</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Pakua video</translation> <translation id="6482749332252372425">Kipakuliwa cha <ph name="FILE_NAME" /> hakijafaulu kwa sababu hakuna nafasi ya hifadhi ya kutosha.</translation> <translation id="6496823230996795692">Ili kutumia <ph name="APP_NAME" /> kwa mara ya kwanza, tafadhali unganisha kwenye intaneti.</translation> +<translation id="6508722015517270189">Zima na uwashe Chrome</translation> <translation id="6527303717912515753">Shiriki</translation> <translation id="6534565668554028783">Google imechukua muda mrefu kujibu</translation> <translation id="6538442820324228105">Umepakua GB <ph name="GBS" /></translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Inasubiri Huduma za Google Play ili kukamilisha kusasisha</translation> <translation id="7189598951263744875">Shiriki...</translation> <translation id="7191430249889272776">Kichupo kimefunguliwa chini chini.</translation> -<translation id="7221869452894271364">Pakia ukurasa huu upya</translation> <translation id="723171743924126238">Chagua picha</translation> <translation id="7243308994586599757">Chaguo zinapatikana karibu na sehemu ya chini ya skrini</translation> <translation id="7250468141469952378">Imechagua <ph name="ITEM_COUNT" /></translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Muda</translation> <translation id="7851858861565204677">Vifaa vingine</translation> <translation id="7854964836418414587">Funga mengine kama hili</translation> +<translation id="7871791972254842204">Soma na ukubali sheria na masharti kwenye <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> baadaye</translation> <translation id="7875915731392087153">Tunga barua pepe</translation> <translation id="7876243839304621966">Ondoa yote</translation> <translation id="7882131421121961860">Hakuna historia iliyopatikana</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Endelea</translation> <translation id="8209050860603202033">Fungua picha</translation> <translation id="8220488350232498290">Imepakua GB <ph name="GIGABYTES" /></translation> +<translation id="8232956427053453090">Hifadhi data</translation> <translation id="8249310407154411074">Sogeza juu</translation> <translation id="8250920743982581267">Hati</translation> <translation id="825412236959742607">Ukurasa huu unatumia hifadhi kubwa mno, hivyo basi Chrome imeondoa baadhi ya maudhui.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Jina la mmiliki wa kadi</translation> <translation id="8604763363205185560">Tusaidie tuboreshe Chrome na usalama wake</translation> <translation id="8609465669617005112">Songa juu</translation> +<translation id="8611192991944347781">Dhibiti data</translation> <translation id="8616006591992756292">Huenda Akaunti yako ya Google ikawa na aina nyingine za historia ya kuvinjari kwenye <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Ungependa kufungua URL iliyopendekezwa na kubainishwa katika maudhui yaliyopakuliwa?</translation> <translation id="8636825310635137004">Ili upate vichupo kutoka kwenye vifaa vyako vingine, washa kipengele cha usawazishaji.</translation> <translation id="8641930654639604085">Jaribu kuzuia tovuti zilizo na maudhui ya watu wazima</translation> +<translation id="8655129584991699539">Unaweza kufuta data hii katika Mipangilio ya Chrome</translation> <translation id="8662811608048051533">Hukuondoa kwenye tovuti nyingi.</translation> <translation id="8664979001105139458">Jina la faili tayari lipo</translation> <translation id="8676374126336081632">Futa uingizaji wa maandishi</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Tafuta kwenye anwani zako</translation> <translation id="869891660844655955">Muda wake unakwisha tarehe</translation> <translation id="8719023831149562936">Haiwezi kusambaza kichupo cha sasa</translation> +<translation id="8723954843026426558">Ninakubali sheria na masharti, sera ya faraja na haki ya kujiondoa ya <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Jaribu tena</translation> <translation id="8728487861892616501">Kwa kutumia programu hii, unakubaliana na <ph name="BEGIN_LINK1" />Sheria na Masharti<ph name="END_LINK1" /> na <ph name="BEGIN_LINK2" />Ilani ya Faragha<ph name="END_LINK2" /> ya Chrome na <ph name="BEGIN_LINK3" />Ilani ya Faragha ya Akaunti za Google Zinazodhibitiwa na Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Nimemaliza</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ta.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ta.xtb index cce87820..b756a33 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ta.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ta.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="ta"> <translation id="1006017844123154345">ஆன்லைனில் திற</translation> +<translation id="1023450834687746199"><ph name="APP_NAME" /> ஆப்ஸின் தரவு அழிக்கப்பட்டது.</translation> <translation id="1036727731225946849"><ph name="WEBAPK_NAME" />ஐச் சேர்க்கிறது...</translation> <translation id="1041308826830691739">இணையதளங்களிலிருந்து</translation> <translation id="1049743911850919806">மறைநிலை</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">முகவரிப் பட்டியில் வரலாற்றையும் தானே நிரப்புதல்களையும் அழிக்கும்.</translation> <translation id="2021896219286479412">முழுத் திரை தளக் கட்டுப்பாடுகள்</translation> <translation id="2038563949887743358">டெஸ்க்டாப் தளத்தைக் கோரு என்பதை இயக்கு</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> ஆப்ஸின் தரவும் Chromeமில் உள்ளது</translation> <translation id="2045104531052923016">பிற பயன்பாடுகள் பயன்படுத்தும் அளவு: <ph name="GIGABYTES" /> ஜி.பை.</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">தேடத் தட்டுக</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">கார்டைத் திருத்தவும்</translation> <translation id="2154710561487035718">URL ஐ நகலெடு</translation> <translation id="2156074688469523661">மீதமுள்ள தளங்கள் (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">உங்கள் இணைய இணைப்பைச் சரிபார்க்கவும்</translation> <translation id="2197557662829090533">நீங்கள் பார்வையிட்ட இணையதளங்களைக் காண்பிக்க ‘டிஜிட்டல் வெல்பீயிங்கை’ அனுமதிக்கவும்</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, இணையப் பயன்பாடு. <ph name="APP_URL" /></translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" /> ஆகத் தொடர்க</translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">தோல்வியுற்றது</translation> <translation id="2781151931089541271">1 வினாடி மீதமுள்ளது</translation> <translation id="2784212955220061919">’லைட்’ பயன்முறையில், பக்கங்களை Chrome வேகமாக ஏற்றுவதோடு, டேட்டாவை 60 சதவீதம் குறைவாகவும் பயன்படுத்தும். Google கிளவுட் தொழில்நுட்பம் நீங்கள் பார்க்கும் பக்கத்தை மேம்படுத்தும்.</translation> +<translation id="2785336755839207516"><ph name="APP_NAME" /> ஆப்ஸை நிறுவல் நீக்கியுள்ளீர்கள்.</translation> <translation id="2803478378562657435">சேமித்த கடவுச்சொற்களையும் கடவுச்சொல் விருப்பங்களையும் காண்பிக்கிறது</translation> <translation id="2810645512293415242">தரவைச் சேமித்து, வேகமாக ஏற்றுவதற்கு எளிதாக்கப்பட்ட பக்கம்.</translation> <translation id="281504910091592009">உங்கள் <ph name="BEGIN_LINK" />Google கணக்கில்<ph name="END_LINK" /> சேமிக்கப்பட்ட கடவுச்சொற்களைப் பார்த்து, நிர்வகிக்கவும்</translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">தகவலைக் காட்டு</translation> <translation id="3123473560110926937">சில தளங்களில் தடுக்கப்பட்டுள்ளன</translation> <translation id="3137521801621304719">மறைநிலையிலிருந்து வெளியேறு</translation> +<translation id="3143515551205905069">ஒத்திசைவை ரத்துசெய்</translation> <translation id="3148434565183091099">உங்கள் எல்லா சாதனங்களிலும் புத்தகக்குறிகளைப் பெற, Chrome இல் உள்நுழையவும்.</translation> <translation id="3157842584138209013">மேலும் விருப்பங்கள் பொத்தானைப் பயன்படுத்தி, எவ்வளவு தரவைச் சேமித்துள்ளீர்கள் என்பதைப் பார்க்கலாம்</translation> <translation id="3166827708714933426">தாவல் மற்றும் சாளரத்திற்கான குறுக்குவழிகள்</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">படத்தை ஏற்று</translation> <translation id="3269956123044984603">பிற சாதனங்களிலிருந்து தாவல்களைப் பெற, Android கணக்கு அமைப்புகளில் "தரவைத் தானாக ஒத்திசை" என்பதை இயக்கவும்.</translation> <translation id="3282568296779691940">Chrome இல் உள்நுழைக</translation> +<translation id="3288003805934695103">பக்கத்தை மீண்டும் ஏற்றுதல்</translation> <translation id="32895400574683172">அறிவிப்புகள் அனுமதிக்கப்படுகின்றன</translation> <translation id="3295530008794733555">வேகமாக உலாவலாம். குறைவான டேட்டாவைப் பயன்படுத்தலாம்.</translation> <translation id="3295602654194328831">தகவலை மறை</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> பதிவிறக்கங்கள் உள்ளன</translation> <translation id="3819562311292413223">உங்களுக்கான செய்திக் கட்டுரைகளைப் பதிவிறக்குக</translation> <translation id="3822502789641063741">தளச் சேமிப்பகத்தை அழிக்கவா?</translation> +<translation id="385051799172605136">முந்தைய பக்கம்</translation> <translation id="3859306556332390985">முன்செல்</translation> <translation id="3894427358181296146">கோப்புறையைச் சேர்</translation> <translation id="3895926599014793903">பெரிதாக்குவதைச் செயல்படுத்த வலியுறுத்து</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">உள்நுழைக</translation> <translation id="395206256282351086">தேடல் மற்றும் தளப் பரிந்துரைகள் முடக்கப்பட்டுள்ளன</translation> <translation id="3955193568934677022">பாதுகாக்கப்பட்ட உள்ளடக்கத்தை இயக்க, தளங்களை அனுமதி (பரிந்துரைக்கப்படுகிறது)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{பக்கம் தயாரானதும் Chrome அதை ஏற்றும்}other{பக்கங்கள் தயாரானதும் Chrome அவற்றை ஏற்றும்}}</translation> <translation id="3963007978381181125">கடவுச்சொற்றொடர் என்க்ரிப்ஷனில் Google Payயிலுள்ள கட்டண முறைகளும் முகவரிகளும் சேர்க்கப்படாது. என்கிரிப்ட் செய்யப்பட்ட தரவை உங்கள் கடவுச்சொற்றொடரை அறிந்தவரால் மட்டுமே படிக்க முடியும். Googleளுக்குக் கடவுச்சொற்றொடர் அனுப்பப்படுவதில்லை. Google அதைச் சேமிப்பதுமில்லை. கடவுச்சொற்றொடரை மறந்துவிட்டாலோ இந்த அமைப்பை மாற்ற விரும்பினாலோ, ஒத்திசைவை மீட்டமைக்க வேண்டும். <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /></translation> <translation id="3967822245660637423">பதிவிறக்கம் முடிந்தது</translation> <translation id="397583555483684758">ஒத்திசைவு நிறுத்தப்பட்டது</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">ஊடகம்</translation> <translation id="4278390842282768270">அனுமதிக்கப்பட்டது</translation> <translation id="429312253194641664">ஒரு தளம் மீடியாவை இயக்குகிறது</translation> +<translation id="4298388696830689168">இணைக்கப்பட்டுள்ள தளங்கள்</translation> <translation id="4307992518367153382">அடிப்படைகள்</translation> <translation id="4314815835985389558">ஒத்திசைவை நிர்வகிக்கும் பக்கம்</translation> <translation id="4351244548802238354">அறிவிப்பை மூடு</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">‘கண்காணிக்க வேண்டாம்’ என்பதை இயக்குவதால் உங்கள் உலாவல் டிராஃபிக்குடன் கோரிக்கை ஒன்று இணைக்கப்படும். கோரிக்கைக்கு இணையதளம் எவ்வாறு பதிலளிக்கிறது என்பதையும் கோரிக்கையானது எவ்வாறு புரிந்து கொள்ளப்படுகிறது என்பதையும் பொருத்து எந்தவொரு விளைவும் இருக்கும். எடுத்துக்காட்டாக, சில இணையதளங்கள் நீங்கள் பார்வையிட்ட பிற இணையதளங்களின் அடிப்படையில் இல்லாத விளம்பரங்களைக் காட்டுவதன் மூலம் இந்தக் கோரிக்கைக்குப் பதிலளிக்கலாம். பல இணையதளங்கள் உங்கள் உலாவல் தரவைத் தொடர்ந்து சேகரித்துப் பயன்படுத்தும் - எடுத்துக்காட்டாக பாதுகாப்பை மேம்படுத்த, உள்ளடக்கம், விளம்பரங்கள் மற்றும் பரிந்துரைகளை வழங்க, அறிக்கைப் புள்ளிவிவரங்களை உருவாக்க உங்கள் உலாவல் தரவைப் பயன்படுத்தலாம்.</translation> +<translation id="624789221780392884">புதுப்பிப்பு தயார்</translation> <translation id="6255999984061454636">உள்ளடக்கப் பரிந்துரைகள்</translation> <translation id="6277522088822131679">பக்கத்தை அச்சிடுவதில் சிக்கல் ஏற்பட்டது. மீண்டும் முயற்சிக்கவும்.</translation> <translation id="6295158916970320988">எல்லா தளங்களும்</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">வீடியோவைப் பதிவிறக்கு</translation> <translation id="6482749332252372425">போதுமான சேமிப்பிடம் இல்லாததால் <ph name="FILE_NAME" />ஐப் பதிவிறக்க முடியவில்லை.</translation> <translation id="6496823230996795692">முதல்முறையாக <ph name="APP_NAME" />ஐப் பயன்படுத்த, இணையத்துடன் இணைக்கவும்.</translation> +<translation id="6508722015517270189">Chromeஐ மீண்டும் தொடங்கவும்</translation> <translation id="6527303717912515753">பகிர்</translation> <translation id="6534565668554028783">பதிலளிக்க, Google நீண்ட நேரம் எடுத்துக்கொண்டது</translation> <translation id="6538442820324228105"><ph name="GBS" /> ஜி.பை. பதிவிறக்கப்பட்டுள்ளது</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Google Play சேவைகள் புதுப்பிப்பதை முடிப்பதற்காக, காத்திருக்கிறது</translation> <translation id="7189598951263744875">பகிர்...</translation> <translation id="7191430249889272776">தாவல் பின்புலத்தில் திறக்கப்பட்டது.</translation> -<translation id="7221869452894271364">இந்தப் பக்கத்தை மீண்டும் ஏற்று</translation> <translation id="723171743924126238">படங்களைத் தேர்ந்தெடுக்கவும்</translation> <translation id="7243308994586599757">திரையின் கீழ்ப்பகுதிக்கு அருகில் கிடைக்கும் விருப்பங்கள்</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> தேர்ந்தெடுக்கப்பட்டன</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">நேர வரம்பு</translation> <translation id="7851858861565204677">பிற சாதனங்கள்</translation> <translation id="7854964836418414587">‘இது போன்று மேலும்’ பரிந்துரைகள் மூடப்படும்</translation> +<translation id="7871791972254842204"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> டொமைனில் பின்னர் விதிமுறைகள் & நிபந்தனைகளைப் படித்து, ஏற்கிறேன்</translation> <translation id="7875915731392087153">மின்னஞ்சலை உருவாக்கவும்</translation> <translation id="7876243839304621966">அனைத்தையும் அகற்று</translation> <translation id="7882131421121961860">வரலாறு எதுவுமில்லை</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">மீண்டும் தொடங்கு</translation> <translation id="8209050860603202033">படத்தைத் திற</translation> <translation id="8220488350232498290">பதிவிறக்கங்கள் அளவு: <ph name="GIGABYTES" /> ஜி.பை.</translation> +<translation id="8232956427053453090">தரவை அழிக்காதே</translation> <translation id="8249310407154411074">முதலாவதாக நகர்த்து</translation> <translation id="8250920743982581267">ஆவணங்கள்</translation> <translation id="825412236959742607">இந்தப் பக்கம் அதிகளவு நினைவகத்தைப் பயன்படுத்துவதால், Chrome சில உள்ளடக்கங்களை அகற்றியது.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">கார்டு உரிமையாளரின் பெயர்</translation> <translation id="8604763363205185560">Chromeமின் அம்சங்களையும் பாதுகாப்பையும் மேம்படுத்த உதவுக</translation> <translation id="8609465669617005112">மேலே நகர்த்து</translation> +<translation id="8611192991944347781">தரவை நிர்வகி</translation> <translation id="8616006591992756292">உங்கள் Google கணக்கு, <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> என்ற இணைப்பில் உலாவல் வரலாறு தொடர்பான பிற தகவல்களைக் கொண்டிருக்கக்கூடும்.</translation> <translation id="8617240290563765734">பதிவிறக்கிய உள்ளடக்கத்தில் குறிப்பிட்ட பரிந்துரைக்கப்பட்ட URLஐத் திறக்கவா?</translation> <translation id="8636825310635137004">உங்கள் பிற சாதனங்களிலிருந்து தாவல்களைப் பெற, ஒத்திசைவை இயக்கவும்.</translation> <translation id="8641930654639604085">பெரியவர்களுக்கான தளங்களைத் தடு</translation> +<translation id="8655129584991699539">Chrome அமைப்புகளில் தரவை அழிக்கலாம்</translation> <translation id="8662811608048051533">பெரும்பாலான தளங்களிலிருந்து உங்களை வெளியேற்றும்.</translation> <translation id="8664979001105139458">கோப்புப் பெயர் ஏற்கனவே உள்ளது</translation> <translation id="8676374126336081632">உள்ளீட்டை அழி</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">உங்கள் தொடர்புகளில் தேடுக</translation> <translation id="869891660844655955">காலாவதியாகும் தேதி</translation> <translation id="8719023831149562936">நடப்பு தாவலை பீம் செய்ய முடியாது</translation> +<translation id="8723954843026426558">விதிமுறைகள் & நிபந்தனைகள், தனியுரிமைக் கொள்கை, <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> டொமைனைத் திரும்பப்பெறும் உரிமை ஆகியவற்றை ஏற்கிறேன்</translation> <translation id="8725066075913043281">மீண்டும் முயற்சிக்கவும்</translation> <translation id="8728487861892616501">இந்தப் பயன்பாட்டைப் பயன்படுத்துவதன் மூலம், Chrome இன் <ph name="BEGIN_LINK1" />சேவை விதிமுறைகள்<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />தனியுரிமை அறிக்கை<ph name="END_LINK2" />, <ph name="BEGIN_LINK3" />Family Link மூலம் நிர்வகிக்கும் Google கணக்குகளுக்கான தனியுரிமை அறிக்கை<ph name="END_LINK3" /> ஆகியவற்றை ஏற்கிறீர்கள்.</translation> <translation id="8730621377337864115">முடிந்தது</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_te.xtb b/chrome/android/java/strings/translations/android_chrome_strings_te.xtb index 6002441..ab74f39 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_te.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_te.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="te"> <translation id="1006017844123154345">ఆన్లైన్లో తెరువు</translation> +<translation id="1023450834687746199">మీరు <ph name="APP_NAME" /> డేటాను క్లియర్ చేసారు.</translation> <translation id="1036727731225946849"><ph name="WEBAPK_NAME" />ని జోడిస్తోంది...</translation> <translation id="1041308826830691739">వెబ్సైట్ల నుండి</translation> <translation id="1049743911850919806">అజ్ఞాత</translation> @@ -55,10 +56,10 @@ <translation id="1373696734384179344">ఎంచుకున్న కంటెంట్ను డౌన్లోడ్ చేయడానికి తగినంత మెమరీ లేదు.</translation> <translation id="1376578503827013741">గణిస్తోంది...</translation> <translation id="138361230106469022">హాయ్, <ph name="FULL_NAME" /></translation> -<translation id="1383876407941801731">శోధించు</translation> +<translation id="1383876407941801731">వెతుకు</translation> <translation id="1384959399684842514">డౌన్లోడ్ పాజ్ చేయబడింది</translation> <translation id="1389974829397082527">ఇక్కడ బుక్మార్క్లు ఏవీ లేవు</translation> -<translation id="1397811292916898096"><ph name="PRODUCT_NAME" />తో శోధించండి</translation> +<translation id="1397811292916898096"><ph name="PRODUCT_NAME" />తో వెతకండి</translation> <translation id="1404122904123200417"><ph name="WEBSITE_URL" />లో పొందుపరచబడింది</translation> <translation id="1406000523432664303">“ట్రాక్ చేయవద్దు”</translation> <translation id="1407135791313364759">అన్నీ తెరువు</translation> @@ -76,7 +77,7 @@ <translation id="1506061864768559482">శోధన ఇంజిన్</translation> <translation id="1513352483775369820">బుక్మార్క్లు మరియు వెబ్ చరిత్ర</translation> <translation id="1513858653616922153">పాస్వర్డ్ను తొలగించు</translation> -<translation id="1516229014686355813">వెతకడానికి నొక్కండి ఫీచర్, ఎంచుకున్న పదాన్ని మరియు ప్రస్తుత పేజీని సంబంధిత సందర్భం లాగా Google శోధనకు పంపుతుంది. మీరు <ph name="BEGIN_LINK" />సెట్టింగ్లు<ph name="END_LINK" />లో దీన్ని ఆఫ్ చేయవచ్చు.</translation> +<translation id="1516229014686355813">'వెతకడానికి నొక్కండి' ఫీచర్, ఎంచుకున్న పదాన్ని మరియు ప్రస్తుత పేజీని సంబంధిత సందర్భం లాగా Google శోధనకు పంపుతుంది. మీరు <ph name="BEGIN_LINK" />సెట్టింగ్లు<ph name="END_LINK" />లో దీనిని ఆఫ్ చేయవచ్చు.</translation> <translation id="1539064842193522527">లింక్ Chromeలో తెరవబడింది</translation> <translation id="1549000191223877751">వేరే విండోకి తరలించు</translation> <translation id="1553358976309200471">Chromeని నవీకరించు</translation> @@ -142,9 +143,10 @@ <translation id="2017836877785168846">చిరునామా బార్లో చరిత్రను మరియు స్వీయ పూరణలను క్లియర్ చేస్తుంది.</translation> <translation id="2021896219286479412">పూర్తి స్క్రీన్ సైట్ నియంత్రణలు</translation> <translation id="2038563949887743358">డెస్క్టాప్ సైట్ అభ్యర్థనను ఆన్ చేయండి</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> డేటాను Chromeలో కూడా కలిగి ఉంటుంది</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB ఇతర యాప్లు</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> -<translation id="2063713494490388661">శోధించడానికి నొక్కండి</translation> +<translation id="2063713494490388661">వెతకడానికి నొక్కండి</translation> <translation id="2079545284768500474">చర్య రద్దు</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" />లో <ph name="RESULT_NUMBER" />వ ఫలితం</translation> <translation id="208586643495776849">దయచేసి మళ్లీ ప్రయత్నించండి</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">కార్డ్ను సవరించండి</translation> <translation id="2154710561487035718">URLను కాపీ చేయి</translation> <translation id="2156074688469523661">మిగిలిన సైట్లు (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">మీ ఇంటర్నెట్ కనెక్షన్ను తనిఖీ చేయండి</translation> <translation id="2197557662829090533">మీరు సందర్శించిన వెబ్సైట్ల సమాచారాన్ని చూపడానికి డిజిటల్ సంక్షేమానికి అనుమతి ఇవ్వండి</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, వెబ్ యాప్. <ph name="APP_URL" /></translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" />గా కొనసాగించు</translation> @@ -180,7 +181,7 @@ <translation id="2321086116217818302">పాస్వర్డ్లను సిద్ధం చేస్తోంది…</translation> <translation id="2321958826496381788">మీరు దీన్ని సౌకర్యవంతంగా చదవగలిగే వరకు స్లైడర్ను లాగండి. పేరాపై రెండుసార్లు నొక్కిన తర్వాత వచనం కనీసం ఇంత పెద్దదిగా కనిపించాలి.</translation> <translation id="2323763861024343754">సైట్ నిల్వ</translation> -<translation id="2325181368089033281"><ph name="BEGIN_LINK1" />సెట్టింగ్లను<ph name="END_LINK1" /> మీరు లేదా మీ తల్లిదండ్రులు ఎప్పుడైనా అనుకూలీకరించవచ్చు. Google మీరు సందర్శించే సైట్ల్లోని కంటెంట్, బ్రౌజర్ పరస్పర చర్యలు మరియు కార్యకలాపం ఉపయోగించడం ద్వారా Chromeని మరియు అనువాదం, శోధన మరియు ప్రకటనలు వంటి Google సేవలను వ్యక్తిగతీకరించవచ్చు.</translation> +<translation id="2325181368089033281"><ph name="BEGIN_LINK1" />సెట్టింగ్లను<ph name="END_LINK1" /> మీరు లేదా మీ తల్లిదండ్రులు ఎప్పుడైనా అనుకూలీకరించవచ్చు. మీరు సందర్శించే సైట్లలోని కంటెంట్, బ్రౌజర్ పరస్పర చర్యలు మరియు కార్యకలాపాలను ఉపయోగించి, Chrome, అనువాదం, శోధన మరియు ప్రకటనలు వంటి Google సేవలను Google వ్యక్తిగతీకరించవచ్చు.</translation> <translation id="2328985652426384049">సైన్ ఇన్ చేయడం సాధ్యపడదు</translation> <translation id="2342981853652716282">మీ పరికరాలన్నింటిలో మీ బుక్మార్క్లు, పాస్వర్డ్లు మరియు మరిన్నింటిని పొందడం కోసం Chromeకు సైన్ ఇన్ చేయండి.</translation> <translation id="2349710944427398404">ఖాతాలు, బుక్మార్క్లు మరియు సేవ్ చేసిన సెట్టింగ్లతో సహా Chrome ద్వారా ఉపయోగించబడిన మొత్తం డేటా</translation> @@ -235,13 +236,14 @@ <translation id="2709516037105925701">స్వయంపూర్తి</translation> <translation id="271033894570825754">కొత్తది</translation> <translation id="2728754400939377704">సైట్ ద్వారా క్రమీకరించు</translation> -<translation id="2744248271121720757">తక్షణమే శోధించడానికి లేదా సంబంధిత చర్యలను చూడటానికి ఒక పదాన్ని నొక్కండి</translation> +<translation id="2744248271121720757">తక్షణమే వెతకడానికి లేదా సంబంధిత చర్యలను చూడటానికి ఒక పదాన్ని నొక్కండి</translation> <translation id="2760323196215778921">అలాగే మీరు Chrome కోసం ఈ అనుమతిని ఆన్ చేయాలి. వివరాల కోసం <ph name="BEGIN_LINK" />Android సెట్టింగ్ల<ph name="END_LINK" />ను చూడండి.</translation> <translation id="2762000892062317888">ఇప్పుడే</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> సెకన్లు మిగిలి ఉంది</translation> <translation id="2779651927720337254">విఫలమైంది</translation> <translation id="2781151931089541271">1 సెకను మిగిలి ఉంది</translation> <translation id="2784212955220061919">లైట్ మోడ్లో, Chrome పేజీలను వేగంగా లోడ్ చేస్తుంది, అలాగే 60 శాతం తక్కువ డేటాను ఉపయోగిస్తుంది. Google క్లౌడ్ సాంకేతికత మీరు సందర్శించే పేజీలను ఆప్టిమైజ్ చేస్తుంది.</translation> +<translation id="2785336755839207516">మీరు <ph name="APP_NAME" />ని అన్ఇన్స్టాల్ చేసారు.</translation> <translation id="2803478378562657435">సేవ్ చేసిన పాస్వర్డ్లు మరియు పాస్వర్డ్ ఎంపికలను చూపిస్తోంది</translation> <translation id="2810645512293415242">డేటాను సేవ్ చేయడానికి మరియు వేగంగా లోడ్ చేయడానికి సరళీకృత పేజీ.</translation> <translation id="281504910091592009">మీ <ph name="BEGIN_LINK" />Google ఖాతా<ph name="END_LINK" />లో సేవ్ చేసిన పాస్వర్డ్లను చూడండి మరియు నిర్వహించండి</translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">సమాచారాన్ని చూపు</translation> <translation id="3123473560110926937">కొన్ని సైట్లలో బ్లాక్ చేయబడింది</translation> <translation id="3137521801621304719">అజ్ఞాత మోడ్ నుండి నిష్క్రమించండి</translation> +<translation id="3143515551205905069">సింక్ను రద్దు చేయి</translation> <translation id="3148434565183091099">మీ అన్ని పరికరాల్లో మీ బుక్మార్క్లను పొందడానికి, Chromeకి సైన్ ఇన్ చేయండి.</translation> <translation id="3157842584138209013">'మరిన్ని ఎంపికలు' బటన్ నుండి మీరు ఎంత డేటాను సేవ్ చేసారో చూడండి</translation> <translation id="3166827708714933426">ట్యాబ్ మరియు విండో షార్ట్కట్లు</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">చిత్రాన్ని లోడ్ చేయి</translation> <translation id="3269956123044984603">మీ ఇతర పరికరాల నుండి మీ ట్యాబ్లను పొందడానికి, Android ఖాతా సెట్టింగ్ల్లో "డేటా ఆటో-సింక్" ఆన్ చేయండి.</translation> <translation id="3282568296779691940">Chromeకు సైన్ ఇన్ చేయండి</translation> +<translation id="3288003805934695103">పేజీని మళ్లీ లోడ్ చేయడం</translation> <translation id="32895400574683172">నోటిఫికేషన్లు అనుమతించబడతాయి</translation> <translation id="3295530008794733555">మరింత వేగంగా బ్రౌజ్ చేయండి. తక్కువ డేటాని ఉపయోగించండి.</translation> <translation id="3295602654194328831">సమాచారాన్ని దాచు</translation> @@ -330,7 +334,7 @@ <translation id="3522247891732774234">అప్డేట్ అందుబాటులో ఉంది. మరిన్ని ఎంపికలు</translation> <translation id="3527085408025491307">ఫోల్డర్</translation> <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB అందుబాటులో ఉంది</translation> -<translation id="3549657413697417275">మీ చరిత్రను శోధించండి</translation> +<translation id="3549657413697417275">మీ చరిత్రను వెతకండి</translation> <translation id="3552151358455404883"><ph name="BEGIN_LINK1" />సెట్టింగ్లు<ph name="END_LINK1" />లో Chrome సమకాలీకరణ మరియు వ్యక్తిగతీకరణను నిర్వహించండి</translation> <translation id="3557336313807607643">పరిచయాలకు జోడించు</translation> <translation id="3566923219790363270">Chrome ఇంకా VR కోసం సన్నద్ధమవుతోంది. Chromeని తర్వాత పునఃప్రారంభించండి.</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> డౌన్లోడ్లు తొలగించబడ్డాయి</translation> <translation id="3819562311292413223">మీ కోసం కథనాలను డౌన్లోడ్ చేయండి</translation> <translation id="3822502789641063741">సైట్ నిల్వను తీసివేయాలా?</translation> +<translation id="385051799172605136">వెనుకకు</translation> <translation id="3859306556332390985">ముందుకు దాటవేయి</translation> <translation id="3894427358181296146">ఫోల్డర్ను జోడించండి</translation> <translation id="3895926599014793903">జూమ్ చేయడాన్ని నిర్బంధంగా ప్రారంభించు</translation> @@ -377,14 +382,15 @@ <translation id="3927692899758076493">Sans Serif</translation> <translation id="3928666092801078803">నా డేటాను కలపండి</translation> <translation id="3934752326445182741">చిత్ర ప్రివ్యూ చూపు <ph name="BEGIN_NEW" />కొత్తది<ph name="END_NEW" /></translation> -<translation id="393697183122708255">ప్రారంభిత వాయిస్ శోధన ఏదీ అందుబా. లేదు</translation> +<translation id="393697183122708255">ప్రారంభించిన వాయిస్ శోధన అందుబాటులో లేదు</translation> <translation id="3950820424414687140">సైన్ ఇన్</translation> <translation id="395206256282351086">శోధన మరియు సైట్ సూచనలు నిలిపివేయబడ్డాయి</translation> <translation id="3955193568934677022">రక్షిత కంటెంట్ను ప్లే చేయడానికి సైట్లను అనుమతించు (సిఫార్సు చేయబడింది)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{కనెక్ట్ అయినప్పుడు, Chrome మీ పేజీని లోడ్ చేస్తుంది}other{కనెక్ట్ అయినప్పుడు, Chrome మీ పేజీలను లోడ్ చేస్తుంది}}</translation> <translation id="3963007978381181125">Google Payకి సంబంధించిన చెల్లింపు పద్ధతులు మరియు చిరునామాలు రహస్య పదబంధం ఎన్క్రిప్షన్లో ఉండవు. మీ రహస్య పదబంధాన్ని కలిగి ఉన్నవారు మాత్రమే మీ ఎన్క్రిప్ట్ చేసిన డేటాను చదవగలరు. రహస్య పదబంధం Google ద్వారా ఎవరికీ పంపబడదు లేదా నిల్వ చేయబడదు. మీరు మీ రహస్య పదబంధాన్ని మర్చిపోతే లేదా ఈ సెట్టింగ్ను మార్చాలనుకుంటే, సమకాలీకరణను రీసెట్ చేయాల్సి ఉంటుంది. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation> <translation id="3967822245660637423">డౌన్లోడ్ పూర్తయింది</translation> <translation id="397583555483684758">సమకాలీకరణ పని చేయడం ఆగిపోయింది</translation> -<translation id="3976396876660209797">ఈ షార్ట్కట్ని తీసివేసి, పునఃసృష్టించండి</translation> +<translation id="3976396876660209797">ఈ షార్ట్కట్ను తీసివేసి, పునఃసృష్టించండి</translation> <translation id="3985215325736559418">మీరు <ph name="FILE_NAME" />ని మళ్లీ డౌన్లోడ్ చేయాలనుకుంటున్నారా?</translation> <translation id="3987993985790029246">లింక్ను కాపీ చేయి</translation> <translation id="3988213473815854515">స్థానం అనుమతించబడింది</translation> @@ -396,7 +402,7 @@ <translation id="4034817413553209278">{HOURS,plural, =1{# గం}other{# గం}}</translation> <translation id="4042870126885713738">వెబ్ చిరునామా సంశయాత్మకంగా ఉన్నప్పుడు లేదా కనెక్షన్ సాధ్యం కానప్పుడు సూచనలను చూపుతుంది</translation> <translation id="4046123991198612571">తరువాత ట్రాక్</translation> -<translation id="4048707525896921369">పేజీ నుండి నిష్క్రమించకుండానే వెబ్సైట్లలోని అంశాల గురించి తెలుసుకోండి. వెతకడానికి నొక్కండి ఫీచర్ ఒక పదాన్ని మరియు దాని చుట్టూ ఉన్న సంబంధిత సందర్భాన్ని Google శోధనకు పంపుతుంది, ప్రతిస్పందనగా దాని నుండి నిర్వచనాలు, చిత్రాలు, శోధన ఫలితాలు మరియు ఇతర వివరాలు అందించబడతాయి. +<translation id="4048707525896921369">పేజీ నుండి నిష్క్రమించకుండానే వెబ్సైట్లలోని అంశాల గురించి తెలుసుకోండి. 'వెతకడానికి నొక్కండి' అనే ఫీచర్, ఒక పదాన్ని మరియు దాని చుట్టూ ఉన్న సంబంధిత సందర్భాన్ని Google శోధనకు పంపుతుంది, ప్రతిస్పందనగా దాని నుండి నిర్వచనాలు, చిత్రాలు, శోధన ఫలితాలు మరియు ఇతర వివరాలు అందించబడతాయి. మీ శోధన పదాన్ని సర్దుబాటు చేయడం కోసం ఎంచుకోవడానికి ఎక్కువసేపు నొక్కి ఉంచండి. మీ శోధనను మెరుగుపరచడానికి, ప్యానెల్ను పూర్తిగా పైకి స్లయిడ్ చేసి, శోధన పెట్టెను నొక్కండి.</translation> <translation id="4056223980640387499">సెపియా</translation> @@ -415,7 +421,7 @@ <translation id="4170011742729630528">సేవ అందుబాటులో లేదు; తర్వాత మళ్లీ ప్రయత్నించండి.</translation> <translation id="4179980317383591987"><ph name="AMOUNT" /> వినియోగించబడింది</translation> <translation id="4181841719683918333">భాషలు</translation> -<translation id="4195643157523330669">కొత్త టాబ్లో తెరువు</translation> +<translation id="4195643157523330669">కొత్త ట్యాబ్లో తెరువు</translation> <translation id="4198423547019359126">డౌన్లోడ్ స్థానాలు అందుబాటులో లేవు</translation> <translation id="4209895695669353772">Google ద్వారా మీ అభిరుచికి తగిన కంటెంట్ను సిఫార్సుల రూపంలో పొందాలనుకుంటే, సమకాలీకరణ ఎంపికను ఆన్ చేయాలి</translation> <translation id="4225719675976901337">కంటెంట్ కనుగొనబడలేదు</translation> @@ -431,11 +437,12 @@ <translation id="4275663329226226506">మీడియా</translation> <translation id="4278390842282768270">అనుమతించబడింది</translation> <translation id="429312253194641664">ఒక సైట్లో మీడియా ప్లే చేయబడుతోంది</translation> +<translation id="4298388696830689168">లింక్ చేసిన సైట్లు</translation> <translation id="4307992518367153382">ప్రాథమికాలు</translation> <translation id="4314815835985389558">సింక్ను నిర్వహించండి</translation> <translation id="4351244548802238354">డైలాగ్ను మూసివేయి</translation> <translation id="4378154925671717803">ఫోన్</translation> -<translation id="4384468725000734951">శోధన కోసం Sogouని ఉపయోగిస్తుంది</translation> +<translation id="4384468725000734951">శోధన కోసం Sogouను ఉపయోగిస్తుంది</translation> <translation id="4398088515904522762">ఈ ఫీచర్ని ఉపయోగించడానికి, <ph name="BEGIN_LINK" />కార్యకలాపం మరియు పరస్పర చర్యలు<ph name="END_LINK" />ని ఆన్ చేయండి.</translation> <translation id="4404568932422911380">బుక్మార్క్లు లేవు</translation> <translation id="4409723563706114196">పేజీ సూచనలను ఉపయోగించండి</translation> @@ -456,7 +463,7 @@ <translation id="4487967297491345095">Chrome యాప్ డేటా మొత్తం శాశ్వతంగా తొలగించబడుతుంది. డేటాలో అన్ని ఫైల్లు, సెట్టింగ్లు, ఖాతాలు, డేటాబేస్లు మొదలైనవి ఉంటాయి.</translation> <translation id="4493497663118223949">లైట్ మోడ్ ఆన్ చేయబడింది</translation> <translation id="4513387527876475750">{DAYS,plural, =1{# రోజు క్రితం}other{# రోజుల క్రితం}}</translation> -<translation id="451872707440238414">మీ బుక్మార్క్లను శోధించండి</translation> +<translation id="451872707440238414">మీ బుక్మార్క్లను వెతకండి</translation> <translation id="4521489764227272523">ఎంచుకోబడిన డేటా Chrome నుండి, సింక్ చేసిన మీ పరికరాల నుండి తీసివేయబడింది. మీ Google ఖాతా <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />లో ఇతర Google సేవలకు సంబంధించిన శోధనలు, కార్యకలాపం వంటి ఇతర రకాల బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు.</translation> @@ -606,7 +613,7 @@ <translation id="5561549206367097665">నెట్వర్క్ కోసం వేచి ఉంది…</translation> <translation id="557283862590186398">ఈ సైట్ కోసం మీ మైక్రోఫోన్ను యాక్సెస్ చేయడానికి Chromeకు అనుమతి అవసరం.</translation> <translation id="55737423895878184">స్థానం మరియు నోటిఫికేషన్లు అనుమతించబడతాయి</translation> -<translation id="5578795271662203820">ఈ చిత్రం కోసం <ph name="SEARCH_ENGINE" />లో శోధించండి</translation> +<translation id="5578795271662203820">ఈ చిత్రం కోసం <ph name="SEARCH_ENGINE" />లో వెతకండి</translation> <translation id="5595485650161345191">చిరునామాను సవరించు</translation> <translation id="5596627076506792578">మరిన్ని ఎంపికలు</translation> <translation id="5620299005957670886">మీ సెన్సార్లను యాక్సెస్ చేయడానికి సైట్లను అనుమతిస్తుంది (సిఫార్సు చేస్తున్నాము)</translation> @@ -615,7 +622,7 @@ <translation id="5639724618331995626">అన్ని సైట్లను అనుమతించండి</translation> <translation id="5648166631817621825">గత 7 రోజులు</translation> <translation id="5649053991847567735">స్వయంచాలక డౌన్లోడ్లు</translation> -<translation id="5655963694829536461">మీ డౌన్లోడ్లను శోధించండి</translation> +<translation id="5655963694829536461">మీ డౌన్లోడ్లను వెతకండి</translation> <translation id="5659593005791499971">ఇమెయిల్</translation> <translation id="5665379678064389456"><ph name="APP_NAME" />లో ఈవెంట్ను సృష్టించండి</translation> <translation id="5668404140385795438">దగ్గరకు జూమ్ చేయడాన్ని నిరోధించడానికి ప్రయత్నించే వెబ్సైట్ అభ్యర్థనను పట్టించుకోదు</translation> @@ -625,7 +632,7 @@ <translation id="5686790454216892815">ఫైల్ పేరు చాలా పొడవుగా ఉంది</translation> <translation id="5689516760719285838">స్థానం</translation> <translation id="569536719314091526">మరిన్ని ఎంపికలు బటన్ని ఉపయోగించి ఈ పేజీని ఏ భాషలోకైనా అనువదించుకోవచ్చు</translation> -<translation id="5719837394786370183">మీరు అజ్ఞాత ట్యాబ్ల్లో వీక్షించే పేజీలు మీ అన్ని అజ్ఞాత ట్యాబ్లను మూసివేసిన తర్వాత మీ బ్రౌజర్ చరిత్ర, కుక్కీ స్టోర్ లేదా శోధన చరిత్రలో ఉంచబడవు. మీరు డౌన్లోడ్ చేసే ఫైల్లు లేదా సృష్టించే బుక్మార్క్లు ఏవైనా భద్రపరచబడతాయి. +<translation id="5719837394786370183">మీరు అజ్ఞాత ట్యాబ్లలో వీక్షించే పేజీలు మీ అన్ని అజ్ఞాత ట్యాబ్లను మూసివేసిన తర్వాత మీ బ్రౌజర్ చరిత్ర, కుక్కీ స్టోర్ లేదా శోధన చరిత్రలో ఉంచబడవు. మీరు డౌన్లోడ్ చేసే ఫైల్లు లేదా సృష్టించే బుక్మార్క్లు ఏవైనా భద్రపరచబడతాయి. అయితే, మీరు అదృశ్యంగా ఉండరు. అజ్ఞాతంలోకి వెళ్లడం వలన మీ బ్రౌజింగ్ మీ యజమాని, మీ ఇంటర్నెట్ సేవా ప్రదాత లేదా మీరు సందర్శించే వెబ్సైట్లకు కనిపించకుండా దాచబడదు.</translation> <translation id="572328651809341494">ఇటీవలి ట్యాబ్లు</translation> @@ -659,7 +666,7 @@ <translation id="5919204609460789179">సింక్ను ప్రారంభించడానికి <ph name="PRODUCT_NAME" />ని అప్డేట్ చేయండి</translation> <translation id="5937580074298050696"><ph name="AMOUNT" /> సేవ్ చేయబడింది</translation> <translation id="5939518447894949180">రీసెట్ చేయి</translation> -<translation id="5942872142862698679">శోధన కోసం Googleని ఉపయోగిస్తుంది</translation> +<translation id="5942872142862698679">శోధన కోసం Googleను ఉపయోగిస్తోంది</translation> <translation id="5952764234151283551">మీరు చేరుకోవాలని ప్రయత్నిస్తున్న పేజీ URLని Googleకి పంపుతుంది</translation> <translation id="5956665950594638604">Chrome సహాయ కేంద్రాన్ని కొత్త ట్యాబ్లో తెరవండి</translation> <translation id="5958275228015807058">డౌన్లోడ్లలో మీ ఫైల్లు మరియు పేజీలను కనుగొనండి</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">“ట్రాక్ చేయవద్దు”ను ప్రారంభించడం వలన మీ బ్రౌజింగ్ ట్రాఫిక్తో పాటు ఒక అభ్యర్థన చేర్చబడుతుంది. ఈ అభ్యర్థనకు వెబ్సైట్ ప్రతిస్పందించిందా లేదా మరియు అభ్యర్థన ఎలా పరిగణించబడింది అనేవాటిపై ఈ ఫీచర్ ప్రభావం ఆధారపడి ఉంటుంది. ఉదాహరణకు, కొన్ని వెబ్సైట్లు ఈ అభ్యర్థనకు ప్రతిస్పందనగా మీరు సందర్శించిన ఇతర వెబ్సైట్ల ఆధారితం కాని ప్రకటనలను మీకు చూపుతాయి. అనేక వెబ్సైట్లు భద్రతను మెరుగుపరచడం, కంటెంట్, ప్రకటనలు మరియు సిఫార్సులను అందించడం మరియు నివేదన గణాంకాలను రూపొందించడం మొదలైనవాటి కోసం ఇప్పటికీ మీ బ్రౌజింగ్ డేటాను సేకరించి, ఉపయోగిస్తాయి.</translation> +<translation id="624789221780392884">అప్డేట్ సిద్ధంగా ఉంది</translation> <translation id="6255999984061454636">కంటెంట్ సూచనలు</translation> <translation id="6277522088822131679">పేజీని ముద్రిస్తున్నప్పుడు సమస్య ఏర్పడింది. దయచేసి మళ్లీ ప్రయత్నించండి.</translation> <translation id="6295158916970320988">అన్ని సైట్లు</translation> @@ -725,7 +733,7 @@ <translation id="6406506848690869874">Sync</translation> <translation id="641643625718530986">ముద్రించు…</translation> <translation id="6416782512398055893"><ph name="MBS" /> MB డౌన్లోడ్ చేయబడింది</translation> -<translation id="6433501201775827830">మీ శోధన ఇంజిన్ని ఎంచుకోండి</translation> +<translation id="6433501201775827830">మీ శోధన ఇంజిన్ను ఎంచుకోండి</translation> <translation id="6437478888915024427">పేజీ సమాచారం</translation> <translation id="6444421004082850253">{FILE_COUNT,plural, =1{# ఫోటో}other{# ఫోటోలు}}</translation> <translation id="6447842834002726250">కుక్కీలు</translation> @@ -734,12 +742,13 @@ <translation id="6475951671322991020">వీడియోను డౌన్లోడ్ చేయి</translation> <translation id="6482749332252372425">నిల్వ స్థలం లేనందున <ph name="FILE_NAME" /> డౌన్లోడ్ విఫలమైంది.</translation> <translation id="6496823230996795692">మొదటి సారి <ph name="APP_NAME" />ని ఉపయోగించడానికి, దయచేసి ఇంటర్నెట్కు కనెక్ట్ చేయండి.</translation> +<translation id="6508722015517270189">Chromeను పునఃప్రారంభించండి</translation> <translation id="6527303717912515753">భాగస్వామ్యం చేయి</translation> <translation id="6534565668554028783">Google ప్రతిస్పందించడానికి చాలా ఎక్కువ సమయం తీసుకుంది</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB డౌన్లోడ్ చేయబడింది</translation> <translation id="654446541061731451">Beam చేయడానికి ట్యాబ్ను ఎంచుకోండి</translation> <translation id="6545017243486555795">మొత్తం డేటాను తీసివేయి</translation> -<translation id="6560414384669816528">Sogouతో శోధించండి</translation> +<translation id="6560414384669816528">Sogouతో వెతకండి</translation> <translation id="6566259936974865419">Chrome మీకు <ph name="GIGABYTES" /> GB ఆదా చేసింది</translation> <translation id="6573096386450695060">ఎల్లప్పుడూ అనుమతించు</translation> <translation id="6573431926118603307">మీరు మీ ఇతర పరికరాల్లోని Chromeలో తెరిచిన ట్యాబ్లు ఇక్కడ చూపబడతాయి.</translation> @@ -820,7 +829,7 @@ <translation id="7077143737582773186">SD కార్డ్</translation> <translation id="7087918508125750058"><ph name="ITEM_COUNT" /> ఎంచుకోబడ్డాయి. ఎంపికలు స్క్రీన్ పైభాగానికి సమీపంలో అందుబాటులో ఉన్నాయి</translation> <translation id="7121362699166175603">చిరునామా బార్లో చరిత్ర, స్వీయపూరింపులను తొలగిస్తుంది. మీ Google ఖాతా <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />లో ఇతర రూపాల్లో ఉన్న బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు.</translation> -<translation id="7128222689758636196">ప్రస్తుత శోధన ఇంజిన్కి అనుమతించండి</translation> +<translation id="7128222689758636196">ప్రస్తుత శోధన ఇంజిన్కు అనుమతించండి</translation> <translation id="7138678301420049075">ఇతర</translation> <translation id="7139148793369023665">ఇలాంటివి మరిన్ని ఎంపిక మూసివేయబడింది</translation> <translation id="7141896414559753902">మళ్లింపులతో పాటు పాప్-అప్లను చూపకుండా సైట్లను బ్లాక్ చేస్తుంది (సిఫార్సు చేయడమైనది)</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Google Play సేవల నవీకరణ పూర్తి కావడానికి వేచి ఉంది</translation> <translation id="7189598951263744875">భాగస్వామ్యం చేయి...</translation> <translation id="7191430249889272776">బ్యాక్గ్రౌండ్లో ట్యాబ్ తెరవబడింది.</translation> -<translation id="7221869452894271364">ఈ పేజీని మళ్లీ లోడ్ చేయి</translation> <translation id="723171743924126238">చిత్రాలను ఎంచుకోండి</translation> <translation id="7243308994586599757">స్క్రీన్ దిగువభాగం సమీపంలో ఎంపికలు అందుబాటులో ఉంటాయి</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> ఎంచుకోబడ్డాయి</translation> @@ -881,7 +889,7 @@ <translation id="756809126120519699">Chrome డేటా తీసివేయబడింది</translation> <translation id="757524316907819857">రక్షిత కంటెంట్ను ప్లే చేయకుండా సైట్లను బ్లాక్ చేస్తుంది</translation> <translation id="757855969265046257">{FILES,plural, =1{<ph name="FILES_DOWNLOADED_ONE" /> ఫైల్ డౌన్లోడ్ చేయబడింది}other{<ph name="FILES_DOWNLOADED_MANY" /> ఫైల్లు డౌన్లోడ్ చేయబడ్డాయి}}</translation> -<translation id="7589445247086920869">ప్రస్తుత శోధన ఇంజిన్కి బ్లాక్ చేయండి</translation> +<translation id="7589445247086920869">ప్రస్తుత శోధన ఇంజిన్కు బ్లాక్ చేయండి</translation> <translation id="7593557518625677601">Chrome సమకాలీకరణను ప్రారంభిండానికి Android సెట్టింగ్లు తెరిచి, Android సిస్టమ్ సమకాలీకరణను మళ్లీ ప్రారంభించండి</translation> <translation id="7596558890252710462">ఆపరేటింగ్ సిస్టమ్</translation> <translation id="7605594153474022051">సమకాలీకరణ పని చేయడం లేదు</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">సమయ పరిధి</translation> <translation id="7851858861565204677">ఇతర పరికరాలు</translation> <translation id="7854964836418414587">ఇలాంటివి మరిన్ని ఎంపికను మూసివేస్తుంది</translation> +<translation id="7871791972254842204"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />లోని నిబంధనలు మరియు షరతులను తర్వాత చదివి, అంగీకరించండి</translation> <translation id="7875915731392087153">ఇమెయిల్ను సృష్టించండి</translation> <translation id="7876243839304621966">అన్నీ తొలగించు</translation> <translation id="7882131421121961860">చరిత్ర ఏదీ కనుగొనబడలేదు</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">మళ్ళీ ప్రారంభించు</translation> <translation id="8209050860603202033">చిత్రాన్ని తెరువు</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB డౌన్లోడ్ అయింది</translation> +<translation id="8232956427053453090">డేటాను అలాగే ఉంచు</translation> <translation id="8249310407154411074">ఎగువకు తరలించు</translation> <translation id="8250920743982581267">పత్రాలు</translation> <translation id="825412236959742607">ఈ పేజీ చాలా మెమరీని ఉపయోగిస్తుంది, కాబట్టి Chrome కొంత కంటెంట్ను తీసివేసింది.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">కార్డుదారుని పేరు</translation> <translation id="8604763363205185560">Chrome మరియు దాని భద్రతను మెరుగుపరచడంలో సహాయపడండి</translation> <translation id="8609465669617005112">పైకి తరలించు</translation> +<translation id="8611192991944347781">డేటాను నిర్వహించు</translation> <translation id="8616006591992756292">మీ Google ఖాతా <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />లో ఇతర రూపాల్లో ఉన్న బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు.</translation> <translation id="8617240290563765734">డౌన్లోడ్ చేసిన కంటెంట్లో పేర్కొన్న సూచిత URLని తెరవాలా?</translation> <translation id="8636825310635137004">మీ ఇతర పరికరాల నుండి మీ ట్యాబ్లను పొందడానికి, సమకాలీకరణను ఆన్ చేయండి</translation> <translation id="8641930654639604085">వయోజన కంటెంట్ గల సైట్లను బ్లాక్ చేయడానికి ప్రయత్నించండి</translation> +<translation id="8655129584991699539">మీరు Chrome సెట్టింగ్లలో డేటాను తీసివేయవచ్చు</translation> <translation id="8662811608048051533">చాలా సైట్ల నుండి మిమ్మల్ని సైన్ అవుట్ చేస్తుంది.</translation> <translation id="8664979001105139458">ఫైల్ పేరు ఇప్పటికే ఉంది</translation> <translation id="8676374126336081632">ఇన్పుట్ను తీసివేయండి</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">మీ పరిచయాలను వెతకండి</translation> <translation id="869891660844655955">గడువు తేదీ</translation> <translation id="8719023831149562936">ప్రస్తుత ట్యాబ్ను బీమ్ చేయడం సాధ్యపడదు</translation> +<translation id="8723954843026426558"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> నిబంధనలు & షరతులు, గోప్యతా విధానం, ఉపసంహరణ హక్కుకు నేను అంగీకరిస్తున్నాను</translation> <translation id="8725066075913043281">మళ్ళీ ప్రయత్నించండి</translation> <translation id="8728487861892616501">యాప్ని ఉపయోగించడం ద్వారా, మీరు Chrome యొక్క <ph name="BEGIN_LINK1" />సేవా నిబంధనలు<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />గోప్యతా నోటీసు<ph name="END_LINK2" /> మరియు <ph name="BEGIN_LINK3" />Google ఖాతాల కోసం Family Linkలో నిర్వహించే గోప్యతా నోటీసు<ph name="END_LINK3" />ను అంగీకరిస్తున్నారు.</translation> <translation id="8730621377337864115">పూర్తయింది</translation> @@ -1086,7 +1099,7 @@ <translation id="9137013805542155359">అసలును చూపించు</translation> <translation id="9139068048179869749">సైట్లను నోటిఫికేషన్లు పంపేందుకు అనుమతించడానికి ముందు మిమ్మల్ని అడుగుతుంది (సిఫార్సు చేయబడింది)</translation> <translation id="9139318394846604261">షాపింగ్</translation> -<translation id="9155898266292537608">మీరు త్వరితంగా ఒక పదంపై నొక్కడం ద్వారా కూడా శోధించవచ్చు</translation> +<translation id="9155898266292537608">ఒక పదంపై నొక్కడం ద్వారా కూడా మీరు త్వరగా వెతకవచ్చు</translation> <translation id="9188680907066685419">నిర్వహిత ఖాతా నుండి సైన్ అవుట్ చేయండి</translation> <translation id="9204836675896933765">1 ఫైల్ మిగిలి ఉంది</translation> <translation id="9206873250291191720">A</translation> @@ -1097,7 +1110,7 @@ <translation id="945522503751344254">అభిప్రాయాన్ని పంపండి</translation> <translation id="945632385593298557">మీ మైక్రోఫోన్ ప్రాప్యత అనుమతి</translation> <translation id="951339005376969845">ఇప్పటికే ఉన్న డేటాను తొలగించండి. మీరు <ph name="FROM_ACCOUNT" />కి తిరిగి వెళ్లడం ద్వారా దాన్ని తిరిగి పొందవచ్చు.</translation> -<translation id="95817756606698420">Chrome చైనాలో శోధించడానికి <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> ఉపయోగించవచ్చు. మీరు దీన్ని <ph name="BEGIN_LINK" />సెట్టింగ్ల<ph name="END_LINK" />లో మార్చవచ్చు.</translation> +<translation id="95817756606698420">చైనాలో వెతకడానికి <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" />ను Chrome ఉపయోగించవచ్చు. మీరు దీనిని <ph name="BEGIN_LINK" />సెట్టింగ్ల<ph name="END_LINK" />లో మార్చవచ్చు.</translation> <translation id="965817943346481315">సైట్ అనుచితమైన లేదా తప్పుదారి పట్టించే ప్రకటనలను చూపించినప్పుడు బ్లాక్ చేయి (సిఫార్సు చేయబడింది)</translation> <translation id="970715775301869095"><ph name="MINUTES" /> నిమిషాలు మిగిలి ఉంది</translation> <translation id="974555521953189084">సింక్ను ప్రారంభించడానికి మీ రహస్య పదబంధాన్ని నమోదు చేయండి</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_th.xtb b/chrome/android/java/strings/translations/android_chrome_strings_th.xtb index 370e926..8cf1abc4 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_th.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_th.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="th"> <translation id="1006017844123154345">เปิดแบบออนไลน์</translation> +<translation id="1023450834687746199">คุณล้างข้อมูล <ph name="APP_NAME" /> แล้ว</translation> <translation id="1036727731225946849">กำลังเพิ่ม <ph name="WEBAPK_NAME" />...</translation> <translation id="1041308826830691739">จากเว็บไซต์</translation> <translation id="1049743911850919806">โหมดไม่ระบุตัวตน</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">ล้างประวัติการเข้าชมและการเติมข้อความอัตโนมัติในแถบที่อยู่เว็บ</translation> <translation id="2021896219286479412">ส่วนควบคุมเว็บไซต์แบบเต็มหน้าจอ</translation> <translation id="2038563949887743358">เปิดการขอเว็บไซต์เดสก์ท็อป</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> มีข้อมูลอยู่ใน Chrome ด้วย</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB จากแอปอื่นๆ</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">แตะเพื่อค้นหา</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">แก้ไขบัตร</translation> <translation id="2154710561487035718">คัดลอก URL</translation> <translation id="2156074688469523661">เว็บไซต์ที่เหลือ (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">ตรวจสอบการเชื่อมต่ออินเทอร์เน็ต</translation> <translation id="2197557662829090533">อนุญาตให้ไลฟ์สไตล์ดิจิทัลแสดงเว็บไซต์ที่คุณเข้าชม</translation> <translation id="2206488550163399966">เว็บแอป <ph name="APP_NAME" />, <ph name="APP_URL" /></translation> <translation id="2227444325776770048">ดำเนินการต่อในชื่อ <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">ล้มเหลว</translation> <translation id="2781151931089541271">เหลือ 1 วิ</translation> <translation id="2784212955220061919">ในโหมด Lite เบราว์เซอร์ Chrome จะโหลดหน้าเว็บได้เร็วขึ้นและใช้เน็ตน้อยลงสูงสุดถึง 60 เปอร์เซ็นต์ เทคโนโลยีระบบคลาวด์ของ Google ช่วยเพิ่มประสิทธิภาพหน้าเว็บที่คุณเข้าชม</translation> +<translation id="2785336755839207516">คุณถอนการติดตั้ง <ph name="APP_NAME" /> แล้ว</translation> <translation id="2803478378562657435">กำลังแสดงรหัสผ่านที่บันทึกไว้และตัวเลือกรหัสผ่าน</translation> <translation id="2810645512293415242">ลดรายละเอียดหน้าเว็บเพื่อประหยัดเน็ตมือถือและโหลดได้เร็วขึ้น</translation> <translation id="281504910091592009">ดูและจัดการรหัสผ่านที่บันทึกไว้ใน<ph name="BEGIN_LINK" />บัญชี Google<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">แสดงข้อมูล</translation> <translation id="3123473560110926937">บล็อกในบางเว็บไซต์</translation> <translation id="3137521801621304719">ออกจากโหมดไม่ระบุตัวตน</translation> +<translation id="3143515551205905069">ยกเลิกการซิงค์</translation> <translation id="3148434565183091099">ลงชื่อเข้าใช้ Chrome เพื่อรับบุ๊กมาร์กในอุปกรณ์ทุกเครื่องของคุณ</translation> <translation id="3157842584138209013">ดูปริมาณอินเทอร์เน็ตที่คุณประหยัดไปได้จากปุ่มตัวเลือกเพิ่มเติม</translation> <translation id="3166827708714933426">แป้นพิมพ์ลัดสำหรับแท็บและหน้าต่าง</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">โหลดภาพ</translation> <translation id="3269956123044984603">เปิด "ข้อมูลการซิงค์อัตโนมัติ" ในการตั้งค่าบัญชี Android เพื่อรับแท็บจากอุปกรณ์อื่นๆ ของคุณ</translation> <translation id="3282568296779691940">ลงชื่อเข้าใช้ Chrome</translation> +<translation id="3288003805934695103">โหลดหน้าใหม่</translation> <translation id="32895400574683172">อนุญาตให้แสดงการแจ้งเตือน</translation> <translation id="3295530008794733555">ท่องเว็บได้เร็วขึ้น ใช้เน็ตน้อยลง</translation> <translation id="3295602654194328831">ซ่อนข้อมูล</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326">ลบการดาวน์โหลด <ph name="NUMBER_OF_DOWNLOADS" /> รายการแล้ว</translation> <translation id="3819562311292413223">ดาวน์โหลดบทความสำหรับคุณ</translation> <translation id="3822502789641063741">ล้างพื้นที่เก็บข้อมูลเว็บไซต์ไหม</translation> +<translation id="385051799172605136">กลับ</translation> <translation id="3859306556332390985">ไปข้างหน้า</translation> <translation id="3894427358181296146">เพิ่มโฟลเดอร์</translation> <translation id="3895926599014793903">บังคับให้เปิดใช้การซูม</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">ลงชื่อเข้าใช้</translation> <translation id="395206256282351086">ปิดใช้คำแนะนำการค้นหาและเว็บไซต์แล้ว</translation> <translation id="3955193568934677022">อนุญาตให้ไซต์เล่นเนื้อหาที่ได้รับความคุ้มครอง (แนะนำ)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome จะโหลดหน้าเว็บเมื่อพร้อม}other{Chrome จะโหลดหน้าเว็บเมื่อพร้อม}}</translation> <translation id="3963007978381181125">การเข้ารหัสลับด้วยรหัสผ่านจะไม่รวมข้อมูลวิธีการชำระเงินและที่อยู่จาก Google Pay เฉพาะผู้ที่มีรหัสผ่านของคุณเท่านั้นจึงจะอ่านข้อมูลที่เข้ารหัสได้ Google จะไม่ได้รับหรือจัดเก็บรหัสผ่านนี้ คุณจะต้องรีเซ็ตการซิงค์หากลืมรหัสผ่านหรือต้องการเปลี่ยนแปลงการตั้งค่านี้ <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" /></translation> <translation id="3967822245660637423">ดาวน์โหลดเสร็จสมบูรณ์</translation> <translation id="397583555483684758">การซิงค์หยุดทำงานแล้ว</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">สื่อ</translation> <translation id="4278390842282768270">อนุญาตแล้ว</translation> <translation id="429312253194641664">เว็บไซต์กำลังเล่นสื่อ</translation> +<translation id="4298388696830689168">เว็บไซต์ที่ลิงก์</translation> <translation id="4307992518367153382">พื้นฐาน</translation> <translation id="4314815835985389558">จัดการการซิงค์</translation> <translation id="4351244548802238354">ปิดหน้าต่างโต้ตอบ</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">การเปิดใช้ "ไม่ติดตาม" หมายความว่าจะมีการรวมคำขอหนึ่งไว้กับการเข้าชมของคุณ ผลกระทบทั้งหมดขึ้นอยู่กับว่าเว็บไซต์ตอบสนองต่อคำขอนั้นไหม และวิธีตีความคำขอ ตัวอย่างเช่น บางเว็บไซต์อาจตอบสนองต่อคำขอนี้โดยแสดงให้คุณเห็นโฆษณาที่ไม่ได้อิงอยู่กับเว็บไซต์อื่นๆ ที่คุณเข้าชม เว็บไซต์จำนวนมากจะยังคงรวบรวมและใช้ข้อมูลการท่องเว็บของคุณเพื่อปรับปรุงความปลอดภัย เพื่อแสดงเนื้อหา โฆษณา และคำแนะนำ และเพื่อสร้างสถิติในการรายงาน เป็นต้น</translation> +<translation id="624789221780392884">พร้อมอัปเดต</translation> <translation id="6255999984061454636">การแนะนำเนื้อหา</translation> <translation id="6277522088822131679">เกิดปัญหาในการพิมพ์หน้านี้ โปรดลองอีกครั้ง</translation> <translation id="6295158916970320988">ไซต์ทั้งหมด</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">ดาวน์โหลดวิดีโอ</translation> <translation id="6482749332252372425">การดาวน์โหลด <ph name="FILE_NAME" /> ล้มเหลวเพราะพื้นที่เก็บข้อมูลไม่เพียงพอ</translation> <translation id="6496823230996795692">โปรดเชื่อมต่ออินเทอร์เน็ตเพื่อใช้ <ph name="APP_NAME" /> เป็นครั้งแรก</translation> +<translation id="6508722015517270189">รีสตาร์ท Chrome</translation> <translation id="6527303717912515753">แชร์</translation> <translation id="6534565668554028783">Google ใช้เวลาตอบกลับนานเกินไป</translation> <translation id="6538442820324228105">ดาวน์โหลดแล้ว <ph name="GBS" /> GB</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">กำลังรอให้บริการ Google Play อัปเดตเสร็จสิ้น</translation> <translation id="7189598951263744875">แชร์...</translation> <translation id="7191430249889272776">แท็บเปิดในพื้นหลัง</translation> -<translation id="7221869452894271364">โหลดหน้านี้ใหม่</translation> <translation id="723171743924126238">เลือกภาพ</translation> <translation id="7243308994586599757">มีตัวเลือกอยู่ทางด้านล่างของหน้าจอ</translation> <translation id="7250468141469952378">เลือกไว้ <ph name="ITEM_COUNT" /> รายการ</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">ช่วงเวลา</translation> <translation id="7851858861565204677">อุปกรณ์อื่นๆ</translation> <translation id="7854964836418414587">ปิด "ดูคำแนะนำแบบนี้อีก"</translation> +<translation id="7871791972254842204">อ่านและยอมรับข้อกำหนดและเงื่อนไขเกี่ยวกับ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ภายหลัง</translation> <translation id="7875915731392087153">สร้างอีเมล</translation> <translation id="7876243839304621966">ลบทั้งหมด</translation> <translation id="7882131421121961860">ไม่พบประวัติ</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">ทำต่อ</translation> <translation id="8209050860603202033">เปิดรูปภาพ</translation> <translation id="8220488350232498290">พื้นที่ที่ใช้ไปสำหรับการดาวน์โหลด <ph name="GIGABYTES" /> GB</translation> +<translation id="8232956427053453090">เก็บข้อมูลไว้</translation> <translation id="8249310407154411074">เลื่อนไปบนสุด</translation> <translation id="8250920743982581267">เอกสาร</translation> <translation id="825412236959742607">หน้านี้ใช้หน่วยความจำมากเกินไป Chrome จึงนำเนื้อหาบางส่วนออก</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">ชื่อผู้ถือบัตร</translation> <translation id="8604763363205185560">ช่วยปรับปรุง Chrome และความปลอดภัยของ Chrome</translation> <translation id="8609465669617005112">เลื่อนขึ้น</translation> +<translation id="8611192991944347781">จัดการข้อมูล</translation> <translation id="8616006591992756292">บัญชี Google อาจมีประวัติการท่องเว็บรูปแบบอื่นๆ ที่ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation> <translation id="8617240290563765734">ต้องการเปิด URL แนะนำซึ่งระบุอยู่ในเนื้อหาที่ดาวน์โหลดไหม</translation> <translation id="8636825310635137004">เปิดการซิงค์เพื่อรับแท็บจากอุปกรณ์เครื่องอื่นๆ ของคุณ</translation> <translation id="8641930654639604085">พยายามบล็อกไซต์สำหรับผู้ใหญ่</translation> +<translation id="8655129584991699539">คุณล้างข้อมูลได้ในการตั้งค่า Chrome</translation> <translation id="8662811608048051533">นำคุณออกจากระบบของเว็บไซต์ส่วนใหญ่</translation> <translation id="8664979001105139458">มีชื่อไฟล์นี้อยู่แล้ว</translation> <translation id="8676374126336081632">ล้างข้อมูลที่ป้อน</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">ค้นหารายชื่อติดต่อ</translation> <translation id="869891660844655955">วันหมดอายุ</translation> <translation id="8719023831149562936">ไม่สามารถบีมแท็บปัจจุบัน</translation> +<translation id="8723954843026426558">ฉันยอมรับข้อกำหนดและเงื่อนไข นโยบายความเป็นส่วนตัว และสิทธิ์การถอนของ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">ลองอีกครั้ง</translation> <translation id="8728487861892616501">การใช้แอปพลิเคชันนี้หมายความว่าคุณยอมรับ <ph name="BEGIN_LINK1" />ข้อกำหนดในการให้บริการ<ph name="END_LINK1" /> และ <ph name="BEGIN_LINK2" />ประกาศเกี่ยวกับนโยบายความเป็นส่วนตัว<ph name="END_LINK2" /> ของ Chrome รวมถึง <ph name="BEGIN_LINK3" />ประกาศเกี่ยวกับนโยบายความเป็นส่วนตัวสำหรับบัญชี Google ที่จัดการด้วย Family Link<ph name="END_LINK3" /></translation> <translation id="8730621377337864115">เสร็จสิ้น</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb index 47ab5f8c..e31486f8 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="tr"> <translation id="1006017844123154345">İnternet'te aç</translation> +<translation id="1023450834687746199"><ph name="APP_NAME" /> uygulamasına ait verileri temizlediniz.</translation> <translation id="1036727731225946849"><ph name="WEBAPK_NAME" /> ekleniyor...</translation> <translation id="1041308826830691739">Web sitelerinden</translation> <translation id="1049743911850919806">Gizli mod</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Geçmişi ve adres çubuğundaki otomatik tamamlama bilgilerini temizler.</translation> <translation id="2021896219286479412">Tam ekran site kontrolleri</translation> <translation id="2038563949887743358">Masaüstü sitesi iste işlevini etkinleştir</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> uygulamasına ait veriler Chrome'da da mevcut</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> GB diğer uygulamalar</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Aramak İçin Hafifçe Dokunma</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Kartı düzenle</translation> <translation id="2154710561487035718">URL'yi Kopyala</translation> <translation id="2156074688469523661">Kalan site sayısı (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">İnternet bağlantınızı kontrol edin</translation> <translation id="2197557662829090533">Dijital Denge'nin ziyaret ettiğiniz web sitelerini göstermesine izin verin</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, web uygulaması. <ph name="APP_URL" /></translation> <translation id="2227444325776770048"><ph name="USER_FULL_NAME" /> olarak devam edin</translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">başarısız</translation> <translation id="2781151931089541271">1 sn. kaldı</translation> <translation id="2784212955220061919">Chrome, Basit modda sayfaları daha hızlı yükler ve yüzde 60'a kadar daha az veri kullanır. Google'ın bulut teknolojisi, ziyaret ettiğiniz sayfaları optimize eder.</translation> +<translation id="2785336755839207516"><ph name="APP_NAME" /> uygulamasının yüklemesini kaldırdınız.</translation> <translation id="2803478378562657435">Kayıtlı şifreler ve şifre seçenekleri gösteriliyor</translation> <translation id="2810645512293415242">Veriden tasarruf etmek ve daha hızlı yüklemek için basitleştirilmiş sayfa.</translation> <translation id="281504910091592009"><ph name="BEGIN_LINK" />Google Hesabınızdaki<ph name="END_LINK" /> kayıtlı şifrelerinizi görüntüleyin ve yönetin.</translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Bilgileri Göster</translation> <translation id="3123473560110926937">Bazı sitelerde engellendi</translation> <translation id="3137521801621304719">Gizli moddan çık</translation> +<translation id="3143515551205905069">Senkronizasyonu iptal et</translation> <translation id="3148434565183091099">Yer işaretlerinizi tüm cihazlarınızda almak için Chrome'da oturum açın.</translation> <translation id="3157842584138209013">Diğer Seçenekler düğmesini kullanarak ne kadar veri tasarrufu sağladığınıza bakın</translation> <translation id="3166827708714933426">Sekme ve pencere kısayolları</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Resim yükle</translation> <translation id="3269956123044984603">Diğer cihazlarınızdaki sekmelerinize ulaşmak için Android hesap ayarlarından "Verileri otomatik senkronize et" seçeneğini etkinleştirin.</translation> <translation id="3282568296779691940">Chrome'da oturum aç</translation> +<translation id="3288003805934695103">Sayfayı yeniden yükleme</translation> <translation id="32895400574683172">Bildirimlere izin veriliyor</translation> <translation id="3295530008794733555">Daha hızlı tarayın. Daha az veri kullanın.</translation> <translation id="3295602654194328831">Bilgileri Gizle</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326">İndirilen <ph name="NUMBER_OF_DOWNLOADS" /> dosya silindi</translation> <translation id="3819562311292413223">Sizin için seçilmiş makaleleri indirin</translation> <translation id="3822502789641063741">Site depo. silinsin mi?</translation> +<translation id="385051799172605136">Geri</translation> <translation id="3859306556332390985">İleriye doğru git</translation> <translation id="3894427358181296146">Klasör ekleyin</translation> <translation id="3895926599014793903">Yakınlaştırmayı etkinleştirmeye zorla</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Oturum açın</translation> <translation id="395206256282351086">Arama ve site önerileri devre dışı bırakıldı</translation> <translation id="3955193568934677022">Sitelerin korumalı içeriği oynatmasına izin ver (önerilir)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome, hazır olduğunda sayfanızı yükler}other{Chrome, hazır olduğunda sayfalarınızı yükler}}</translation> <translation id="3963007978381181125">Parolayla şifreleme, Google Pay'deki adresleri ve ödeme yöntemlerini kapsamaz. Yalnızca parolanızı bilen biri, şifrelenmiş verilerinizi okuyabilir. Parola Google'a gönderilmez veya Google tarafından saklanmaz. Parolanızı unutursanız veya bu ayarı değiştirmek isterseniz senkronizasyonu sıfırlamanız gerekir. <ph name="BEGIN_LINK" />Daha fazla bilgi<ph name="END_LINK" /></translation> <translation id="3967822245660637423">İndirme tamamlandı</translation> <translation id="397583555483684758">Senkronizasyonun çalışması durdu</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Medya</translation> <translation id="4278390842282768270">İzin verildi</translation> <translation id="429312253194641664">Bir site medya oynatıyor</translation> +<translation id="4298388696830689168">Bağlantılı siteler</translation> <translation id="4307992518367153382">Temel Bilgiler</translation> <translation id="4314815835985389558">Senkronizasyonu yönetin</translation> <translation id="4351244548802238354">İletişim kutusunu kapat</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">"Do Not Track" seçeneği etkinleştirildiğinde, göz atma trafiğinize bir istek eklenir. Her türlü etki, bir web sitesinin isteğe cevap verip vermemesine ve isteğin nasıl yorumlandığına bağlıdır. Örneğin bazı web siteleri bu isteği size daha önce gezdiğiniz web sitelerine dayalı olmayan reklamları göstererek yanıtlayabilir. Birçok web sitesi (örneğin güvenliği iyileştirmek; içerik, reklam, öneri sağlamak ve raporlama istatistikleri oluşturmak gibi amaçlarla) göz atma verilerinizi toplayıp kullanmayı sürdürecektir.</translation> +<translation id="624789221780392884">Güncelleme hazır</translation> <translation id="6255999984061454636">İçerik önerileri</translation> <translation id="6277522088822131679">Sayfa yazdırılırken bir sorun oluştu. Lütfen tekrar deneyin.</translation> <translation id="6295158916970320988">Tüm siteler</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Videoyu indir</translation> <translation id="6482749332252372425">Depolama alanı yetersiz olduğu için <ph name="FILE_NAME" /> dosyası indirilemedi.</translation> <translation id="6496823230996795692"><ph name="APP_NAME" /> uygulamasını ilk kez kullanmak için lütfen internete bağlanın.</translation> +<translation id="6508722015517270189">Chrome'u yeniden başlatın</translation> <translation id="6527303717912515753">Paylaş</translation> <translation id="6534565668554028783">Google çok geç yanıt verdi</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB indirildi</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Güncellemenin tamamlanması için Google Play Hizmetleri bekleniyor</translation> <translation id="7189598951263744875">Paylaş...</translation> <translation id="7191430249889272776">Sekme arka planda açıldı.</translation> -<translation id="7221869452894271364">Bu sayfayı yeniden yükle</translation> <translation id="723171743924126238">Resim seç</translation> <translation id="7243308994586599757">Sayfanın altına yakın bir yerde kullanılabilen seçenekler</translation> <translation id="7250468141469952378"><ph name="ITEM_COUNT" /> öğe seçildi</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Zaman aralığı</translation> <translation id="7851858861565204677">Diğer cihazlar</translation> <translation id="7854964836418414587">Bunun gibi daha fazlası sayfasını kapat</translation> +<translation id="7871791972254842204"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> sitesindeki şartlar ve koşulları daha sonra okuyup kabul edin</translation> <translation id="7875915731392087153">E-posta oluşturun</translation> <translation id="7876243839304621966">Tümünü kaldır</translation> <translation id="7882131421121961860">Geçmiş bulunamadı</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Sürdür</translation> <translation id="8209050860603202033">Resmi aç</translation> <translation id="8220488350232498290"><ph name="GIGABYTES" /> GB indirildi</translation> +<translation id="8232956427053453090">Verileri temizleme</translation> <translation id="8249310407154411074">En üste taşı</translation> <translation id="8250920743982581267">Dokümanlar</translation> <translation id="825412236959742607">Bu sayfa çok fazla bellek kullandığından Chrome bazı içerikleri kaldırdı.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Kart sahibinin adı</translation> <translation id="8604763363205185560">Chrome'u ve güvenlik özelliklerini iyileştirmeye yardımcı olun</translation> <translation id="8609465669617005112">Yukarı taşı</translation> +<translation id="8611192991944347781">Veri yönetimi</translation> <translation id="8616006591992756292">Google Hesabınızın <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> adresinde başka biçimlerde tarama geçmişi olabilir.</translation> <translation id="8617240290563765734">İndirilen öğede belirtilen URL önerisi açılsın mı?</translation> <translation id="8636825310635137004">Diğer cihazlarınızdaki sekmelerinize ulaşmak için senkronizasyonu etkinleştirin.</translation> <translation id="8641930654639604085">Yetişkinlere yönelik siteleri engellemeyi dene</translation> +<translation id="8655129584991699539">Verileri Chrome Ayarlarından temizleyebilirsiniz</translation> <translation id="8662811608048051533">Çoğu sitedeki oturumunuz kapatılır.</translation> <translation id="8664979001105139458">Dosya adı zaten mevcut</translation> <translation id="8676374126336081632">Girişi temizle</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Kişilerinizde arama yapın</translation> <translation id="869891660844655955">Son kullanma tarihi</translation> <translation id="8719023831149562936">Geçerli sekme ışınlanamıyor</translation> +<translation id="8723954843026426558"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> cayma hakkı, gizlilik politikası ve şartlar ile koşullarını kabul ediyorum</translation> <translation id="8725066075913043281">Yeniden dene</translation> <translation id="8728487861892616501">Bu uygulamayı kullanarak Chrome’un <ph name="BEGIN_LINK1" />Hizmet Şartları<ph name="END_LINK1" /> ve <ph name="BEGIN_LINK2" />Gizlilik Bildirimi<ph name="END_LINK2" /> ile <ph name="BEGIN_LINK3" />Family Link ile Yönetilen Google Hesapları için Gizlilik Bildirimi<ph name="END_LINK3" />'ni kabul etmiş olursunuz.</translation> <translation id="8730621377337864115">Bitti</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb b/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb index 115508a..18708825 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="uk"> <translation id="1006017844123154345">Відкрити в режимі онлайн</translation> +<translation id="1023450834687746199">Дані додатка <ph name="APP_NAME" /> видалено.</translation> <translation id="1036727731225946849">Додається <ph name="WEBAPK_NAME" />…</translation> <translation id="1041308826830691739">З веб-сайтів</translation> <translation id="1049743911850919806">Анонімний перегляд</translation> @@ -28,7 +29,7 @@ <translation id="1197267115302279827">Перемістити закладки</translation> <translation id="119944043368869598">Очистити все</translation> <translation id="1201402288615127009">Далі</translation> -<translation id="1204037785786432551">Завантажити посилання</translation> +<translation id="1204037785786432551">Завантажити дані за посиланням</translation> <translation id="1206892813135768548">Копіювати текст посилання</translation> <translation id="1208340532756947324">Щоб синхронізувати й персоналізувати дані на пристроях, увімкніть синхронізацію</translation> <translation id="1209206284964581585">Приховати</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Очищує історію й автозавершення в адресному рядку.</translation> <translation id="2021896219286479412">Керування повноекранним режимом</translation> <translation id="2038563949887743358">Увімкнути опцію "Запитувати версію сайту для комп’ютера"</translation> +<translation id="204321170514947529">Дані додатка <ph name="APP_NAME" /> також містяться в Chrome</translation> <translation id="2045104531052923016"><ph name="GIGABYTES" /> ГБ використовується іншими додатками</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Торкніться, щоб шукати</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Редагувати картку</translation> <translation id="2154710561487035718">Копіювати URL-адресу</translation> <translation id="2156074688469523661">Інші сайти (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Перевірте інтернет-з’єднання</translation> <translation id="2197557662829090533">Дозволити Цифровому добробуту показувати відвідані веб-сайти</translation> <translation id="2206488550163399966">Веб-додаток <ph name="APP_NAME" />: <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Продовжити як <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">не завантажено</translation> <translation id="2781151931089541271">Залишилась 1 с</translation> <translation id="2784212955220061919">У спрощеному режимі Chrome завантажує сторінки швидше та використовує на 60 відсотків менше трафіку. Хмарна технологія Google оптимізує сторінки, які ви відвідуєте.</translation> +<translation id="2785336755839207516">Додаток <ph name="APP_NAME" /> видалено.</translation> <translation id="2803478378562657435">Показано збережені паролі та їх параметри</translation> <translation id="2810645512293415242">Спрощена сторінка для заощадження трафіку та швидшого завантаження.</translation> <translation id="281504910091592009">Переглядайте збережені паролі й керуйте ними в <ph name="BEGIN_LINK" />обліковому записі Google<ph name="END_LINK" /></translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">Показати інформацію</translation> <translation id="3123473560110926937">Заблоковано на деяких сайтах</translation> <translation id="3137521801621304719">Вийти з режиму анонімного перегляду</translation> +<translation id="3143515551205905069">Скасувати синхронізацію</translation> <translation id="3148434565183091099">Щоб мати доступ до закладок на всіх своїх пристроях, увійдіть в обліковий запис Chrome.</translation> <translation id="3157842584138209013">Перевірте обсяг збережених даних за допомогою кнопки "Більше опцій"</translation> <translation id="3166827708714933426">Комбінації клавіш для роботи з вкладками та вікнами</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Завантажити зображення</translation> <translation id="3269956123044984603">Щоб мати доступ до вкладок з інших пристроїв, увімкніть опцію "Автоматично синхронізувати дані" в налаштуваннях облікового запису на Android.</translation> <translation id="3282568296779691940">Вхід у Chrome</translation> +<translation id="3288003805934695103">перезавантажити сторінку</translation> <translation id="32895400574683172">Сповіщення дозволено</translation> <translation id="3295530008794733555">Шукайте швидше. Заощаджуйте трафік.</translation> <translation id="3295602654194328831">Сховати інформацію</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326">Видалено завантажених файлів: <ph name="NUMBER_OF_DOWNLOADS" /></translation> <translation id="3819562311292413223">Завантажувати статті для вас</translation> <translation id="3822502789641063741">Видалити дані сайтів?</translation> +<translation id="385051799172605136">Назад</translation> <translation id="3859306556332390985">Далі</translation> <translation id="3894427358181296146">Додати папку</translation> <translation id="3895926599014793903">Примусово ввімкнути масштабування</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Увійти</translation> <translation id="395206256282351086">Пропозиції термінів і сайтів вимкнено</translation> <translation id="3955193568934677022">Дозволити сайтам відтворювати захищений вміст (рекомендується)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Коли все буде готово, Chrome завантажить сторінку}one{Коли все буде готово, Chrome завантажить сторінки}few{Коли все буде готово, Chrome завантажить сторінки}many{Коли все буде готово, Chrome завантажить сторінки}other{Коли все буде готово, Chrome завантажить сторінки}}</translation> <translation id="3963007978381181125">Парольна фраза не стосується способів оплати й адрес із Google Pay. Ваші зашифровані дані можуть переглядати лише користувачі, які знають вашу парольну фразу. Вона не надсилається й не зберігається в Google. Якщо ви забули її або хочете змінити це налаштування, скиньте параметри синхронізації. <ph name="BEGIN_LINK" />Докладніше<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Завантажено</translation> <translation id="397583555483684758">Синхронізація перестала працювати</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Медіа-дані</translation> <translation id="4278390842282768270">Дозволено</translation> <translation id="429312253194641664">Сайт відтворює медіа-вміст</translation> +<translation id="4298388696830689168">Зв’язані сайти</translation> <translation id="4307992518367153382">Основні</translation> <translation id="4314815835985389558">Керування синхронізацією</translation> <translation id="4351244548802238354">Закрити діалогове вікно</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Якщо ввімкнути параметр "Не відстежувати", запит додаватиметься в трафік веб-перегляду. Результат залежатиме від того, чи реагує веб-сайт на цей запит і як тлумачиться запит. Наприклад, деякі веб-сайти можуть реагувати на такий запит, показуючи вам рекламу, не пов’язану з іншими веб-сайтами, які ви відвідали. Багато веб-сайтів і надалі збиратимуть та використовуватимуть ваші дані веб-перегляду, наприклад, щоб покращувати систему безпеки, пропонувати вміст, рекламу й рекомендації, а також генерувати статистику для звітів.</translation> +<translation id="624789221780392884">Оновлення завершено</translation> <translation id="6255999984061454636">Пропозиції вмісту</translation> <translation id="6277522088822131679">Виникла проблема з друком цієї сторінки. Повторіть спробу.</translation> <translation id="6295158916970320988">Усі сайти</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Завантажити відео</translation> <translation id="6482749332252372425">Не вдалося завантажити файл <ph name="FILE_NAME" />. Замало місця.</translation> <translation id="6496823230996795692">Щоб запустити додаток <ph name="APP_NAME" /> уперше, під’єднайте пристрій до Інтернету.</translation> +<translation id="6508722015517270189">Перезапустіть Chrome</translation> <translation id="6527303717912515753">Надіслати</translation> <translation id="6534565668554028783">Google довго не відповідає</translation> <translation id="6538442820324228105">Завантажено <ph name="GBS" /> ГБ</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Сервіси Google Play оновлюються</translation> <translation id="7189598951263744875">Поділитися...</translation> <translation id="7191430249889272776">Вкладку відкрито у фоновому режимі.</translation> -<translation id="7221869452894271364">Перезавантажити цю сторінку</translation> <translation id="723171743924126238">Вибрати зображення</translation> <translation id="7243308994586599757">Опції можна знайти внизу екрана</translation> <translation id="7250468141469952378">Вибрано <ph name="ITEM_COUNT" /></translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Період часу</translation> <translation id="7851858861565204677">Інші пристрої</translation> <translation id="7854964836418414587">Закрити сторінку "Більше подібного"</translation> +<translation id="7871791972254842204">Прийняти умови використання для <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> пізніше</translation> <translation id="7875915731392087153">Створити електронну адресу</translation> <translation id="7876243839304621966">Видалити все</translation> <translation id="7882131421121961860">Історії не знайдено</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Поновити</translation> <translation id="8209050860603202033">Відкрити зображення</translation> <translation id="8220488350232498290">Завантажено <ph name="GIGABYTES" /> ГБ</translation> +<translation id="8232956427053453090">Зберігати дані</translation> <translation id="8249310407154411074">На початок</translation> <translation id="8250920743982581267">Документи</translation> <translation id="825412236959742607">Ця сторінка використовує забагато пам’яті, тому веб-переглядач Chrome вилучив деякий вміст.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Ім’я та прізвище власника картки</translation> <translation id="8604763363205185560">Допоможіть покращити веб-переглядач Chrome і його функції безпеки</translation> <translation id="8609465669617005112">Угору</translation> +<translation id="8611192991944347781">Керувати даними</translation> <translation id="8616006591992756292">У вашому обліковому записі Google на сторінці <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> можуть бути інші форми історії веб-перегляду.</translation> <translation id="8617240290563765734">Перейти за URL-адресою, указаною в завантаженому вмісті?</translation> <translation id="8636825310635137004">Щоб мати доступ до вкладок з інших пристроїв, увімкніть синхронізацію.</translation> <translation id="8641930654639604085">Блокувати сайти для дорослих</translation> +<translation id="8655129584991699539">Ви можете очистити дані в налаштуваннях Chrome</translation> <translation id="8662811608048051533">Ви вийдете з більшості сайтів.</translation> <translation id="8664979001105139458">Файл із такою назвою вже існує</translation> <translation id="8676374126336081632">Видалити введений текст</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Пошук у контактах</translation> <translation id="869891660844655955">Діє до</translation> <translation id="8719023831149562936">Неможливо передати дані поточної вкладки</translation> +<translation id="8723954843026426558">Я приймаю умови використання, політику конфіденційності й право на відмову від <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Повторити спробу</translation> <translation id="8728487861892616501">Користуючись цим додатком, ви приймаєте <ph name="BEGIN_LINK1" />Умови використання<ph name="END_LINK1" /> та <ph name="BEGIN_LINK2" />Примітку про конфіденційність<ph name="END_LINK2" /> Chrome, а також <ph name="BEGIN_LINK3" />Примітку про конфіденційність для облікових записів Google, якими можна керувати у Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Готово</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb index d41bd0d0..4ca88f1 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="vi"> <translation id="1006017844123154345">Mở trực tuyến</translation> +<translation id="1023450834687746199">Bạn đã xóa dữ liệu của <ph name="APP_NAME" />.</translation> <translation id="1036727731225946849">Đang thêm <ph name="WEBAPK_NAME" />...</translation> <translation id="1041308826830691739">Từ trang web</translation> <translation id="1049743911850919806">Ẩn danh</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">Xóa lịch sử và tự động hoàn thành trong thanh địa chỉ.</translation> <translation id="2021896219286479412">Kiểm soát trang toàn màn hình</translation> <translation id="2038563949887743358">Bật Yêu cầu trang web cho máy tính</translation> +<translation id="204321170514947529"><ph name="APP_NAME" /> cũng có dữ liệu trong Chrome</translation> <translation id="2045104531052923016">Các ứng dụng khác chiếm <ph name="GIGABYTES" /> GB</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">Nhấn để tìm kiếm</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">Chỉnh sửa thẻ</translation> <translation id="2154710561487035718">Sao chép URL</translation> <translation id="2156074688469523661">Số trang web còn lại (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">Kiểm tra đường kết nối Internet của bạn</translation> <translation id="2197557662829090533">Cho phép Digital Wellbeing hiển thị các trang web bạn đã truy cập</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />, ứng dụng web. <ph name="APP_URL" /></translation> <translation id="2227444325776770048">Tiếp tục bằng <ph name="USER_FULL_NAME" /></translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">không tải xuống được</translation> <translation id="2781151931089541271">Còn 1 giây</translation> <translation id="2784212955220061919">Ở Chế độ thu gọn, Chrome tải trang nhanh hơn và sử dụng ít dữ liệu hơn lên tới 60 phần trăm. Công nghệ đám mây của Google tối ưu hóa các trang bạn truy cập.</translation> +<translation id="2785336755839207516">Bạn đã gỡ cài đặt <ph name="APP_NAME" />.</translation> <translation id="2803478378562657435">Đang hiển thị mật khẩu đã lưu và các tùy chọn mật khẩu</translation> <translation id="2810645512293415242">Trang đơn giản giúp lưu dữ liệu và tải nhanh hơn.</translation> <translation id="281504910091592009">Xem và quản lý các mật khẩu đã lưu trong <ph name="BEGIN_LINK" />Tài khoản Google<ph name="END_LINK" /> của bạn</translation> @@ -278,11 +280,12 @@ <translation id="305593374596241526">Đã tắt vị trí; hãy bật vị trí trong mục <ph name="BEGIN_LINK" />Cài đặt Android<ph name="END_LINK" />.</translation> <translation id="3060635849835183725">{BOOKMARKS_COUNT,plural, =1{<ph name="BOOKMARKS_COUNT_ONE" /> dấu trang}other{<ph name="BOOKMARKS_COUNT_MANY" /> dấu trang}}</translation> <translation id="307908932405420782">Các bài viết khác sẽ sớm xuất hiện. Chúc bạn buổi sáng vui vẻ!</translation> -<translation id="3089395242580810162">Mở bằng tab ẩn danh</translation> +<translation id="3089395242580810162">Mở trong tab ẩn danh</translation> <translation id="311456632243022227">Đã mở nhiều liên kết trong Chrome</translation> <translation id="3115898365077584848">Hiển thị thông tin</translation> <translation id="3123473560110926937">Đã chặn trên một số trang web</translation> <translation id="3137521801621304719">Thoát chế độ ẩn danh</translation> +<translation id="3143515551205905069">Hủy đồng bộ hóa</translation> <translation id="3148434565183091099">Để nhận dấu trang trên tất cả các thiết bị của bạn, hãy đăng nhập vào Chrome.</translation> <translation id="3157842584138209013">Xem lượng dữ liệu bạn đã tiết kiệm được từ nút Tùy chọn khác</translation> <translation id="3166827708714933426">Phím tắt dành cho tab và cửa sổ</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">Tải hình ảnh</translation> <translation id="3269956123044984603">Để có các tab từ các thiết bị khác của bạn, hãy bật “Tự động đồng bộ hóa dữ liệu” trong cài đặt tài khoản Android.</translation> <translation id="3282568296779691940">Đăng nhập vào Chrome</translation> +<translation id="3288003805934695103">Đang tải lại trang</translation> <translation id="32895400574683172">Cho phép thông báo</translation> <translation id="3295530008794733555">Duyệt web nhanh hơn. Sử dụng ít dữ liệu hơn.</translation> <translation id="3295602654194328831">Ẩn thông tin</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326">Đã xóa <ph name="NUMBER_OF_DOWNLOADS" /> bản tải xuống</translation> <translation id="3819562311292413223">Tải bài viết dành cho bạn xuống</translation> <translation id="3822502789641063741">Xóa bộ nhớ trang web?</translation> +<translation id="385051799172605136">Quay lại</translation> <translation id="3859306556332390985">Tìm kiếm tiến</translation> <translation id="3894427358181296146">Thêm thư mục</translation> <translation id="3895926599014793903">Buộc bật thu phóng</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">Đăng nhập</translation> <translation id="395206256282351086">Tính năng đề xuất trang web và tìm kiếm đã bị tắt</translation> <translation id="3955193568934677022">Cho phép trang web phát nội dung được bảo vệ (được đề xuất)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome sẽ tải trang của bạn khi sẵn sàng}other{Chrome sẽ tải trang của bạn khi sẵn sàng}}</translation> <translation id="3963007978381181125">Việc mã hóa cụm mật khẩu không bao gồm địa chỉ và phương thức thanh toán từ Google Pay. Chỉ người có cụm mật khẩu của bạn mới có thể đọc dữ liệu mã hóa. Cụm mật khẩu này sẽ không được gửi đến hay lưu trữ tại Google. Nếu quên cụm mật khẩu hoặc muốn thay đổi tùy chọn cài đặt này, thì bạn cần đặt lại tính năng đồng bộ hóa. <ph name="BEGIN_LINK" />Tìm hiểu thêm<ph name="END_LINK" /></translation> <translation id="3967822245660637423">Tải xuống hoàn tất</translation> <translation id="397583555483684758">Đồng bộ hóa đã ngừng hoạt động</translation> @@ -415,7 +421,7 @@ <translation id="4170011742729630528">Dịch vụ không khả dụng; thử lại sau.</translation> <translation id="4179980317383591987">Đã dùng <ph name="AMOUNT" /></translation> <translation id="4181841719683918333">Ngôn ngữ</translation> -<translation id="4195643157523330669">Mở bằng tab mới</translation> +<translation id="4195643157523330669">Mở trong tab mới</translation> <translation id="4198423547019359126">Không có vị trí tải xuống</translation> <translation id="4209895695669353772">Để nhận nội dung do Google đề xuất riêng cho bạn, hãy bật tính năng đồng bộ hóa</translation> <translation id="4225719675976901337">Không tìm thấy nội dung nào</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">Truyền thông</translation> <translation id="4278390842282768270">Được cho phép</translation> <translation id="429312253194641664">Một trang web đang phát nội dung đa phương tiện</translation> +<translation id="4298388696830689168">Các trang web liên kết</translation> <translation id="4307992518367153382">Cơ bản</translation> <translation id="4314815835985389558">Quản lý dữ liệu đồng bộ hóa</translation> <translation id="4351244548802238354">Đóng hộp thoại</translation> @@ -534,7 +541,7 @@ <translation id="5004416275253351869">Kiểm soát hoạt động trên Google</translation> <translation id="5005498671520578047">Sao chép mật khẩu</translation> <translation id="5011311129201317034"><ph name="SITE" /> muốn kết nối</translation> -<translation id="5013696553129441713">Không có đề xuất mới</translation> +<translation id="5013696553129441713">Không có nội dung đề xuất mới</translation> <translation id="5016205925109358554">Serif</translation> <translation id="5039804452771397117">Cho phép</translation> <translation id="5040262127954254034">Bảo mật</translation> @@ -668,7 +675,7 @@ <translation id="6005538289190791541">Mật khẩu đề xuất</translation> <translation id="6039379616847168523">Chuyển sang tab tiếp theo</translation> <translation id="6040143037577758943">Đóng</translation> -<translation id="6042308850641462728">Thêm</translation> +<translation id="6042308850641462728">Xem thêm</translation> <translation id="604996488070107836">Không tải xuống được <ph name="FILE_NAME" /> do lỗi không xác định.</translation> <translation id="605721222689873409">YY</translation> <translation id="6075798973483050474">Chỉnh sửa trang chủ</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">Bật tính năng “Không theo dõi” nghĩa là một yêu cầu sẽ được đi kèm với lưu lượng duyệt web của bạn. Mọi ảnh hưởng đều phụ thuộc vào việc trang web có phản hồi yêu cầu không và cách thức diễn giải yêu cầu. Ví dụ: một số trang web có thể phản hồi yêu cầu này bằng cách hiển thị cho bạn các quảng cáo không dựa trên các trang web khác mà bạn đã truy cập. Nhiều trang web sẽ vẫn thu thập và sử dụng dữ liệu duyệt web của bạn — ví dụ: để tăng cường bảo mật, cung cấp nội dung, quảng cáo và đề xuất, đồng thời tạo số liệu thống kê báo cáo.</translation> +<translation id="624789221780392884">Bản cập nhật đã sẵn sàng</translation> <translation id="6255999984061454636">Đề xuất nội dung</translation> <translation id="6277522088822131679">Đã xảy ra sự cố khi in trang này. Vui lòng thử lại.</translation> <translation id="6295158916970320988">Tất cả các trang web</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">Tải video xuống</translation> <translation id="6482749332252372425">Tải xuống <ph name="FILE_NAME" /> không thành công do thiếu dung lượng bộ nhớ.</translation> <translation id="6496823230996795692">Để sử dụng <ph name="APP_NAME" /> lần đầu tiên, vui lòng kết nối Internet.</translation> +<translation id="6508722015517270189">Khởi động lại Chrome</translation> <translation id="6527303717912515753">Chia sẻ</translation> <translation id="6534565668554028783">Google mất quá nhiều thời gian để phản hồi</translation> <translation id="6538442820324228105">Đã tải xuống <ph name="GBS" /> GB</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">Đợi Dịch vụ của Google Play cập nhật xong</translation> <translation id="7189598951263744875">Chia sẻ...</translation> <translation id="7191430249889272776">Tab được mở dưới nền.</translation> -<translation id="7221869452894271364">Tải lại trang này</translation> <translation id="723171743924126238">Chọn hình ảnh</translation> <translation id="7243308994586599757">Có các tùy chọn ở gần cuối màn hình</translation> <translation id="7250468141469952378">Đã chọn <ph name="ITEM_COUNT" /> mục</translation> @@ -875,7 +883,7 @@ <translation id="7514365320538308">Tải xuống</translation> <translation id="751961395872307827">Không thể kết nối với trang web</translation> <translation id="7521387064766892559">JavaScript</translation> -<translation id="7542481630195938534">Không thể nhận đề xuất</translation> +<translation id="7542481630195938534">Không thể nhận nội dung đề xuất</translation> <translation id="7559975015014302720">Chế độ thu gọn đang tắt</translation> <translation id="7562080006725997899">Xóa dữ liệu duyệt web</translation> <translation id="756809126120519699">Đã xóa dữ liệu Chrome</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">Phạm vi thời gian</translation> <translation id="7851858861565204677">Thiết bị khác</translation> <translation id="7854964836418414587">Đóng phần nội dung tương tự</translation> +<translation id="7871791972254842204">Đọc và đồng ý với điều khoản và điều kiện về <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> vào lúc khác</translation> <translation id="7875915731392087153">Tạo email</translation> <translation id="7876243839304621966">Xóa tất cả</translation> <translation id="7882131421121961860">Không tìm thấy lịch sử nào</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">Tiếp tục</translation> <translation id="8209050860603202033">Mở ảnh</translation> <translation id="8220488350232498290">Đã tải xuống <ph name="GIGABYTES" /> GB</translation> +<translation id="8232956427053453090">Lưu giữ dữ liệu</translation> <translation id="8249310407154411074">Chuyển lên trên cùng</translation> <translation id="8250920743982581267">Tài liệu</translation> <translation id="825412236959742607">Trang này sử dụng quá nhiều bộ nhớ, nên Chrome đã xóa bớt nội dung.</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">Tên chủ thẻ</translation> <translation id="8604763363205185560">Giúp cải thiện Chrome và tăng cường khả năng bảo mật</translation> <translation id="8609465669617005112">Di chuyển lên</translation> +<translation id="8611192991944347781">Quản lý dữ liệu</translation> <translation id="8616006591992756292">Tài khoản Google của bạn có thể có các dạng lịch sử duyệt web khác tại <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="8617240290563765734">Mở URL đề xuất được chỉ định trong nội dung được tải xuống?</translation> <translation id="8636825310635137004">Để có các tab từ các thiết bị khác của bạn, hãy bật đồng bộ hóa.</translation> <translation id="8641930654639604085">Cố gắng chặn các trang web cho người lớn</translation> +<translation id="8655129584991699539">Bạn có thể xóa dữ liệu trong mục Cài đặt của Chrome</translation> <translation id="8662811608048051533">Đăng xuất bạn khỏi hầu hết các trang web.</translation> <translation id="8664979001105139458">Tên tệp đã tồn tại</translation> <translation id="8676374126336081632">Xóa văn bản nhập</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">Tìm kiếm trong danh bạ</translation> <translation id="869891660844655955">Ngày hết hạn</translation> <translation id="8719023831149562936">Không thể chiếu tab hiện tại</translation> +<translation id="8723954843026426558">Tôi đồng ý với điều khoản và điều kiện, chính sách quyền riêng tư, cũng như quyền hủy <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /></translation> <translation id="8725066075913043281">Thử lại</translation> <translation id="8728487861892616501">Bằng việc sử dụng ứng dụng này, bạn đồng ý với <ph name="BEGIN_LINK1" />Điều khoản dịch vụ<ph name="END_LINK1" /> và <ph name="BEGIN_LINK2" />Thông báo bảo mật<ph name="END_LINK2" /> của Chrome cũng như <ph name="BEGIN_LINK3" />Thông báo bảo mật cho Tài khoản Google được quản lý bằng Family Link<ph name="END_LINK3" />.</translation> <translation id="8730621377337864115">Hoàn tất</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb index b92b59e55..f95329a 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="zh-CN"> <translation id="1006017844123154345">在线打开</translation> +<translation id="1023450834687746199">您已清除<ph name="APP_NAME" />的数据。</translation> <translation id="1036727731225946849">正在添加<ph name="WEBAPK_NAME" />…</translation> <translation id="1041308826830691739">来自网站</translation> <translation id="1049743911850919806">隐身</translation> @@ -24,7 +25,7 @@ <translation id="1172593791219290334">启动页</translation> <translation id="1175310183703641346">您的书签、历史记录、密码和其他设置将不再同步到您的 Google 帐号中</translation> <translation id="1178581264944972037">暂停</translation> -<translation id="1181037720776840403">删除</translation> +<translation id="1181037720776840403">移除</translation> <translation id="1197267115302279827">移动书签</translation> <translation id="119944043368869598">全部清除</translation> <translation id="1201402288615127009">下一页</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">清除历史记录和地址栏中的自动填充项。</translation> <translation id="2021896219286479412">全屏网站控件</translation> <translation id="2038563949887743358">开启“请求切换到桌面版网站”</translation> +<translation id="204321170514947529">Chrome 中也有<ph name="APP_NAME" />的数据</translation> <translation id="2045104531052923016">其他应用已占用的空间:<ph name="GIGABYTES" /> GB</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">点按搜索</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">修改支付卡</translation> <translation id="2154710561487035718">复制网址</translation> <translation id="2156074688469523661">其余的网站(<ph name="NUMBER_OF_SITES" /> 个)</translation> -<translation id="2173302385160625112">请检查您的互联网连接是否正常</translation> <translation id="2197557662829090533">允许“数字健康”显示您访问过的网站</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />,网络应用。<ph name="APP_URL" /></translation> <translation id="2227444325776770048">以“<ph name="USER_FULL_NAME" />”的身份继续</translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">失败</translation> <translation id="2781151931089541271">还剩 1 秒</translation> <translation id="2784212955220061919">在精简模式下,Chrome 可更快速地加载网页,并可节省多达百分之 60 的流量。Google 的云技术会优化您访问的网页。</translation> +<translation id="2785336755839207516">您已卸载<ph name="APP_NAME" />。</translation> <translation id="2803478378562657435">正在显示已保存的密码和密码选项</translation> <translation id="2810645512293415242">简化版网页不仅可节省数据流量,还可更快速地进行加载。</translation> <translation id="281504910091592009">查看和管理您的 <ph name="BEGIN_LINK" />Google 帐号<ph name="END_LINK" />中保存的密码</translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">显示信息</translation> <translation id="3123473560110926937">已禁止部分网站显示广告</translation> <translation id="3137521801621304719">退出隐身模式</translation> +<translation id="3143515551205905069">取消同步</translation> <translation id="3148434565183091099">要将您的书签同步到您所有的设备上,请登录 Chrome。</translation> <translation id="3157842584138209013">通过“更多选项”按钮查看您已节省多少数据流量</translation> <translation id="3166827708714933426">标签页和窗口快捷键</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">加载图片</translation> <translation id="3269956123044984603">要获取您在其他设备上的标签页,请在 Android 帐号设置部分开启“自动同步数据”。</translation> <translation id="3282568296779691940">登录 Chrome</translation> +<translation id="3288003805934695103">重新加载网页</translation> <translation id="32895400574683172">允许显示通知</translation> <translation id="3295530008794733555">浏览速度更快。耗用的流量更少。</translation> <translation id="3295602654194328831">隐藏信息</translation> @@ -370,6 +374,7 @@ <translation id="3819178904835489326">已删除 <ph name="NUMBER_OF_DOWNLOADS" /> 项下载内容</translation> <translation id="3819562311292413223">下载为您推荐的文章</translation> <translation id="3822502789641063741">要清除网站存储数据吗?</translation> +<translation id="385051799172605136">后退</translation> <translation id="3859306556332390985">前进</translation> <translation id="3894427358181296146">添加文件夹</translation> <translation id="3895926599014793903">强制启用缩放功能</translation> @@ -381,6 +386,7 @@ <translation id="3950820424414687140">登录</translation> <translation id="395206256282351086">搜索和网站建议已停用</translation> <translation id="3955193568934677022">允许网站播放受保护的内容(推荐)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{待准备就绪后,Chrome 即会加载您的网页}other{待准备就绪后,Chrome 即会加载您的网页}}</translation> <translation id="3963007978381181125">密码加密不包括 Google Pay 中的付款方式和地址。只有知道您密码的人才能读取您的已加密数据。系统不会将该密码发送给 Google,Google 也不会存储该密码。如果您忘记了密码或想更改此设置,则需重置同步设置。<ph name="BEGIN_LINK" />了解详情<ph name="END_LINK" /></translation> <translation id="3967822245660637423">下载完毕</translation> <translation id="397583555483684758">同步功能已停止工作</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">媒体</translation> <translation id="4278390842282768270">允许</translation> <translation id="429312253194641664">某个网站正在播放媒体内容</translation> +<translation id="4298388696830689168">已关联的网站</translation> <translation id="4307992518367153382">基本设置</translation> <translation id="4314815835985389558">管理同步数据</translation> <translation id="4351244548802238354">关闭对话框</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">如果您启用了“不跟踪”,您的浏览流量中将会包含一项请求。具体影响取决于网站是否会回应该请求以及如何解读该请求。 例如:某些网站在收到该请求后,可能会向您展示相应的广告(这些广告并不是根据您访问过的其他网站而展示的)。许多网站仍会出于一些目的收集并使用您的浏览数据,例如,为了提高安全性,为了提供相关内容、广告和推荐内容,以及为了生成报告统计信息。</translation> +<translation id="624789221780392884">有可用的更新</translation> <translation id="6255999984061454636">内容建议</translation> <translation id="6277522088822131679">打印该页面时出现问题,请重试。</translation> <translation id="6295158916970320988">所有网站</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">下载视频</translation> <translation id="6482749332252372425">未能成功下载 <ph name="FILE_NAME" />,因为存储空间不足。</translation> <translation id="6496823230996795692">如果您是首次使用<ph name="APP_NAME" />,则需连接到互联网。</translation> +<translation id="6508722015517270189">重新启动 Chrome</translation> <translation id="6527303717912515753">分享</translation> <translation id="6534565668554028783">Google 的响应速度太慢</translation> <translation id="6538442820324228105">已下载 <ph name="GBS" /> GB</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">正在等待 Google Play 服务完成更新</translation> <translation id="7189598951263744875">分享...</translation> <translation id="7191430249889272776">标签页已在后台打开。</translation> -<translation id="7221869452894271364">重新加载此页</translation> <translation id="723171743924126238">选择图片</translation> <translation id="7243308994586599757">选项在靠近屏幕底部的位置</translation> <translation id="7250468141469952378">已选择 <ph name="ITEM_COUNT" /> 项</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">时间范围</translation> <translation id="7851858861565204677">来自其他设备的同步</translation> <translation id="7854964836418414587">关闭“更多类似内容”列表</translation> +<translation id="7871791972254842204">以后再阅读并同意 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 的条款及条件</translation> <translation id="7875915731392087153">创建电子邮件</translation> <translation id="7876243839304621966">全部删除</translation> <translation id="7882131421121961860">未找到任何记录</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">继续</translation> <translation id="8209050860603202033">打开图片</translation> <translation id="8220488350232498290">下载内容已占用的空间:<ph name="GIGABYTES" /> GB</translation> +<translation id="8232956427053453090">保留数据</translation> <translation id="8249310407154411074">移至顶部</translation> <translation id="8250920743982581267">文档</translation> <translation id="825412236959742607">此网页占用的内存过多,因此 Chrome 移除了部分内容。</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">持卡人姓名</translation> <translation id="8604763363205185560">帮助改进 Chrome 并提高其安全性</translation> <translation id="8609465669617005112">上移</translation> +<translation id="8611192991944347781">管理数据</translation> <translation id="8616006591992756292">您的 Google 帐号在 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> 上可能有其他形式的浏览记录。</translation> <translation id="8617240290563765734">要打开下载的内容中指定的建议网址吗?</translation> <translation id="8636825310635137004">要在您的其他设备上访问您的标签页,请开启同步功能。</translation> <translation id="8641930654639604085">尽量屏蔽成人网站</translation> +<translation id="8655129584991699539">要清除数据,请前往 Chrome 的“设置”页面</translation> <translation id="8662811608048051533">您会从大多数网站退出。</translation> <translation id="8664979001105139458">文件名已存在</translation> <translation id="8676374126336081632">清除输入的内容</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">搜索联系人</translation> <translation id="869891660844655955">截止日期</translation> <translation id="8719023831149562936">无法传输当前的标签页</translation> +<translation id="8723954843026426558">我认同 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 的条款及条件、隐私权政策和撤消权</translation> <translation id="8725066075913043281">重试</translation> <translation id="8728487861892616501">使用此应用即表示您同意 Chrome 的<ph name="BEGIN_LINK1" />服务条款<ph name="END_LINK1" />和<ph name="BEGIN_LINK2" />隐私权声明<ph name="END_LINK2" />,以及<ph name="BEGIN_LINK3" />针对通过 Family Link 管理的 Google 帐号的隐私权声明<ph name="END_LINK3" />。</translation> <translation id="8730621377337864115">完成</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb index 44dd5f4..11232d6 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="zh-TW"> <translation id="1006017844123154345">在網路上開啟</translation> +<translation id="1023450834687746199">你已清除「<ph name="APP_NAME" />」的資料。</translation> <translation id="1036727731225946849">正在新增「<ph name="WEBAPK_NAME" />」...</translation> <translation id="1041308826830691739">來自網站</translation> <translation id="1049743911850919806">無痕模式</translation> @@ -142,6 +143,7 @@ <translation id="2017836877785168846">將歷史記錄和自動即時查詢從網址列中清除。</translation> <translation id="2021896219286479412">全螢幕網站控制</translation> <translation id="2038563949887743358">開啟「要求電腦版網站」</translation> +<translation id="204321170514947529">「<ph name="APP_NAME" />」在 Chrome 中也有資料</translation> <translation id="2045104531052923016">其他應用程式佔 <ph name="GIGABYTES" /> GB</translation> <translation id="2049574241039454490"><ph name="FILE_SIZE_OF_TOTAL" /> <ph name="SEPARATOR" /> <ph name="DESCRIPTION" /></translation> <translation id="2063713494490388661">輕觸搜尋</translation> @@ -165,7 +167,6 @@ <translation id="2154484045852737596">編輯卡片資訊</translation> <translation id="2154710561487035718">複製網址</translation> <translation id="2156074688469523661">其餘網站 (<ph name="NUMBER_OF_SITES" />)</translation> -<translation id="2173302385160625112">檢查你的網際網路連線</translation> <translation id="2197557662829090533">允許「數位健康」功能顯示你造訪過的網站</translation> <translation id="2206488550163399966"><ph name="APP_NAME" />,網路應用程式。<ph name="APP_URL" /></translation> <translation id="2227444325776770048">以<ph name="USER_FULL_NAME" />的身分繼續使用</translation> @@ -242,6 +243,7 @@ <translation id="2779651927720337254">失敗</translation> <translation id="2781151931089541271">還剩 1 秒</translation> <translation id="2784212955220061919">使用精簡模式時,Chrome 可加快網頁載入速度,並可節省多達百分之 60 的數據用量。Google 的雲端技術會透過最佳化功能來處理你所造訪的網頁。</translation> +<translation id="2785336755839207516">你已解除安裝「<ph name="APP_NAME" />」。</translation> <translation id="2803478378562657435">正在顯示已儲存的密碼和密碼選項</translation> <translation id="2810645512293415242">網頁內容經過簡化,不僅節省數據用量,更加快載入速度。</translation> <translation id="281504910091592009">你可以查看及管理 <ph name="BEGIN_LINK" />Google 帳戶<ph name="END_LINK" />中儲存的密碼</translation> @@ -283,6 +285,7 @@ <translation id="3115898365077584848">顯示資訊</translation> <translation id="3123473560110926937">在某些網站上設定封鎖</translation> <translation id="3137521801621304719">離開無痕模式</translation> +<translation id="3143515551205905069">取消同步處理</translation> <translation id="3148434565183091099">如要在所有裝置上使用您的書籤,請登入 Chrome。</translation> <translation id="3157842584138209013">如要查看節省的數據用量,請點選 [更多選項] 按鈕</translation> <translation id="3166827708714933426">分頁與視窗快速鍵</translation> @@ -301,6 +304,7 @@ <translation id="3269093882174072735">載入圖片</translation> <translation id="3269956123044984603">如要存取您在其他裝置上開啟的分頁,請前往 Android 帳戶設定開啟 [自動同步處理資料]。</translation> <translation id="3282568296779691940">登入 Chrome</translation> +<translation id="3288003805934695103">重新載入網頁</translation> <translation id="32895400574683172">允許顯示通知</translation> <translation id="3295530008794733555">瀏覽速度更快,數據用量更少。</translation> <translation id="3295602654194328831">隱藏資訊</translation> @@ -370,17 +374,19 @@ <translation id="3819178904835489326">已刪除 <ph name="NUMBER_OF_DOWNLOADS" /> 個下載項目</translation> <translation id="3819562311292413223">下載為你推薦的文章</translation> <translation id="3822502789641063741">要清除網站儲存的資料嗎?</translation> +<translation id="385051799172605136">返回</translation> <translation id="3859306556332390985">快轉到特定的播放時間點</translation> <translation id="3894427358181296146">新增資料夾</translation> <translation id="3895926599014793903">強制啟用縮放功能</translation> <translation id="3912508018559818924">正在從網路上尋找最佳內容…</translation> <translation id="3927692899758076493">Sans Serif</translation> <translation id="3928666092801078803">合併我的資料</translation> -<translation id="3934752326445182741">快速預覽圖片<ph name="BEGIN_NEW" />新功能<ph name="END_NEW" /></translation> +<translation id="3934752326445182741">快速預覽圖片 <ph name="BEGIN_NEW" />新功能<ph name="END_NEW" /></translation> <translation id="393697183122708255">沒有可用的語音搜尋功能</translation> <translation id="3950820424414687140">登入</translation> <translation id="395206256282351086">已停用搜尋與網站建議</translation> <translation id="3955193568934677022">允許網站播放受保護的內容 (建議)</translation> +<translation id="396192773038029076">{NUM_IN_PROGRESS,plural, =1{Chrome 準備就緒後將載入你的網頁}other{Chrome 準備就緒後將載入你的網頁}}</translation> <translation id="3963007978381181125">通關密語加密保護的資料不包括 Google Pay 的付款方式和地址。只有知道你通關密語的人,才能讀取加密保護的資料。系統不會將通關密語傳送給 Google,Google 也不會儲存通關密語。如果你忘記自己的通關密語,或是想變更這項設定,則必須重設同步功能。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation> <translation id="3967822245660637423">下載完成</translation> <translation id="397583555483684758">同步處理功能已停止運作</translation> @@ -431,6 +437,7 @@ <translation id="4275663329226226506">媒體</translation> <translation id="4278390842282768270">允許</translation> <translation id="429312253194641664">一個網站正在播放媒體內容</translation> +<translation id="4298388696830689168">連結的網站</translation> <translation id="4307992518367153382">基本選項</translation> <translation id="4314815835985389558">管理同步功能資料</translation> <translation id="4351244548802238354">關閉對話方塊</translation> @@ -699,6 +706,7 @@ <translation id="6232535412751077445">啟用「不追蹤」選項後,您的瀏覽流量會置入一項特定的要求,其作用則視網站是否回應要求,以及網站解讀要求的方式而定。 舉例來說,部分網站可能會以顯示廣告的方式回應這類要求,而這些廣告並非根據您所造訪的其他網站記錄而產生。許多網站仍會收集您的瀏覽資料,並將這些資料用於下列目的:提高網站安全性、在網站上提供更相關的內容、廣告和推薦項目,以及產生報告統計資料。</translation> +<translation id="624789221780392884">可進行更新</translation> <translation id="6255999984061454636">內容建議</translation> <translation id="6277522088822131679">列印網頁時發生問題,請再試一次。</translation> <translation id="6295158916970320988">所有網站</translation> @@ -734,6 +742,7 @@ <translation id="6475951671322991020">下載影片</translation> <translation id="6482749332252372425">儲存空間不足,因此無法下載 <ph name="FILE_NAME" />。</translation> <translation id="6496823230996795692">初次使用「<ph name="APP_NAME" />」時請連線至網際網路。</translation> +<translation id="6508722015517270189">重新啟動 Chrome</translation> <translation id="6527303717912515753">分享</translation> <translation id="6534565668554028783">Google 的回應時間過長</translation> <translation id="6538442820324228105">已下載 <ph name="GBS" /> GB</translation> @@ -832,7 +841,6 @@ <translation id="7189372733857464326">正在等待 Google Play 服務完成更新</translation> <translation id="7189598951263744875">分享...</translation> <translation id="7191430249889272776">已在背景開啟分頁。</translation> -<translation id="7221869452894271364">重新載入此頁</translation> <translation id="723171743924126238">選取圖片</translation> <translation id="7243308994586599757">選項在接近畫面底部的位置</translation> <translation id="7250468141469952378">已選取 <ph name="ITEM_COUNT" /> 個項目</translation> @@ -919,6 +927,7 @@ <translation id="784934925303690534">時間範圍</translation> <translation id="7851858861565204677">其他裝置</translation> <translation id="7854964836418414587">關閉「更多類似內容」</translation> +<translation id="7871791972254842204">稍後閱讀並同意 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 的條款及細則</translation> <translation id="7875915731392087153">建立電子郵件</translation> <translation id="7876243839304621966">全部移除</translation> <translation id="7882131421121961860">找不到瀏覽記錄</translation> @@ -969,6 +978,7 @@ <translation id="8200772114523450471">繼續</translation> <translation id="8209050860603202033">開啟圖片</translation> <translation id="8220488350232498290">下載內容佔 <ph name="GIGABYTES" /> GB</translation> +<translation id="8232956427053453090">保留資料</translation> <translation id="8249310407154411074">移至頂端</translation> <translation id="8250920743982581267">文件</translation> <translation id="825412236959742607">這個網頁使用了過多記憶體,因此 Chrome 移除了部分內容。</translation> @@ -1022,10 +1032,12 @@ <translation id="860043288473659153">持卡人姓名</translation> <translation id="8604763363205185560">協助改善 Chrome 及其安全性</translation> <translation id="8609465669617005112">上移</translation> +<translation id="8611192991944347781">管理資料</translation> <translation id="8616006591992756292">你的 Google 帳戶可能會儲存其他形式的瀏覽記錄,請參閱 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />。</translation> <translation id="8617240290563765734">開啟這項下載內容中指定的建議網址?</translation> <translation id="8636825310635137004">如要存取您在其他裝置上開啟的分頁,請開啟同步處理功能。</translation> <translation id="8641930654639604085">嘗試封鎖成人網站</translation> +<translation id="8655129584991699539">你可以在 Chrome 設定中清除資料</translation> <translation id="8662811608048051533">你會從大多數網站登出。</translation> <translation id="8664979001105139458">檔案名稱已存在</translation> <translation id="8676374126336081632">清除輸入</translation> @@ -1033,6 +1045,7 @@ <translation id="868929229000858085">搜尋聯絡人</translation> <translation id="869891660844655955">到期日</translation> <translation id="8719023831149562936">無法傳輸目前的分頁</translation> +<translation id="8723954843026426558">我同意 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 的條款及細則、隱私權政策和撤銷權</translation> <translation id="8725066075913043281">再試一次</translation> <translation id="8728487861892616501">使用這個應用程式即表示您同意接受 Chrome 的《<ph name="BEGIN_LINK1" />服務條款<ph name="END_LINK1" />》和《<ph name="BEGIN_LINK2" />隱私權聲明<ph name="END_LINK2" />》,以及《<ph name="BEGIN_LINK3" />透過 Family Link 管理的 Google 帳戶所適用的隱私權聲明<ph name="END_LINK3" />》。</translation> <translation id="8730621377337864115">完成</translation>
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni index 0a223150..c987f13 100644 --- a/chrome/android/java_sources.gni +++ b/chrome/android/java_sources.gni
@@ -139,13 +139,12 @@ "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantKeyboardCoordinator.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantModel.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantOnboardingCoordinator.java", - "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantOverlayCoordinator.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantClient.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantFacade.java", + "java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantMetrics.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java", "java/src/org/chromium/chrome/browser/autofill_assistant/FeedbackContext.java", - "java/src/org/chromium/chrome/browser/autofill_assistant/TouchEventFilterView.java", "java/src/org/chromium/chrome/browser/autofill_assistant/carousel/AssistantCarouselCoordinator.java", "java/src/org/chromium/chrome/browser/autofill_assistant/carousel/AssistantCarouselDelegate.java", "java/src/org/chromium/chrome/browser/autofill_assistant/carousel/AssistantCarouselModel.java", @@ -160,6 +159,9 @@ "java/src/org/chromium/chrome/browser/autofill_assistant/header/AssistantHeaderDelegate.java", "java/src/org/chromium/chrome/browser/autofill_assistant/header/AssistantHeaderModel.java", "java/src/org/chromium/chrome/browser/autofill_assistant/header/AssistantHeaderViewBinder.java", + "java/src/org/chromium/chrome/browser/autofill_assistant/overlay/AssistantOverlayCoordinator.java", + "java/src/org/chromium/chrome/browser/autofill_assistant/overlay/AssistantOverlayState.java", + "java/src/org/chromium/chrome/browser/autofill_assistant/overlay/TouchEventFilterView.java", "java/src/org/chromium/chrome/browser/autofill_assistant/payment/AssistantPaymentRequestCoordinator.java", "java/src/org/chromium/chrome/browser/autofill_assistant/payment/AutofillAssistantPaymentRequest.java", "java/src/org/chromium/chrome/browser/autofill_assistant/payment/PaymentRequestBottomBar.java",
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/PasswordAccessorySheetModernViewTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/PasswordAccessorySheetModernViewTest.java index 980b5d3..8ede5d97 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/PasswordAccessorySheetModernViewTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/PasswordAccessorySheetModernViewTest.java
@@ -124,9 +124,10 @@ CriteriaHelper.pollUiThread(Criteria.equals(1, () -> mView.get().getChildCount())); - assertThat(getNameSuggestion().getInnerTextView().getText(), is("Name Suggestion")); - assertThat(getPasswordSuggestion().getInnerTextView().getText(), is("Password Suggestion")); - assertThat(getPasswordSuggestion().getInnerTextView().getTransformationMethod(), + assertThat(getNameSuggestion().getPrimaryTextView().getText(), is("Name Suggestion")); + assertThat( + getPasswordSuggestion().getPrimaryTextView().getText(), is("Password Suggestion")); + assertThat(getPasswordSuggestion().getPrimaryTextView().getTransformationMethod(), instanceOf(PasswordTransformationMethod.class)); ThreadUtils.runOnUiThreadBlocking(getNameSuggestion()::performClick);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTest.java index f006648..ef76aa4 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTest.java
@@ -35,6 +35,7 @@ import org.chromium.chrome.browser.autofill_assistant.details.AssistantDetails; import org.chromium.chrome.browser.autofill_assistant.details.AssistantDetailsModel; import org.chromium.chrome.browser.autofill_assistant.header.AssistantHeaderModel; +import org.chromium.chrome.browser.autofill_assistant.overlay.AssistantOverlayState; import org.chromium.chrome.browser.customtabs.CustomTabActivity; import org.chromium.chrome.browser.customtabs.CustomTabActivityTestRule; import org.chromium.chrome.browser.customtabs.CustomTabsTestUtils; @@ -108,7 +109,10 @@ mCustomTabActivityTestRule.startCustomTabActivityWithIntent(createMinimalCustomTabIntent()); AssistantCoordinator assistantCoordinator = ThreadUtils.runOnUiThreadBlocking( - () -> new AssistantCoordinator(getActivity(), mCoordinatorDelegateMock)); + () + -> new AssistantCoordinator(getActivity(), + mCustomTabActivityTestRule.getWebContents(), + mCoordinatorDelegateMock)); // Bottom sheet is shown when creating the AssistantCoordinator. View bottomSheet = findViewByIdInMainCoordinator(R.id.autofill_assistant); @@ -134,7 +138,9 @@ // Show overlay. ThreadUtils.runOnUiThreadBlocking( - () -> assistantCoordinator.getOverlayCoordinator().showFullOverlay()); + () + -> assistantCoordinator.getOverlayCoordinator().setState( + AssistantOverlayState.full())); View overlay = bottomSheet.findViewById(R.id.touch_event_filter); Assert.assertTrue(overlay.isShown());
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/contacts_picker/OWNERS b/chrome/android/javatests/src/org/chromium/chrome/browser/contacts_picker/OWNERS new file mode 100644 index 0000000..478d375 --- /dev/null +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/contacts_picker/OWNERS
@@ -0,0 +1 @@ +file://chrome/android/java/src/org/chromium/chrome/browser/contacts_picker/OWNERS
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt index f27acbd..f2c21cd 100644 --- a/chrome/android/profiles/newest.txt +++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-74.0.3685.0_rc-r1.afdo.bz2 \ No newline at end of file +chromeos-chrome-amd64-74.0.3686.0_rc-r1.afdo.bz2 \ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_ml.xtb b/chrome/app/resources/chromium_strings_ml.xtb index 00a3287d..7eb9863 100644 --- a/chrome/app/resources/chromium_strings_ml.xtb +++ b/chrome/app/resources/chromium_strings_ml.xtb
@@ -78,7 +78,7 @@ <translation id="3479552764303398839">ഇപ്പോഴല്ല</translation> <translation id="3509308970982693815">എല്ലാ Chromium വിൻഡോകളും അടച്ചതിനുശേഷം വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="352783484088404971">Chromium-ൽ നിന്ന് നീക്കംചെയ്യുക...</translation> -<translation id="3575459661164320785">നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ ദോഷകരമായ സോഫ്റ്റ്വെയറുണ്ട്. നിങ്ങളുടെ ബ്രൗസർ വീണ്ടും സാധാരണ രീതിയിൽ പ്രവർത്തിക്കാൻ, Chromium-ത്തിന് ഇത് നീക്കം ചെയ്യാനും ക്രമീകരണം പുനഃസ്ഥാപിക്കാനും വിപുലീകരണം പ്രവർത്തനരഹിതമാക്കാനുമാവും.</translation> +<translation id="3575459661164320785">നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ ദോഷകരമായ സോഫ്റ്റ്വെയറുണ്ട്. നിങ്ങളുടെ ബ്രൗസർ വീണ്ടും സാധാരണ രീതിയിൽ പ്രവർത്തിക്കാൻ, Chromium-ന് ഇത് നീക്കം ചെയ്യാനും ക്രമീകരണം പുനഃസ്ഥാപിക്കാനും വിപുലീകരണം പ്രവർത്തനരഹിതമാക്കാനുമാവും.</translation> <translation id="3582788516608077514">Chromium അപ്ഡേറ്റുചെയ്യുന്നു...</translation> <translation id="358997566136285270">Chromium ലോഗോ</translation> <translation id="3639635944603682591">ഈ ഉപകരണത്തിൽ നിന്ന് ഈ വ്യക്തിയുടെ ബ്രൗസിംഗ് ഡാറ്റ ഇല്ലാതാക്കും. ഡാറ്റ വീണ്ടെടുക്കാൻ, <ph name="USER_EMAIL" /> എന്നതായി Chromium-ത്തിലേക്ക് സൈൻ ഇൻ ചെയ്യുക.</translation> @@ -185,7 +185,7 @@ <translation id="6857782730669500492">Chromium - <ph name="PAGE_TITLE" /></translation> <translation id="6863361426438995919">Google Pay (Chromium-ത്തിലേക്ക് പകർത്തി)</translation> <translation id="6893813176749746474">Chromium അപ്ഡേറ്റുചെയ്തു, എന്നാൽ കുറഞ്ഞത് 30 ദിവസം പോലും നിങ്ങൾ ഇത് ഉപയോഗിച്ചില്ല.</translation> -<translation id="692832138936263906">പേജിലെ ഉള്ളടക്കം കൂടുതൽ നന്നായി മനസ്സിലാക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നതിന്, പേജിലെ ചിത്രങ്ങൾ Google സെര്വറുകളിലേക്ക് അയയ്ക്കുന്നതിലൂടെ ഒരു ചിത്രത്തിലെ ചിത്രങ്ങളും ടെക്സ്റ്റും Chromium-ത്തിന് തിരിച്ചറിയാനാവും.</translation> +<translation id="692832138936263906">പേജിലെ ഉള്ളടക്കം കൂടുതൽ നന്നായി മനസ്സിലാക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നതിന്, പേജിലെ ചിത്രങ്ങൾ Google സെര്വറുകളിലേക്ക് അയയ്ക്കുന്നതിലൂടെ ഒരു ചിത്രത്തിലെ ചിത്രങ്ങളും ടെക്സ്റ്റും Chromium-ന് തിരിച്ചറിയാനാവും.</translation> <translation id="6964305034639999644">Chromium ആൾ&മാറാട്ട വിൻഡോയിൽ ലിങ്ക് തുറക്കുക</translation> <translation id="6970811910055250180">നിങ്ങളുടെ ഉപകരണം അപ്ഡേറ്റുചെയ്യുന്നു...</translation> <translation id="6990124437352146030">ഈ സൈറ്റിനായി, Chromium-ത്തിന് നിങ്ങളുടെ മൈക്രോഫോൺ ആക്സസ് ചെയ്യാനുള്ള അനുമതി ആവശ്യമാണ്</translation> @@ -216,7 +216,7 @@ <translation id="7471302858145901434">{0,plural, =1{Chromium OS ഒരു ദിവസത്തിനുള്ളിൽ പുനഃരാരംഭിക്കുക}other{Chromium OS # ദിവസത്തിനുള്ളിൽ പുനഃരാരംഭിക്കുക}}</translation> <translation id="7483335560992089831">നിലവിൽ പ്രവർത്തിച്ചു കൊണ്ടിരിക്കുന്ന Chromium-ത്തിന്റെ സമാന പതിപ്പ് ഇൻസ്റ്റാളുചെയ്യാൻ കഴിയില്ല. Chromium അടച്ചതിനുശേഷം വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="7549178288319965365">Chromium OS-നെക്കുറിച്ച്</translation> -<translation id="7561906087460245826">Chromium-ത്തിൽ നിന്നും ഡാറ്റ മായ്ക്കുക (<ph name="URL" />)</translation> +<translation id="7561906087460245826">Chromium-ൽ നിന്നും ഡാറ്റ മായ്ക്കുക (<ph name="URL" />)</translation> <translation id="761356813943268536">Chromium നിങ്ങളുടെ ക്യാമറയും മൈക്രോഫോണും ഉപയോഗിക്കുന്നു.</translation> <translation id="7617377681829253106">Chromium കൂടുതൽ മികച്ചതായി</translation> <translation id="7686590090926151193">നിങ്ങളുടെ ഡിഫോൾട്ട് ബ്രൗസർ Chromium അല്ല.</translation>
diff --git a/chrome/app/resources/chromium_strings_te.xtb b/chrome/app/resources/chromium_strings_te.xtb index 5778cae..d95447b8 100644 --- a/chrome/app/resources/chromium_strings_te.xtb +++ b/chrome/app/resources/chromium_strings_te.xtb
@@ -38,7 +38,7 @@ <translation id="2347108572062610441">ఈ పొడిగింపు మీరు Chromiumని ప్రారంభించినప్పుడు చూపబడే పేజీని మార్చింది.</translation> <translation id="2396765026452590966"><ph name="EXTENSION_NAME" /> పొడిగింపు మీరు Chromiumని ప్రారంభించినప్పుడు చూపబడే పేజీని మార్చింది.</translation> <translation id="2483889755041906834">Chromiumలో</translation> -<translation id="2485422356828889247">వ్యవస్థాపనను తీసివెయ్యి</translation> +<translation id="2485422356828889247">అన్ఇన్స్టాల్ చేయి</translation> <translation id="2527042973354814951"><ph name="PLUGIN_NAME" />ని ప్రారంభించడానికి Chromiumని పునఃప్రారంభించండి</translation> <translation id="2535480412977113886">మీ ఖాతా సైన్-ఇన్ వివరాల గడువు ముగిసినందున Chromium OS మీ డేటాను సమకాలీకరించలేకపోయింది.</translation> <translation id="2560420686485554789">ఫైల్లను డౌన్లోడ్ చేయడానికి Chromiumకు నిల్వ యాక్సెస్ అవసరం</translation> @@ -154,21 +154,21 @@ <translation id="6120345080069858279">Chromium ఈ పాస్వర్డ్ను మీ Google ఖాతాలో సేవ్ చేస్తుంది. మీరు దీనిని గుర్తుంచుకోవాల్సిన అవసరం లేదు.</translation> <translation id="6129621093834146363"><ph name="FILE_NAME" /> హానికరం, కావున Chromium దాన్ని బ్లాక్ చేసింది.</translation> <translation id="620022061217911843">అప్డేట్ని వర్తింపజేయడం కోసం మీరు Chromium OSని మళ్లీ ప్రారంభించాలని మీ నిర్వాహకుడు కోరుతున్నారు</translation> -<translation id="6212496753309875659">ఈ కంప్యూటర్ ఇప్పటికే మరింత తాజా Chromium వెర్షన్ని కలిగి ఉంది. సాఫ్ట్వేర్ పని చేయకుంటే, దయచేసి Chromiumని అన్ఇన్స్టాల్ చేసి, మళ్లీ ప్రయత్నించండి.</translation> +<translation id="6212496753309875659">ఈ కంప్యూటర్లో ఇదివరకే మరింత తాజాదైన Chromium వెర్షన్ ఉంది. సాఫ్ట్వేర్ పని చేయకపోతే, దయచేసి Chromiumను అన్ఇన్స్టాల్ చేసి, మళ్లీ ప్రయత్నించండి.</translation> <translation id="6248213926982192922">Chromiumను డిఫాల్ట్ బ్రౌజర్గా చేయి</translation> <translation id="6268381023930128611">Chromium నుండి సైన్ అవుట్ చేయాలా?</translation> <translation id="6295779123002464101"><ph name="FILE_NAME" /> హానికరం కావచ్చు, కావున Chromium దాన్ని బ్లాక్ చేసింది.</translation> <translation id="6309712487085796862">Chromium మీ కెమెరాను ఉపయోగిస్తోంది.</translation> <translation id="6333502561965082103">Chromiumలో మరొక వ్యవస్థాపన జరుగుతోంది. దయచేసి తర్వాత మళ్లీ ప్రయత్నించండి.</translation> <translation id="6334986366598267305">ఇప్పుడు మీ Google ఖాతాతో, షేర్ చేయబడిన కంప్యూటర్లలో Chromiumను సులభంగా ఉపయోగించవచ్చు.</translation> -<translation id="6373523479360886564">మీరు Chromiumని అన్ఇన్స్టాల్ చేయాలనుకుంటున్నారా?</translation> +<translation id="6373523479360886564">మీరు ఖచ్చితంగా Chromiumను అన్ఇన్స్టాల్ చేయాలనుకుంటున్నారా?</translation> <translation id="6400072781405947421">Chromiumకి ఇప్పుడు Mac OS X 10.9లో మద్దతు లేనందున ఇది సరిగ్గా పని చేయకపోవచ్చు.</translation> <translation id="6403826409255603130">Chromium అనేది మెరుపు వేగంతో వెబ్పేజీలను మరియు యాప్లను అమలు చేసే వెబ్ బ్రౌజర్. ఇది వేగవంతమైనది, స్థిరమైనది మరియు ఉపయోగించడానికి సులభమైనది. Chromiumలో అంతర్గతంగా అందజేసే 'మాల్వేర్ మరియు ఫిషింగ్ రక్షణ'తో మరింత సురక్షితంగా వెబ్లో బ్రౌజ్ చేయండి.</translation> <translation id="6434250628340475518">Chromium OS సిస్టమ్</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 సెకనులో పునఃప్రారంభమవుతుంది}other{Chromium # సెకన్లలో పునఃప్రారంభమవుతుంది}}</translation> <translation id="6475912303565314141">ఇది మీరు Chromiumని ప్రారంభించేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation> <translation id="6485906693002546646">మీరు మీ Chromium అంశాలను సింక్ చేయడానికి <ph name="PROFILE_EMAIL" />ను ఉపయోగిస్తున్నారు. మీ సింక్ ప్రాధాన్యతను అప్డేట్ చేయడానికి లేదా Google ఖాతా లేకుండా Chromiumను ఉపయోగించడానికి, <ph name="SETTINGS_LINK" />ను సందర్శించండి.</translation> -<translation id="6510925080656968729">Chromiumని అన్ఇన్స్టాల్ చేయి</translation> +<translation id="6510925080656968729">Chromiumను అన్ఇన్స్టాల్ చేయి</translation> <translation id="6570579332384693436">అక్షరక్రమ లోపాలను పరిష్కరించడానికి, మీరు వచన ఫీల్డ్లలో టైప్ చేసే వచనాన్ని, Chromium Googleకి పంపుతుంది</translation> <translation id="6598877126913850652">Chromium నోటిఫికేషన్ సెట్టింగ్లకు వెళ్లు</translation> <translation id="6676384891291319759">ఇంటర్నెట్ను యాక్సెస్ చేయండి</translation> @@ -214,7 +214,7 @@ <translation id="761356813943268536">Chromium మీ కెమెరా మరియు మైక్రోఫోన్ని ఉపయోగిస్తోంది.</translation> <translation id="7617377681829253106">Chromium ఇప్పుడు మెరుగైంది</translation> <translation id="7686590090926151193">Chromium మీ డిఫాల్ట్ బ్రౌజర్ కాదు</translation> -<translation id="7689606757190482937">మీ పరికరాల అంతటా Chromiumని సమకాలీకరించండి మరియు వ్యక్తిగతీకరించండి</translation> +<translation id="7689606757190482937">మీ పరికరాల అంతటా Chromiumను సింక్ చేయండి మరియు వ్యక్తిగతీకరించండి</translation> <translation id="7729447699958282447">Chromium మీ డేటాను సమకాలీకరించలేకపోయింది ఎందుకంటే మీ డొమైన్కు సమకాలీకరణ అందుబాటులో లేదు.</translation> <translation id="7745317241717453663">ఇది ఈ పరికరం నుండి మీ బ్రౌజింగ్ డేటాను తొలగిస్తుంది. మీ డేటాను తర్వాత తిరిగి పొందడానికి, Chromiumకి <ph name="USER_EMAIL" /> లాగా సైన్ ఇన్ చేయండి.</translation> <translation id="7747138024166251722">ఇన్స్టాలర్ ఒక తాత్కాలిక డైరక్టరీని సృష్టించలేకపోయింది. సాఫ్ట్వేర్ను ఇన్స్టాల్ చేయడానికి దయచేసి డిస్క్కు సంబంధించి నిల్వ, అనుమతిని తనిఖీ చేయండి.</translation> @@ -233,7 +233,7 @@ <translation id="8222496066431494154">మీ ఫోన్లో Chromiumను ఇన్స్టాల్ చేయండి. మేము మీ ఖాతా పునరుద్ధరణ ఫోన్ నంబర్కు SMS పంపుతాము: <ph name="PHONE_NUMBER" /></translation> <translation id="8269379391216269538">Chromiumని మెరుగుపరచడంలో సహాయం అందించండి</translation> <translation id="8290862415967981663">ఈ ఫైల్ అపాయకరం కావచ్చు, కాబట్టి Chromium దీన్ని బ్లాక్ చేసింది.</translation> -<translation id="8330519371938183845">మీ పరికరాల అంతటా Chromiumని సమకాలీకరించడం మరియు వ్యక్తిగతీకరించడం కోసం సైన్ ఇన్ చేయండి</translation> +<translation id="8330519371938183845">మీ పరికరాల అంతటా Chromiumను సింక్ చేయడం మరియు వ్యక్తిగతీకరించడం కోసం సైన్ ఇన్ చేయండి</translation> <translation id="8340674089072921962"><ph name="USER_EMAIL_ADDRESS" /> మునుపు Chromiumని ఉపయోగించింది</translation> <translation id="8375950122744241554">Chromium 70తో మొదలు పెట్టి, తర్వాతి వెర్షన్లలో పర్యవేక్షించబడే వినియోగదారు ప్రొఫైల్లు ఇకపై అందుబాటులో ఉండవు.</translation> <translation id="8379713241968949941">{0,plural, =1{ఒక గంటలో Chromium తిరిగి ప్రారంభించబడుతుంది}other{# గంటల్లో Chromium తిరిగి ప్రారంభించబడుతుంది}}</translation> @@ -245,7 +245,7 @@ <translation id="8619360774459241877">Chromiumని ప్రారంభిస్తోంది...</translation> <translation id="8621669128220841554">పేర్కొనబడలేని లోపం కారణంగా ఇన్స్టాలేషన్ విఫలమైంది. దయచేసి Chromiumని మళ్లీ డౌన్లోడ్ చేయండి.</translation> <translation id="8667808506758191620">మీ <ph name="DEVICE_TYPE" /> ఆధునికంగా ఉంది.</translation> -<translation id="8697124171261953979">ఇది మీరు Chromiumని ప్రారంభించేటప్పుడు లేదా ఓమ్నిపెట్టె నుండి శోధించేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation> +<translation id="8697124171261953979">ఇది మీరు Chromiumను ప్రారంభించేటప్పుడు లేదా ఓమ్నిబాక్స్ నుండి వెతికేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation> <translation id="8704119203788522458">ఇది మీ Chromium</translation> <translation id="8796602469536043152">ఈ సైట్ కోసం మీ కెమెరా మరియు మైక్రోఫోన్ను యాక్సెస్ చేయడానికి Chromiumకు అనుమతి అవసరం</translation> <translation id="8803635938069941624">Chromium OS నిబంధనలు</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-TW.xtb b/chrome/app/resources/chromium_strings_zh-TW.xtb index ae263ae..a8fe49e 100644 --- a/chrome/app/resources/chromium_strings_zh-TW.xtb +++ b/chrome/app/resources/chromium_strings_zh-TW.xtb
@@ -214,7 +214,7 @@ <translation id="7471302858145901434">{0,plural, =1{在 1 天內重新啟動 Chromium 作業系統}other{在 # 天內重新啟動 Chromium 作業系統}}</translation> <translation id="7483335560992089831">無法安裝這個版本的 Chromium,因為目前正在執行相同版本。請關閉 Chromium,然後再試一次。</translation> <translation id="7549178288319965365">關於 Chromium 作業系統</translation> -<translation id="7561906087460245826">一併清除 Chromium 的資料 (<ph name="URL" />)</translation> +<translation id="7561906087460245826">一併清除 Chromium 中的資料 (<ph name="URL" />)</translation> <translation id="761356813943268536">Chromium 正在使用你的攝影機和麥克風。</translation> <translation id="7617377681829253106">Chromium 變得更進步了</translation> <translation id="7686590090926151193">Chromium 不是你的預設瀏覽器</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb index e3f04e79..c08e4474 100644 --- a/chrome/app/resources/generated_resources_am.xtb +++ b/chrome/app/resources/generated_resources_am.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">ትልቅ የመዳፊት ጠቋሚ</translation> <translation id="1538729222189715449">የLinux ፋይሎችን በመክፈት ላይ...</translation> <translation id="1540605929960647700">የማሳያ ሁነታውን ያንቁ</translation> +<translation id="1541396123399225659">ወደ አዲስ ቡድን ያክሉ</translation> <translation id="1542514202066550870">ይህ ትር የVR ይዘትን ወደ የጆሮ ማዳመጫ በማቅረብ ላይ ነው።</translation> <translation id="1543284117603151572">ከEdge ላይ የመጣ</translation> <translation id="1545177026077493356">ራስ-ሰር የኪዮስክ ሁነታ</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">ቅርጸት በመስራት ላይ...</translation> <translation id="159359590073980872">የምስል መሸጎጫ</translation> <translation id="1593926297800505364">የመክፈያ ዘዴን አስቀምጥ</translation> +<translation id="1595492813686795610">Linux እያላቀ ነው</translation> <translation id="1598233202702788831">ዝማኔዎች በእርስዎ አስተዳዳሪ ተሰናክሏል።</translation> <translation id="1600857548979126453">የገጽ አራሚ ደጀኑን ይደርስበታል</translation> <translation id="1601560923496285236">ተግብር</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">ገጽታን አንቃ</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">በChrome የድር መደብር ውስጥ ይመልከቱ</translation> -<translation id="1761588866118490543">የድምፅ ሞዴል</translation> <translation id="176193854664720708">የጣት አሻራ ዳሳሹ በኃይል አዝራሩ ውስጥ ነው። በማንኛውም ጣት ቀስ ብለው ይንኩት።</translation> <translation id="1763046204212875858">የመተግበሪያ አቋራጮችን ፍጠር</translation> <translation id="1763108912552529023">ማሰሱን ቀጥል</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">የስርዓት መገናኛ ተጠቅመው ያትሙ... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">ከመላክ በፊት ጠይቅ (የሚመከር)</translation> <translation id="2384436799579181135">አንድ ስህተት ተከስቷል። እባክዎ የእርስዎን አታሚ ያረጋግጡና እንደገና ይሞክሩ።</translation> +<translation id="2386926718981642523">«Ok Google» ባሉ ማንኛውም ጊዜ ረዳትዎን ይድረሱ</translation> <translation id="2387458720915042159">የተኪ ግንኙነት አይነት</translation> <translation id="2391419135980381625">መደበኛ ቅርጸ-ቁምፊ</translation> <translation id="2391762656119864333">ሻር</translation> @@ -1042,6 +1044,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> ከ<ph name="NETWORK_ID" /> ጋር ሊገናኝ አልቻለም። እባክዎ ሌላ አውታረ መረብ ይሞክሩ ወይም እንደገና ይሞክሩ።</translation> <translation id="2553440850688409052">ይህን ተሰኪ ደብቅ</translation> <translation id="2554553592469060349">የተመረጠው ፋይል በጣም ትልቅ ነው (ከፍተኛ የፋይል መጠን፦ 3 ሜባ)።</translation> +<translation id="255747371423522804">ወደ ነባሩ ቡድን አክል</translation> <translation id="2558896001721082624">በሥርዓት ምናሌ ውስጥ የተደራሽነት አማራጮችን ሁልጊዜ አሳይ</translation> <translation id="2562685439590298522">ሰነዶች</translation> <translation id="2562743677925229011"><ph name="SHORT_PRODUCT_NAME" /> ውስጥ አልገቡም</translation> @@ -1314,6 +1317,7 @@ <translation id="2972581237482394796">&ድገም</translation> <translation id="2972642118232180842">አስፈላጊ ይዘትን ብቻ አሂድ (የሚመከር)</translation> <translation id="2973324205039581528">ጣቢያ ላይ ድምፀ-ከል አድርግ</translation> +<translation id="2977480621796371840">ከቡድን አስወግድ</translation> <translation id="2979639724566107830">በአዲስ መስኮት ክፈት</translation> <translation id="2981113813906970160">ትልቅ የመዳፊት ጠቋሚ አሳይ</translation> <translation id="2982970937345031">ስም-አልባ ሆነው ሪፖርት ያድርጉ</translation> @@ -1564,6 +1568,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">መለያ</translation> <translation id="3389312115541230716">በተግባር አሞሌው ላይ የ<ph name="SMALL_PRODUCT_LOGO" /> አዶን ቀኝ ጠቅ ያድርጉ</translation> +<translation id="3393352139658145068">የሆነ ሰው «Ok Google» ሲል ረዳቱን ያግብሩ። ባትሪን ለመቆጠብ ሲባል «Ok Google» የሚበራው መሣሪያዎ ከኃይል ምንጭ ጋር ሲገናኝ ብቻ ነው።</translation> <translation id="3396800784455899911">የ«እስማማለሁ እና ቀጥል» አዝራርን ጠቅ በማድረግ ለእነዚህ የGoogle አገልግሎቶች ከላይ በተብራራው ማስሄድ መስማማትዎን ያረጋግጣሉ።</translation> <translation id="3399432415385675819">ማሳወቂያዎች ይሰናከላሉ</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />፣ <ph name="TIME_LEFT" /></translation> @@ -3164,6 +3169,7 @@ <translation id="5816434091619127343">የተጠየቁት የአታሚ ለውጦች አታሚው ጥቅም እንዳይሰጥ ያደርጉታል።</translation> <translation id="5817918615728894473">አጣምር</translation> <translation id="5821565227679781414">አቋራጭ ፍጠር</translation> +<translation id="5825412242012995131">በርቷል (የሚመከር)</translation> <translation id="5826507051599432481">የጋር ስም (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">በማተም ላይ...</translation> @@ -3707,6 +3713,11 @@ <translation id="6629841649550503054">ሁሉም ወደ <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> በምትኬ ተቀምጠዋል!</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> እርስዎን ወክሎ እራሱን ለማረጋገጥ የአንድ እውቅና ማረጋገጫ ዘላቂ መዳረሻ ይፈልጋል።</translation> <translation id="6635956300022133031">የጽሑፍ-ወደ-ንግግር ድምጾችን ይምረጡና ያብጁ</translation> +<translation id="6637585982786704944">የእርስዎ ፈቃድ ያላቸው መተግበሪያዎች እና ድር ጣቢያዎች በአግባቡ ለመስራት የሚያስፈልጋቸውን የመለያ መረጃ ለመድረስ የእርስዎ ፈቃድ አላቸው። + + መለያ ማከል ካልፈለጉ እንደ እንግዳ ሆነው ይግቡ ወይም ለድር አሰሳ ማንነት የማያሳውቅ መስኮት ይክፈቱ። + + ወደ ቅንብሮች -> የGoogle መለያዎች መሄድና ሁሉንም መለያዎች ማቀናበር ይችላሉ።</translation> <translation id="6639554308659482635">ኤስኪውላይት ማህደረ ትውስታ</translation> <translation id="6641138807883536517">በዘፈቀደ የመነጨው ደህንነቱ የተጠበቀ ሞዱል ይለፍ ቃል አይገኝም። ይሄ ከአንድ Powerwash በኋላ የሚከሰት የተለመደ ነገር ነው።</translation> <translation id="6643016212128521049">አጽዳ</translation> @@ -3908,6 +3919,7 @@ <translation id="6957231940976260713">የአገልግሎት ስም</translation> <translation id="696203921837389374">በሞባይል ውሂብ ላይ ማመሳሰልን አንቃ</translation> <translation id="6964390816189577014">ጀግና</translation> +<translation id="6964760285928603117">ከቡድን አስወግድ</translation> <translation id="6965382102122355670">እሺ</translation> <translation id="6965648386495488594">ወደብ</translation> <translation id="6965978654500191972">መሣሪያ</translation> @@ -4017,6 +4029,7 @@ <translation id="7109543803214225826">አቋራጭ ተወግዷል</translation> <translation id="7113502843173351041">የኢሜይል አድራሻዎን ያውቃል</translation> <translation id="7114054701490058191">የይለፍ ቃላት አይዛመዱም</translation> +<translation id="7114648273807173152">Smart Lockን ተጠቅመው ወደ የGoogle መለያዎ ለመግባት ወደ ቅንብሮች > የተገናኙ መሣሪያዎች > የእርስዎ ስልክ > Smart Lock ይሂዱ።</translation> <translation id="7117228822971127758">እባክዎ ቆይተው እንደገና ይሞክሩ</translation> <translation id="7117247127439884114">እንደገና ይግቡ...</translation> <translation id="711840821796638741">የሚቀናበሩ ዕልባቶችን አሳይ</translation> @@ -4172,6 +4185,7 @@ <translation id="7348093485538360975">የታይታ የቁልፍ ሰሌዳ</translation> <translation id="7352651011704765696">የሆነ ችግር ተፈጥሯል</translation> <translation id="735361434055555355">Linuxን በመጫን ላይ...</translation> +<translation id="7353887511974462734">ወደ ነባር ቡድን አክል</translation> <translation id="735745346212279324">የቪ ፒ ኤን ግንኙነት ተቋርጧል</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" /> ንጥሎችን በመቅዳት ላይ...</translation> <translation id="7359588939039777303">ማስታወቂያዎች ታግደዋል።</translation> @@ -4234,7 +4248,6 @@ <translation id="7456847797759667638">የተቀመጠበትን ቦታ ክፈት…</translation> <translation id="7461924472993315131">ሰካ</translation> <translation id="7463006580194749499">ሰው አክል</translation> -<translation id="7464902436585505072">የ«Ok Google» ድምፅ ሞዴል</translation> <translation id="7465778193084373987">የNetscape ሰርቲፊኬት የመሻሪያ URL</translation> <translation id="7469894403370665791">ከዚህ አውታረ መረብ ጋር በራስ-ሰር ይገናኙ</translation> <translation id="747114903913869239">ስህተት፦ ቅጥያዎችን ዲኮድ ማድረግ አልተቻለም</translation> @@ -4808,6 +4821,7 @@ <translation id="827097179112817503">መነሻ አዝራር አሳይ</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 እልባት ተሰርዟል}one{# እልባቶች ተሰርዘዋል}other{# እልባቶች ተሰርዘዋል}}</translation> <translation id="8272443605911821513">በ«ተጨማሪ መሣሪያዎች» ምናሌው ውስጥ ቅጥያዎች የሚለውን ጠቅ በማድረግ ቅጥያዎችዎን ያቀናብሩ።</translation> +<translation id="8272966760965438857">የGoogle መለያዎችዎን በአንዲት ቦታ ላይ ያቀናብሯቸው</translation> <translation id="8274332263553132018">ፋይል Cast ያድርጉ</translation> <translation id="8274924778568117936">ዝማኔው እስኪጨርስ ድረስ የእርስዎን <ph name="DEVICE_TYPE" /> አያጥፉት ወይም አይዝጉት። መጫኑ ከተጠናቀቀ በኋላ የእርስዎ <ph name="DEVICE_TYPE" /> ዳግም ይነሳል።</translation> <translation id="8275038454117074363">ከውጭ አስመጣ</translation> @@ -5194,6 +5208,7 @@ <translation id="8883847527783433352">ከሌላ መለያ ጋር ያስምሩ</translation> <translation id="8885197664446363138">Smart Lock ሊገኝ አይችልም</translation> <translation id="88870264962436283">የንክኪ መታወቂያን በ<ph name="APP_NAME" /> ይጠቀሙ</translation> +<translation id="8888253246822647887">ማላቁ ሲያልቅ መተግበሪያዎ ይከፈታል ማላቆች ጥቂት ደቂቃዎችን ሊወስዱ ይችላሉ</translation> <translation id="8888432776533519951">ቀለም፦</translation> <translation id="8890516388109605451">ምንጮች</translation> <translation id="8892168913673237979">ሁሉም ዝግጁ!</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb index 89a90d00..91869c0 100644 --- a/chrome/app/resources/generated_resources_ar.xtb +++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">مؤشر الماوس الكبير</translation> <translation id="1538729222189715449">جارٍ فتح ملفات نظام التشغيل Linux...</translation> <translation id="1540605929960647700">تفعيل الوضع التجريبي</translation> +<translation id="1541396123399225659">إضافة إلى مجموعة جديدة</translation> <translation id="1542514202066550870">تقدم علامة التبويب هذه محتوى VR إلى سماعة رأس.</translation> <translation id="1543284117603151572">تم الاستيراد من شبكة Edge</translation> <translation id="1545177026077493356">وضع الكشك التلقائي</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">جارٍ التهيئة...</translation> <translation id="159359590073980872">ذاكرة التخزين المؤقت للصور</translation> <translation id="1593926297800505364">حفظ طريقة الدفع</translation> +<translation id="1595492813686795610">جارٍ ترقية Linux</translation> <translation id="1598233202702788831">أوقف المشرف التحديثات.</translation> <translation id="1600857548979126453">الدخول إلى الواجهة الخلفية لبرنامج تصحيح خلل الصفحة</translation> <translation id="1601560923496285236">تطبيق</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">تفعيل المظهر</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">العرض في سوق Chrome الإلكتروني</translation> -<translation id="1761588866118490543">النموذج الصوتي</translation> <translation id="176193854664720708">يتوفَّر مستشعر بصمات الإصبع في زر التشغيل. يمكنك لمسه برفقٍ بأي إصبع.</translation> <translation id="1763046204212875858">إنشاء اختصارات للتطبيق</translation> <translation id="1763108912552529023">متابعة الاستكشاف</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">الطباعة باستخدام مربع حوار النظام... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">اسأل قبل الإرسال (موصى به)</translation> <translation id="2384436799579181135">حدث خطأ ما. يُرجى التحقق من الطابعة وإعادة المحاولة.</translation> +<translation id="2386926718981642523">يمكنك الوصول إلى "مساعد Google" في أي وقت تنطق فيه عبارة "Ok Google".</translation> <translation id="2387458720915042159">نوع الاتصال بالخادم الوكيل</translation> <translation id="2391419135980381625">الخط القياسي</translation> <translation id="2391762656119864333">إبطال</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190">تعذر على <ph name="PRODUCT_NAME" /> الاتصال بـ <ph name="NETWORK_ID" />. يُرجى تحديد شبكة أخرى أو إعادة المحاولة.</translation> <translation id="2553440850688409052">إخفاء هذا المكون الإضافي</translation> <translation id="2554553592469060349">الملف المحدد كبير جدًا (الحد الأقصى للحجم: 3 ميغابايت).</translation> +<translation id="255747371423522804">الإضافة إلى مجموعة حالية</translation> <translation id="2558896001721082624">عرض خيارات إمكانية الوصول في قائمة النظام دائمًا</translation> <translation id="2562685439590298522">المستندات</translation> <translation id="2562743677925229011">لم يتم تسجيل الدخول إلى <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1314,6 +1317,7 @@ <translation id="2972581237482394796">إعا&دة</translation> <translation id="2972642118232180842">تشغيل المحتوى المهم فقط (موصى به)</translation> <translation id="2973324205039581528">تجاهل الموقع</translation> +<translation id="2977480621796371840">إزالة من مجموعة</translation> <translation id="2979639724566107830">فتح الإشارة في نافذة جديدة</translation> <translation id="2981113813906970160">عرض مؤشر الماوس الكبير</translation> <translation id="2982970937345031">إرسال التقرير بدون الكشف عن هويتك</translation> @@ -1563,6 +1567,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">فاصل</translation> <translation id="3389312115541230716">انقر بزر الماوس الأيمن على رمز <ph name="SMALL_PRODUCT_LOGO" /> في شريط المهام</translation> +<translation id="3393352139658145068">يُرجى تفعيل "مساعد Google" عندما ينطق مستخدم عبارة “Ok Google”. ولتوفير شحن البطارية، يتم تفعيل “Ok Google” عند توصيل الجهاز بمصدر طاقة.</translation> <translation id="3396800784455899911">بالنقر على الزر "قبول ومتابعة"، فأنت توافق على المعالجة الموضّحة أعلاه لخدمات Google هذه.</translation> <translation id="3399432415385675819">سيتم إيقاف الإشعارات</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />، <ph name="TIME_LEFT" /></translation> @@ -2107,7 +2112,7 @@ <translation id="4193154014135846272">مستند Google</translation> <translation id="4194570336751258953">تفعيل الضغط للنقر</translation> <translation id="4195249722193633765">تثبيت التطبيق باستخدام Linux (إصدار تجريبي)</translation> -<translation id="4195643157523330669">فتح الإشارة في علامة تبويب جديدة</translation> +<translation id="4195643157523330669">فتح في علامة تبويب جديدة</translation> <translation id="4195814663415092787">المتابعة من حيث توقفت</translation> <translation id="4197674956721858839">تحديد ملف مضغوط</translation> <translation id="4198146608511578238">ما عليك سوى الضغط على رمز Launcher باستمرار للتحدث إلى مساعد Google.</translation> @@ -3162,6 +3167,7 @@ <translation id="5816434091619127343">تغييرات الطابعة المطلوبة تجعل الطابعة غير قابلة للاستخدام.</translation> <translation id="5817918615728894473">إقران</translation> <translation id="5821565227679781414">إنشاء اختصار</translation> +<translation id="5825412242012995131">تفعيل (مُقترح)</translation> <translation id="5826507051599432481">الاسم الشائع (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">الطباعة جارية...</translation> @@ -3707,6 +3713,11 @@ <translation id="6629841649550503054">تم نسخ جميع العناصر احتياطيًا في <ph name="BEGIN_LINK" />Google Drive.<ph name="END_LINK" /></translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> يريد وصولاً دائمًا إلى شهادة للمصادقة الذاتية نيابةً عنك.</translation> <translation id="6635956300022133031">اختيار إعدادات الصوت في ميزة تحويل النص إلى كلام وتخصيصها</translation> +<translation id="6637585982786704944">يمكن للتطبيقات والمواقع الإلكترونية التي تمنحها إذن الوصول إلى معلومات الحساب التي تحتاج إليها للعمل بشكلٍ صحيح. + + في حال لم ترغب في إضافة حساب، يُرجى تسجيل الدخول كضيف أو فتح نافذة التصفُّح المتخفي لتصفًّح الويب. + + يمكنك الانتقال إلى "الإعدادات" -> "حسابات Google" لعرض جميع الحسابات وإدارتها.</translation> <translation id="6639554308659482635">ذاكرة SQLite</translation> <translation id="6641138807883536517">كلمة مرور الوحدة الآمنة التي تم إنشاؤها عشوائيًا غير متاحة. ويعد ذلك أمرًا عاديًا بعد إجراء Powerwash.</translation> <translation id="6643016212128521049">محو</translation> @@ -3908,6 +3919,7 @@ <translation id="6957231940976260713">اسم الخدمة</translation> <translation id="696203921837389374">تفعيل المزامنة عبر بيانات الجوّال</translation> <translation id="6964390816189577014">بطل</translation> +<translation id="6964760285928603117">إزالة من مجموعة</translation> <translation id="6965382102122355670">موافق</translation> <translation id="6965648386495488594">المنفذ</translation> <translation id="6965978654500191972">جهاز</translation> @@ -4017,6 +4029,7 @@ <translation id="7109543803214225826">تمت إزالة الاختصار</translation> <translation id="7113502843173351041">معرفة عنوان بريدك الإلكتروني</translation> <translation id="7114054701490058191">كلمات المرور غير متطابقة</translation> +<translation id="7114648273807173152">لاستخدام Smart Lock لتسجيل الدخول إلى حسابك على Google، يمكنك الانتقال إلى "الإعدادات" > "الأجهزة المتصلة" > "هاتفك" > Smart Lock.</translation> <translation id="7117228822971127758">يُرجى إعادة المحاولة لاحقًا</translation> <translation id="7117247127439884114">تسجيل الدخول مرة أخرى...</translation> <translation id="711840821796638741">عرض الإشارات المرجعية المدارة</translation> @@ -4057,7 +4070,7 @@ <translation id="7171559745792467651">تثبيت التطبيقات من أجهزتك الأخرى</translation> <translation id="7175037578838465313">تهيئة <ph name="NAME" /></translation> <translation id="7175353351958621980">تم التحميل من:</translation> -<translation id="7180611975245234373">تحديث</translation> +<translation id="7180611975245234373">إعادة التحميل</translation> <translation id="7180865173735832675">تخصيص</translation> <translation id="7182359331070524176">اختيار ألبوم من "صور Google"</translation> <translation id="7186088072322679094">البقاء مثبتًا في شريط الأدوات</translation> @@ -4172,6 +4185,7 @@ <translation id="7348093485538360975">لوحة المفاتيح على الشاشة</translation> <translation id="7352651011704765696">حدث خطأ ما</translation> <translation id="735361434055555355">جارٍ تثبيت نظام التشغيل Linux...</translation> +<translation id="7353887511974462734">الإضافة إلى مجموعة حالية</translation> <translation id="735745346212279324">تم قطع اتصال الشبكة الافتراضية الخاصة</translation> <translation id="7359359531237882347">جارٍ نسخ <ph name="NUMBER_OF_ITEMS" /> من العناصر...</translation> <translation id="7359588939039777303">تم حظر الإعلانات.</translation> @@ -4234,7 +4248,6 @@ <translation id="7456847797759667638">فتح موقع...</translation> <translation id="7461924472993315131">تثبيت</translation> <translation id="7463006580194749499">إضافة شخص</translation> -<translation id="7464902436585505072">النموذج الصوتي لعبارة "Ok Google"</translation> <translation id="7465778193084373987">عنوان URL لإبطال شهادة Netscape</translation> <translation id="7469894403370665791">الاتصال بهذه الشبكة تلقائيًا</translation> <translation id="747114903913869239">خطأ: تعذر فك تشفير الإضافة</translation> @@ -4804,6 +4817,7 @@ <translation id="827097179112817503">عرض زر الصفحة الرئيسية</translation> <translation id="8271246892936492311">{COUNT,plural, =1{تم حذف إشارة مرجعية واحدة}zero{تم حذف # إشارة مرجعية}two{تم حذف إشارتين مرجعيتين (#)}few{تم حذف # إشارات مرجعية}many{تم حذف # إشارةً مرجعيةً}other{تم حذف # إشارة مرجعية}}</translation> <translation id="8272443605911821513">يمكنك إدارة الإضافات من خلال النقر على "الإضافات" في قائمة "المزيد من الأدوات".</translation> +<translation id="8272966760965438857">إدارة حساباتك على Google في مكان واحد</translation> <translation id="8274332263553132018">إرسال الملف</translation> <translation id="8274924778568117936">لا توقف تشغيل جهاز <ph name="DEVICE_TYPE" /> أو تُغلقه لحين الانتهاء من التحديث. ستتم إعادة تشغيل جهاز <ph name="DEVICE_TYPE" /> بعد اكتمال التثبيت.</translation> <translation id="8275038454117074363">الاستيراد</translation> @@ -5190,6 +5204,7 @@ <translation id="8883847527783433352">المزامنة مع حساب آخر</translation> <translation id="8885197664446363138">Smart Lock غير متاح</translation> <translation id="88870264962436283">استخدام رقم التعريف باللمس مع <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">سيتم فتح التطبيق عند انتهاء الترقية. قد تستغرق عمليات الترقية بضع دقائق.</translation> <translation id="8888432776533519951">اللون:</translation> <translation id="8890516388109605451">المصادر</translation> <translation id="8892168913673237979">كل شيء جاهز!</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index 75c68f4..5d535f41 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -364,6 +364,7 @@ <translation id="15373452373711364">Голям курсор на мишката</translation> <translation id="1538729222189715449">Файловете за Linux се отварят...</translation> <translation id="1540605929960647700">Активиране на демонстрационния режим</translation> +<translation id="1541396123399225659">Добавяне към нова група</translation> <translation id="1542514202066550870">Този раздел предава съдържание във VR към очила.</translation> <translation id="1543284117603151572">Импортирани от Edge</translation> <translation id="1545177026077493356">Автоматичен павилионен режим</translation> @@ -402,6 +403,7 @@ <translation id="1593594475886691512">Форматира се...</translation> <translation id="159359590073980872">Кеш за изображения</translation> <translation id="1593926297800505364">Запазване на начина на плащане</translation> +<translation id="1595492813686795610">Извършва се надстройване на Linux</translation> <translation id="1598233202702788831">Актуализациите са деактивирани от администратора ви.</translation> <translation id="1600857548979126453">Достъп до задния слой на инструмента за откриване и отстраняване на грешки в страниците</translation> <translation id="1601560923496285236">Прилагане</translation> @@ -513,7 +515,6 @@ <translation id="175772926354468439">Активиране на темата</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Преглед в уеб магазина на Chrome</translation> -<translation id="1761588866118490543">Гласов модел</translation> <translation id="176193854664720708">Сензорът за отпечатъци е в бутона за включване/изключване. Докоснете го леко с който и да е пръст.</translation> <translation id="1763046204212875858">Създаване на преки пътища към приложението</translation> <translation id="1763108912552529023">Продължаване на изследването</translation> @@ -935,6 +936,7 @@ <translation id="2379281330731083556">Печат чрез системния диалогов прозорец... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Извеждане на запитване преди изпращане (препоръчително)</translation> <translation id="2384436799579181135">Възникна грешка. Моля, проверете принтера си и опитайте отново.</translation> +<translation id="2386926718981642523">Осъществявайте достъп до Асистент всеки път, когато кажете „Ok Google“</translation> <translation id="2387458720915042159">Тип на връзката през прокси сървър</translation> <translation id="2391419135980381625">Стандартен шрифт</translation> <translation id="2391762656119864333">Оттегляне</translation> @@ -1040,6 +1042,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> не успя да се свърже с: <ph name="NETWORK_ID" />. Моля, изберете друга мрежа или опитайте отново.</translation> <translation id="2553440850688409052">Скриване на тази приставка</translation> <translation id="2554553592469060349">Избраният файл е твърде голям (максимален размер: 3 МБ).</translation> +<translation id="255747371423522804">Добавяне към съществуваща група</translation> <translation id="2558896001721082624">Опциите за достъпност винаги да се показват в системното меню</translation> <translation id="2562685439590298522">Документи</translation> <translation id="2562743677925229011">Не сте влезли в <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1312,6 +1315,7 @@ <translation id="2972581237482394796">&Възстановяване</translation> <translation id="2972642118232180842">Изпълняване само на важното съдържание (препоръчително)</translation> <translation id="2973324205039581528">Заглушаване на сайта</translation> +<translation id="2977480621796371840">Премахване от групата</translation> <translation id="2979639724566107830">Отваряне в нов прозорец</translation> <translation id="2981113813906970160">Показване на голям курсор на мишката</translation> <translation id="2982970937345031">Подаване на анонимен сигнал</translation> @@ -1562,6 +1566,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Разделител</translation> <translation id="3389312115541230716">Кликнете с десния бутон на мишката върху иконата <ph name="SMALL_PRODUCT_LOGO" /> в лентата на задачите</translation> +<translation id="3393352139658145068">Активиране на Асистент, когато който и да е каже „Ok Google“. С цел икономия на батерия „Ok Google“ е активно само когато устройството е свързано със захранващ източник.</translation> <translation id="3396800784455899911">С кликването си върху бутона „Приемам и продължавам“ приемате описаното по-горе обработване за тези услуги на Google.</translation> <translation id="3399432415385675819">Известията ще бъдат деактивирани</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3167,6 +3172,7 @@ <translation id="5816434091619127343">Заявените промени в принтера ще го направят неизползваем.</translation> <translation id="5817918615728894473">Сдвояване</translation> <translation id="5821565227679781414">Създаване на пряк път</translation> +<translation id="5825412242012995131">Включено (препоръчително)</translation> <translation id="5826507051599432481">Общо име (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Отпечатва се...</translation> @@ -3711,6 +3717,11 @@ <translation id="6629841649550503054">На всичко бе създадено резервно копие в <ph name="BEGIN_LINK" />Google Диск<ph name="END_LINK" />!</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> иска постоянен достъп до сертификат, за да се удостоверява от ваше име.</translation> <translation id="6635956300022133031">Избиране и персонализиране на гласовете за синтезиран говор</translation> +<translation id="6637585982786704944">Приложенията и сайтовете, на които сте дали разрешение, имат достъп до информацията за профила, която им е необходима, за да работят правилно. + + Ако не искате да добавите профил, влезте като гост или отворете прозорец в режим „инкогнито“, за да сърфирате в мрежата. + + Можете да отворите „Настройки -> Профили в Google“, за да прегледате и управлявате всички профили.</translation> <translation id="6639554308659482635">Памет за SQLite</translation> <translation id="6641138807883536517">Произволно генерираната чрез модула за сигурност парола не е налице. Това е нормално след извършване на Powerwash.</translation> <translation id="6643016212128521049">Изчистване</translation> @@ -3912,6 +3923,7 @@ <translation id="6957231940976260713">Имe на услугата</translation> <translation id="696203921837389374">Активиране на синхронизирането чрез мобилни данни</translation> <translation id="6964390816189577014">Герой</translation> +<translation id="6964760285928603117">Премахване от групата</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Порт</translation> <translation id="6965978654500191972">Устройство</translation> @@ -4021,6 +4033,7 @@ <translation id="7109543803214225826">Прекият път бе премахнат</translation> <translation id="7113502843173351041">Да осъществява достъп до имейл адреса ви</translation> <translation id="7114054701490058191">Паролите не са идентични</translation> +<translation id="7114648273807173152">За да използвате Smart Lock за влизане в профила ви в Google, отворете „Настройки > Свързани устройства > Вашият телефон > Smart Lock“.</translation> <translation id="7117228822971127758">Моля, опитайте отново по-късно</translation> <translation id="7117247127439884114">Влизане отново...</translation> <translation id="711840821796638741">Показване на управляваните отметки</translation> @@ -4176,6 +4189,7 @@ <translation id="7348093485538360975">Екранна клавиатура</translation> <translation id="7352651011704765696">Нещо се обърка</translation> <translation id="735361434055555355">Инсталира се Linux...</translation> +<translation id="7353887511974462734">Добавяне към съществуваща група</translation> <translation id="735745346212279324">Връзката с виртуалната частна мрежа (VPN) е прекъсната</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" /> елемента се копират...</translation> <translation id="7359588939039777303">Рекламите са блокирани.</translation> @@ -4238,7 +4252,6 @@ <translation id="7456847797759667638">Отваряне на местоположение...</translation> <translation id="7461924472993315131">Фиксиране</translation> <translation id="7463006580194749499">Добавяне на човек</translation> -<translation id="7464902436585505072">Гласов модел на „Ok Google“</translation> <translation id="7465778193084373987">URL адрес за анулиране на сертификат на Netscape</translation> <translation id="7469894403370665791">Автоматично свързване с тази мрежа</translation> <translation id="747114903913869239">Грешка: Разширението не може да се декодира</translation> @@ -4808,6 +4821,7 @@ <translation id="827097179112817503">Показване на бутона за начална страница</translation> <translation id="8271246892936492311">{COUNT,plural, =1{Изтрихте 1 отметка}other{Изтрихте # отметки}}</translation> <translation id="8272443605911821513">Управлявайте разширенията си, като кликнете върху „Разширения“ в менюто „Още инструменти“.</translation> +<translation id="8272966760965438857">Управлявайте профилите си в Google от едно място</translation> <translation id="8274332263553132018">Предаване на файл</translation> <translation id="8274924778568117936">Не изключвайте, нито затваряйте устройството си <ph name="DEVICE_TYPE" />, докато актуализирането не завърши. <ph name="DEVICE_TYPE" /> ще се рестартира след завършване на инсталирането.</translation> <translation id="8275038454117074363">Импортиране</translation> @@ -5194,6 +5208,7 @@ <translation id="8883847527783433352">Синхронизиране с друг профил</translation> <translation id="8885197664446363138">Няма достъп до Smart Lock</translation> <translation id="88870264962436283">Използване на Touch ID за <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Приложението ще се отвори, щом надстройването завърши. Това може да отнеме няколко минути.</translation> <translation id="8888432776533519951">Цвят:</translation> <translation id="8890516388109605451">Източници</translation> <translation id="8892168913673237979">Готово!</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb index 03228c2c..f6582d2 100644 --- a/chrome/app/resources/generated_resources_bn.xtb +++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">বড় মাউস কার্সার</translation> <translation id="1538729222189715449">Linux ফাইল খোলা হচ্ছে...</translation> <translation id="1540605929960647700">ডেমো মোড চালু করুন</translation> +<translation id="1541396123399225659">নতুন গ্রুপে যোগ করুন</translation> <translation id="1542514202066550870">এই ট্যাবটি কোনও একটি হেডসেটে ভিআর (VR) কন্টেন্ট দেখাচ্ছে।</translation> <translation id="1543284117603151572">Edge থেকে আমদানি করা</translation> <translation id="1545177026077493356">স্বয়ংক্রিয় Kiosk মোড</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">ফরম্যাট করা হচ্ছে...</translation> <translation id="159359590073980872">ছবি ক্যাশে</translation> <translation id="1593926297800505364">পেমেন্ট পদ্ধতি সেভ করুন</translation> +<translation id="1595492813686795610">Linux আপগ্রেড হচ্ছে</translation> <translation id="1598233202702788831">আপনার প্রশাসক দ্বারা আপডেট অক্ষম করা হয়েছে।</translation> <translation id="1600857548979126453">পৃষ্ঠা ডিবাগার ব্যাকএন্ড অ্যাক্সেস করুন</translation> <translation id="1601560923496285236">প্রয়োগ করুন</translation> @@ -515,7 +517,6 @@ <translation id="175772926354468439">থিম সক্ষম করুন</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Chrome ওয়েব স্টোরে দেখুন</translation> -<translation id="1761588866118490543">ভয়েস মডেল</translation> <translation id="176193854664720708">পাওয়ার বোতামে আঙ্গুলের ছাপের সেন্সরটি আছে। যেকোনও আঙ্গুল দিয়ে আলতো করে এটিকে টাচ করুন।</translation> <translation id="1763046204212875858">অ্যাপ্লিকেশন শর্টকাটগুলি তৈরি করুন</translation> <translation id="1763108912552529023">অন্বেষণ করা চালিয়ে যান</translation> @@ -937,6 +938,7 @@ <translation id="2379281330731083556">সিস্টেম কথোপকথন ব্যবহার করে প্রিন্ট করুন...<ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">পাঠানোর আগে জিজ্ঞাসা করুন (প্রস্তাবিত)</translation> <translation id="2384436799579181135">একটি ত্রুটি ঘটেছে৷ অনুগ্রহ করে আপনার প্রিন্টারটি পরীক্ষা করে আবার চেষ্টা করুন।</translation> +<translation id="2386926718981642523">যেকোনও সময়ে "হ্যালো Google" বলে অ্যাসিস্ট্যান্টকে অ্যাক্সেস করতে পারবেন</translation> <translation id="2387458720915042159">প্রক্সি সংযোগের প্রকার</translation> <translation id="2391419135980381625">মানক হরফ</translation> <translation id="2391762656119864333">প্রত্যাহার করুন</translation> @@ -1041,6 +1043,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" />, <ph name="NETWORK_ID" /> এর সাথে সংযোগ স্থাপনে অক্ষম ছিল৷ দয়া করে অন্য একটি নেটওয়ার্ক বেছে নিন বা আবার চেষ্টা করুন৷</translation> <translation id="2553440850688409052">এই প্লাগইনটি লুকান</translation> <translation id="2554553592469060349">নির্বাচিত ফাইল খুবই বড় (সর্বোচ্চ আকার: 3MB )৷</translation> +<translation id="255747371423522804">আগে থেকে থাকা গ্রুপে যোগ করুন</translation> <translation id="2558896001721082624">সিস্টেম মেনুতে সর্বদা অ্যাক্সেসযোগ্যতার বিকল্পগুলি দেখান</translation> <translation id="2562685439590298522">দস্তাবেজ</translation> <translation id="2562743677925229011"><ph name="SHORT_PRODUCT_NAME" />-এ প্রবেশ করেননি</translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">&পুনরায় করুন</translation> <translation id="2972642118232180842">শুধুমাত্র গুরুত্বপূর্ণ কন্টেন্ট চালান (প্রস্তাবিত)</translation> <translation id="2973324205039581528">সাইটটি মিউট করুন</translation> +<translation id="2977480621796371840">গ্রুপ থেকে সরান</translation> <translation id="2979639724566107830">নতুন উইন্ডোতে খুলুন</translation> <translation id="2981113813906970160">বড় মাউস কার্সার দেখান</translation> <translation id="2982970937345031">নাম ছাড়া প্রতিবেদন করুন</translation> @@ -1562,6 +1566,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">পৃথককারী</translation> <translation id="3389312115541230716">কার্যদণ্ডে <ph name="SMALL_PRODUCT_LOGO" /> আইকনে ডান ক্লিক করুন</translation> +<translation id="3393352139658145068">কেউ “হ্যালো Google” বললে অ্যাসিস্ট্যান্ট কাজ শুরু করবে। ব্যাটারির চার্জ সাশ্রয় করার জন্য, আপনার ডিভাইস চার্জে লাগানো থাকলে তবেই “হ্যালো Google” চালু থাকে।</translation> <translation id="3396800784455899911">'স্বীকার করে চালিয়ে যান' বোতামে ক্লিক করার অর্থ এই Google পরিষেবাগুলির জন্য উপরোক্ত বর্ণিত প্রক্রিয়াগুলিতে আপনি সম্মতি দেন।</translation> <translation id="3399432415385675819">বিজ্ঞপ্তি অক্ষম করা হবে</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3163,6 +3168,7 @@ <translation id="5816434091619127343">অনুরোধ করা প্রিন্টার পরিবর্তন করলে তা প্রিন্টার ব্যবহারের সুবিধা অব্যবহারযোগ্য করে তুলবে।</translation> <translation id="5817918615728894473">যুক্ত করুন</translation> <translation id="5821565227679781414">শর্টকাট তৈরি করুন</translation> +<translation id="5825412242012995131">চালু আছে (সাজেস্ট করা)</translation> <translation id="5826507051599432481">কমন নেম (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">মুদ্রন হচ্ছে...</translation> @@ -3708,6 +3714,11 @@ <translation id="6629841649550503054"><ph name="BEGIN_LINK" />Google ড্রাইভ<ph name="END_LINK" /> এ সবগুলির ব্যাকআপ নেওয়া হয়েছে</translation> <translation id="6630752851777525409">আপনার পক্ষ থেকে একটি সার্টিফিকেট প্রমাণীকৃত করতে <ph name="EXTENSION_NAME" /> সেটিতে স্থায়ী অ্যাক্সেস চায়।</translation> <translation id="6635956300022133031">পাঠ্য থেকে ভাষ্য ভয়েস বেছে নিন এবং কাস্টমাইজ করুন</translation> +<translation id="6637585982786704944">আপনি অনুমতি দিয়েছেন এমন অ্যাপ এবং ওয়েবসাইট সঠিকভাবে কাজ করার প্রয়োজনে অ্যাকাউন্ট সম্পর্কিত তথ্য অ্যাক্সেস করতে পারে। + + অ্যাকাউন্ট যোগ করতে না চাইলে, ওয়েব ব্রাউজিংয়ের জন্য অতিথি হিসেবে সাইন-ইন করতে বা ছদ্মবেশী উইন্ডো ব্যবহার করতে পারেন। + + আপনি সেটিংস -> Google অ্যাকাউন্ট বিকল্পে গিয়ে সব অ্যাকাউন্ট দেখতে এবং ম্যানেজ করতে পারেন।</translation> <translation id="6639554308659482635">SQLite স্মৃতি</translation> <translation id="6641138807883536517">র্যান্ডম ভাবে জেনারেট করা নিরাপদ মডিউল পাসওয়ার্ডটি পাওয়া যাচ্ছে না। পাওয়ারওয়াশের পরে এরকম হয়ে থাকে।</translation> <translation id="6643016212128521049">সাফ করুন</translation> @@ -3909,6 +3920,7 @@ <translation id="6957231940976260713">পরিষেবার নাম</translation> <translation id="696203921837389374">মোবাইল ডেটার মাধ্যমে সিঙ্ক করা সক্ষম করুন</translation> <translation id="6964390816189577014">হিরো</translation> +<translation id="6964760285928603117">গ্রুপ থেকে সরান</translation> <translation id="6965382102122355670">ঠিক আছে</translation> <translation id="6965648386495488594">পোর্ট</translation> <translation id="6965978654500191972">ডিভাইস</translation> @@ -4018,6 +4030,7 @@ <translation id="7109543803214225826">শর্টকাট সরানো হয়েছে</translation> <translation id="7113502843173351041">আপনার ইমেল আইডি জানুন</translation> <translation id="7114054701490058191">পাসওয়ার্ডগুলি মিলছে না</translation> +<translation id="7114648273807173152">Smart Lock ব্যবহার করতে আপনার Google অ্যাকাউন্টে সাইন-ইন করে সেটিংস > কানেক্ট করা ডিভাইস > আপনার ফোন > Smart Lock বিকল্পে যান।</translation> <translation id="7117228822971127758">পরে আবার চেষ্টা করুন</translation> <translation id="7117247127439884114">আবার প্রবেশ করুন...</translation> <translation id="711840821796638741">পরিচালিত বুকমার্কগুলি দেখান</translation> @@ -4173,6 +4186,7 @@ <translation id="7348093485538360975">অন-স্ক্রীণ কীবোর্ড</translation> <translation id="7352651011704765696">কিছু সমস্যা হয়েছে</translation> <translation id="735361434055555355">Linux ইনস্টল করা হচ্ছে...</translation> +<translation id="7353887511974462734">আগে থেকে থাকা গ্রুপে যোগ করুন</translation> <translation id="735745346212279324">VPN ডিসকানেক্ট করা হয়েছে</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" />টি আইটেম কপি করা হচ্ছে…</translation> <translation id="7359588939039777303">বিজ্ঞাপন ব্লক করা হয়েছে।</translation> @@ -4235,7 +4249,6 @@ <translation id="7456847797759667638">লোকেশন খুলুন...</translation> <translation id="7461924472993315131">পিন</translation> <translation id="7463006580194749499">একজন ব্যক্তিকে যোগ করুন</translation> -<translation id="7464902436585505072">"ওকে Google" ভয়েস মডেল</translation> <translation id="7465778193084373987">Netscape সার্টিফিকেট রদকরণ ইউআরএল</translation> <translation id="7469894403370665791">স্বয়ংক্রিয়ভাবে এই নেটওয়ার্কে সংযোগ করুন</translation> <translation id="747114903913869239">সমস্যা: এক্সটেনশন ডিকোড করা যায়নি</translation> @@ -4803,6 +4816,7 @@ <translation id="827097179112817503">হোম বোতাম দেখান</translation> <translation id="8271246892936492311">{COUNT,plural, =1{১টি বুকমার্ক মোছা হয়েছে}one{#টি বুকমার্ক মোছা হয়েছে}other{#টি বুকমার্ক মোছা হয়েছে}}</translation> <translation id="8272443605911821513">"আরও টুলগুলির মেনুতে" এক্সটেনশনগুলি ক্লিক করে আপনার এক্সটেনশনগুলি পরিচালনা করুন৷</translation> +<translation id="8272966760965438857">এক জায়গায় আপনার সব Google অ্যাকাউন্ট ম্যানেজ করুন</translation> <translation id="8274332263553132018">ফাইল কাস্ট করুন</translation> <translation id="8274924778568117936">আপডেটটি সম্পূর্ণ না হওয়া পর্যন্ত <ph name="DEVICE_TYPE" />টি বন্ধ করবেন না। ইনস্টলেশন হয়ে গেলে <ph name="DEVICE_TYPE" />টি নিজে থেকেই রিস্টার্ট হবে।</translation> <translation id="8275038454117074363">আমদানি</translation> @@ -5190,6 +5204,7 @@ <translation id="8883847527783433352">অন্য অ্যাকাউন্টে সিঙ্ক করুন</translation> <translation id="8885197664446363138">Smart Lock অনুপলব্ধ</translation> <translation id="88870264962436283"><ph name="APP_NAME" /> অ্যাপে টাচ আইডি ব্যবহার করুন</translation> +<translation id="8888253246822647887">আপগ্রেড প্রক্রিয়া শেষ হওয়ার পরেই আপনার অ্যাপ চালু হবে। আপগ্রেড প্রক্রিয়াতে কয়েক মিনিট লাগতে পারে।</translation> <translation id="8888432776533519951">রঙ:</translation> <translation id="8890516388109605451">উৎস</translation> <translation id="8892168913673237979">সমস্ত সেট আছে!</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb index d993b3b..cb25006f 100644 --- a/chrome/app/resources/generated_resources_ca.xtb +++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Cursor del ratolí gran</translation> <translation id="1538729222189715449">S'estan obrint els fitxers de Linux...</translation> <translation id="1540605929960647700">Activa el mode de demostració</translation> +<translation id="1541396123399225659">Afegeix a un grup nou</translation> <translation id="1542514202066550870">Aquesta pestanya està mostrant contingut de realitat virtual en un visor.</translation> <translation id="1543284117603151572">Importades d'Edge</translation> <translation id="1545177026077493356">Mode quiosc automàtic</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">S'està formatant...</translation> <translation id="159359590073980872">Memòria cau d'imatges</translation> <translation id="1593926297800505364">Desa la forma de pagament</translation> +<translation id="1595492813686795610">Linux s'està actualitzant</translation> <translation id="1598233202702788831">El vostre administrador ha desactivat les actualitzacions.</translation> <translation id="1600857548979126453">Accedir al servidor de depuració de pàgina</translation> <translation id="1601560923496285236">Aplica</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Activa el tema</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Mostra a Chrome Web Store</translation> -<translation id="1761588866118490543">Model de veu</translation> <translation id="176193854664720708">El sensor d'empremtes digitals és al botó d'engegada. Toca'l lleugerament amb un dit.</translation> <translation id="1763046204212875858">Creació de dreceres a aplicacions</translation> <translation id="1763108912552529023">Continua explorant</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">Imprimeix des de la finestra de diàleg del sistema… <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Demana permís abans de fer cap enviament (recomanat)</translation> <translation id="2384436799579181135">S'ha produït un error. Comprova la impressora i torna-ho a provar.</translation> +<translation id="2386926718981642523">Accedeix a l'Assistent cada vegada que diguis "Ok Google"</translation> <translation id="2387458720915042159">Tipus de connexió del servidor intermediari</translation> <translation id="2391419135980381625">Tipus de lletra estàndard</translation> <translation id="2391762656119864333">Revoca</translation> @@ -1042,6 +1044,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> no s'ha pogut connectar a <ph name="NETWORK_ID" />. Seleccioneu una altra xarxa o bé torneu-ho a provar.</translation> <translation id="2553440850688409052">Amaga aquest connector</translation> <translation id="2554553592469060349">El fitxer seleccionat és massa gran (mida màxima: 3 MB).</translation> +<translation id="255747371423522804">Afegeix a un grup existent</translation> <translation id="2558896001721082624">Mostra sempre les opcions d'accessibilitat al menú del sistema</translation> <translation id="2562685439590298522">Google Docs</translation> <translation id="2562743677925229011">No heu iniciat la sessió a <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1313,6 +1316,7 @@ <translation id="2972581237482394796">&Refés</translation> <translation id="2972642118232180842">Executa només contingut important (recomanat)</translation> <translation id="2973324205039581528">Silencia el lloc web</translation> +<translation id="2977480621796371840">Suprimeix del grup</translation> <translation id="2979639724566107830">Obre-ho en una finestra nova</translation> <translation id="2981113813906970160">Mostra el cursor del ratolí gran</translation> <translation id="2982970937345031">Informa'n de manera anònima</translation> @@ -1562,6 +1566,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Separador</translation> <translation id="3389312115541230716">Fes clic a la icona <ph name="SMALL_PRODUCT_LOGO" /> de la barra de tasques</translation> +<translation id="3393352139658145068">Activa l'Assitent quan algú digui "Ok Google". Per estalviar bateria, la funció "Ok Google" només estarà activada quan el dispositiu estigui connectat a una font d'alimentació.</translation> <translation id="3396800784455899911">En fer clic al botó Accepta i continua, acceptes el processament descrit anteriorment per a aquests serveis de Google.</translation> <translation id="3399432415385675819">Les notificacions es desactivaran</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3165,6 +3170,7 @@ <translation id="5816434091619127343">Els canvis que s'han sol·licitat per a la impressora faran que no es pugui utilitzar.</translation> <translation id="5817918615728894473">Vincula</translation> <translation id="5821565227679781414">Crea una drecera</translation> +<translation id="5825412242012995131">A (recomanat)</translation> <translation id="5826507051599432481">Nom comú (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">S'està imprimint...</translation> @@ -3709,6 +3715,11 @@ <translation id="6629841649550503054">Tots els elements tenen una còpia de seguretat a <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />.</translation> <translation id="6630752851777525409">L'extensió <ph name="EXTENSION_NAME" /> vol tenir accés permanent a un certificat per autenticar-se en nom vostre.</translation> <translation id="6635956300022133031">Selecciona i personalitza les veus de la síntesi de veu</translation> +<translation id="6637585982786704944">Les aplicacions i els llocs web que tinguin el teu permís podran accedir a la informació del compte que necessitin per funcionar correctament. + + Si no vols afegir cap compte, inicia la sessió com a convidat o obre una finestra d'incògnit per navegar pel web. + + Per veure i gestionar tots els comptes, ves a Configuració -> Comptes de Google.</translation> <translation id="6639554308659482635">Memòria SQLite</translation> <translation id="6641138807883536517">La contrasenya del mòdul de seguretat generada aleatòriament no està disponible. Això és normal després d'executar la funció Powerwash.</translation> <translation id="6643016212128521049">Esborra</translation> @@ -3910,6 +3921,7 @@ <translation id="6957231940976260713">Nom del servei</translation> <translation id="696203921837389374">Activa la sincronització mitjançant dades mòbils</translation> <translation id="6964390816189577014">Heroi</translation> +<translation id="6964760285928603117">Suprimeix del grup</translation> <translation id="6965382102122355670">D'acord</translation> <translation id="6965648386495488594">Port</translation> <translation id="6965978654500191972">Dispositiu</translation> @@ -4019,6 +4031,7 @@ <translation id="7109543803214225826">S'ha suprimit la drecera</translation> <translation id="7113502843173351041">Saber l'adreça electrònica</translation> <translation id="7114054701490058191">Les contrasenyes no coincideixen</translation> +<translation id="7114648273807173152">Per utilitzar Smart Lock per iniciar la sessió al Compte de Google, ves a Configuració > Dispositius connectats > El teu telèfon > Smart Lock.</translation> <translation id="7117228822971127758">Torna-ho a provar més tard</translation> <translation id="7117247127439884114">Torna a iniciar la sessió...</translation> <translation id="711840821796638741">Mostra les adreces d'interès gestionades</translation> @@ -4174,6 +4187,7 @@ <translation id="7348093485538360975">Teclat en pantalla</translation> <translation id="7352651011704765696">S'ha produït un error</translation> <translation id="735361434055555355">S'està instal·lant Linux...</translation> +<translation id="7353887511974462734">Afegeix a un grup existent</translation> <translation id="735745346212279324">VPN desconnectada</translation> <translation id="7359359531237882347">S'estan copiant <ph name="NUMBER_OF_ITEMS" /> elements...</translation> <translation id="7359588939039777303">S'han bloquejat els anuncis.</translation> @@ -4236,7 +4250,6 @@ <translation id="7456847797759667638">Obre la ubicació...</translation> <translation id="7461924472993315131">Fixa</translation> <translation id="7463006580194749499">Afegeix una persona</translation> -<translation id="7464902436585505072">Model de veu d'"Ok Google"</translation> <translation id="7465778193084373987">URL de revocació de certificats de Netscape</translation> <translation id="7469894403370665791">Connecta automàticament a aquesta xarxa</translation> <translation id="747114903913869239">Error: no s'ha pogut descodificar l'extensió</translation> @@ -4803,6 +4816,7 @@ <translation id="827097179112817503">Mostra el botó Pàgina d'inici</translation> <translation id="8271246892936492311">{COUNT,plural, =1{S'ha suprimit 1 adreça d'interès}other{S'han suprimit # adreces d'interès}}</translation> <translation id="8272443605911821513">Per gestionar les extensions, feu clic a Extensions al menú Més eines.</translation> +<translation id="8272966760965438857">Gestiona els teus Comptes de Google des d'un sol lloc</translation> <translation id="8274332263553132018">Emet el fitxer</translation> <translation id="8274924778568117936">No apaguis ni tanquis el dispositiu <ph name="DEVICE_TYPE" /> fins que l'actualització no hagi finalitzat. <ph name="DEVICE_TYPE" /> es reiniciarà un cop finalitzi la instal·lació.</translation> <translation id="8275038454117074363">Importa</translation> @@ -5189,6 +5203,7 @@ <translation id="8883847527783433352">Sincronitza amb un altre compte</translation> <translation id="8885197664446363138">Smart Lock no està disponible</translation> <translation id="88870264962436283">Utilitza Touch ID amb <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">L'aplicació s'obrirà quan finalitzi l'actualització. Les actualitzacions poden tardar uns quants minuts.</translation> <translation id="8888432776533519951">Color:</translation> <translation id="8890516388109605451">Fonts</translation> <translation id="8892168913673237979">Tot a punt</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb index c7f77dd3..137d040 100644 --- a/chrome/app/resources/generated_resources_cs.xtb +++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Velký kurzor myši</translation> <translation id="1538729222189715449">Otevírání souborů systému Linux...</translation> <translation id="1540605929960647700">Zapnout ukázkový režim</translation> +<translation id="1541396123399225659">Přidat do nové skupiny</translation> <translation id="1542514202066550870">Tato karta odesílá VR obsah do náhlavní soupravy.</translation> <translation id="1543284117603151572">Importováno z aplikace Edge</translation> <translation id="1545177026077493356">Automatický režim veřejného terminálu</translation> @@ -396,7 +397,7 @@ <ph name="EXTENSION_NAME" /></translation> <translation id="1587275751631642843">Konzole JavaScriptu</translation> -<translation id="1587907146729660231">Umístěte prst na vypínač</translation> +<translation id="1587907146729660231">Položte prst na vypínač</translation> <translation id="1588438908519853928">Normální</translation> <translation id="158849752021629804">Je potřeba domácí síť</translation> <translation id="1588870296199743671">Otevřít odkaz pomocí...</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Formátování...</translation> <translation id="159359590073980872">Mezipaměť obrázků</translation> <translation id="1593926297800505364">Uložit platební metodu</translation> +<translation id="1595492813686795610">Linux se upgraduje</translation> <translation id="1598233202702788831">Administrátor aktualizace zakázal.</translation> <translation id="1600857548979126453">Získat přístup k ladicímu programu stránky na serveru</translation> <translation id="1601560923496285236">Použít</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Aktivovat motiv</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Zobrazit v Internetovém obchodu Chrome</translation> -<translation id="1761588866118490543">Hlasový model</translation> <translation id="176193854664720708">Snímač otisků prstů je součástí vypínače. Zlehka se ho dotkněte jakýmkoli prstem.</translation> <translation id="1763046204212875858">Vytvořit zástupce aplikací</translation> <translation id="1763108912552529023">Pokračovat v průzkumu</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">Tisk pomocí dialogového okna systému... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Před odesláním se zeptat (doporučeno)</translation> <translation id="2384436799579181135">Došlo k chybě. Zkontrolujte tiskárnu a zkuste to znovu.</translation> +<translation id="2386926718981642523">Aktivovat Asistenta, kdykoliv řeknete „Ok Google“</translation> <translation id="2387458720915042159">Typ připojení k proxy serveru</translation> <translation id="2391419135980381625">Standardní písmo</translation> <translation id="2391762656119864333">Zrušit</translation> @@ -1042,6 +1044,7 @@ <translation id="2553340429761841190">Systému <ph name="PRODUCT_NAME" /> se nepodařilo připojit k síti <ph name="NETWORK_ID" />. Vyberte jinou síť nebo to zkuste znovu.</translation> <translation id="2553440850688409052">Skrýt tento plugin</translation> <translation id="2554553592469060349">Vybraný soubor je příliš velký (maximální velikost je 3 MB).</translation> +<translation id="255747371423522804">Přidat do existující skupiny</translation> <translation id="2558896001721082624">Vždy v nabídce systému zobrazovat možnosti usnadnění přístupu</translation> <translation id="2562685439590298522">Dokumenty</translation> <translation id="2562743677925229011">Nejste v prohlížeči <ph name="SHORT_PRODUCT_NAME" /> přihlášeni</translation> @@ -1314,6 +1317,7 @@ <translation id="2972581237482394796">&Opakovat</translation> <translation id="2972642118232180842">Spouštět pouze důležitý obsah (doporučeno)</translation> <translation id="2973324205039581528">Ztlumit web</translation> +<translation id="2977480621796371840">Odebrat ze skupiny</translation> <translation id="2979639724566107830">Otevřít v novém okně</translation> <translation id="2981113813906970160">Zobrazit velký kurzor myši</translation> <translation id="2982970937345031">Nahlásit anonymně</translation> @@ -1562,6 +1566,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" /> %</translation> <translation id="338583716107319301">Oddělovač</translation> <translation id="3389312115541230716">Klikněte pravým tlačítkem na ikonu <ph name="SMALL_PRODUCT_LOGO" /> na hlavním panelu.</translation> +<translation id="3393352139658145068">Aktivovat Asistenta, když někdo řekne „Ok Google“. Kvůli úspoře energie je příkaz „Ok Google“ zapnutý, jen když je zařízení připojené ke zdroji napájení.</translation> <translation id="3396800784455899911">Kliknutím na tlačítko Přijmout a pokračovat vyjadřujete souhlas se zpracováním popsaným výše pro tyto služby Google.</translation> <translation id="3399432415385675819">Oznámení budou zakázána</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -2021,7 +2026,7 @@ <translation id="4037889604535939429">Úprava osoby</translation> <translation id="4042264909745389898">Smluvní podmínky systému Google Chrome OS</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Opustit stránku}few{Opustit stránky}many{Opustit stránky}other{Opustit stránky}}</translation> -<translation id="404299405565920089">Zde lze spravovat všechny vaše přihlášené účty z aplikací a webů. Aplikace a weby s příslušným oprávněním mají přístup k informacím ve vašem účtu, aby mohly fungovat správně.</translation> +<translation id="404299405565920089">Tady můžete spravovat všechny svoje přihlášené účty z aplikací a webů. Aplikace a weby s příslušným oprávněním mají přístup k informacím ve vašem účtu, aby mohly fungovat správně.</translation> <translation id="4044612648082411741">Zadejte heslo certifikátu</translation> <translation id="404493185430269859">Výchozí vyhledávač</translation> <translation id="4052120076834320548">Drobné</translation> @@ -3162,6 +3167,7 @@ <translation id="5816434091619127343">Po provedení požadovaných změn by tiskárna nebyla použitelná.</translation> <translation id="5817918615728894473">Spárovat</translation> <translation id="5821565227679781414">Vytvořit zástupce</translation> +<translation id="5825412242012995131">Zapnout (doporučeno)</translation> <translation id="5826507051599432481">Běžný název (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Tisk...</translation> @@ -3706,6 +3712,11 @@ <translation id="6629841649550503054">Vše je zálohováno na <ph name="BEGIN_LINK" />Disku Google<ph name="END_LINK" />!</translation> <translation id="6630752851777525409">Rozšíření <ph name="EXTENSION_NAME" /> požaduje trvalý přístup k certifikátu, aby se vaším jménem mohlo ověřit.</translation> <translation id="6635956300022133031">Vybrat a upravit hlasy pro převod textu na řeč</translation> +<translation id="6637585982786704944">Aplikace a weby, jimž jste to povolili, mohou ke správnému fungování používat informace z vašeho účtu. + + Pokud nechcete přidávat účet, přihlaste se jako host nebo k procházení webu otevřete anonymní okno. + + Chcete-li zobrazit a spravovat všechny účty, přejděte na Nastavení -> Účty Google.</translation> <translation id="6639554308659482635">Paměť SQLite</translation> <translation id="6641138807883536517">Náhodně generované heslo modulu zabezpečení není k dispozici. Po použití funkce Powerwash je to normální.</translation> <translation id="6643016212128521049">Vymazat</translation> @@ -3907,6 +3918,7 @@ <translation id="6957231940976260713">Název služby</translation> <translation id="696203921837389374">Aktivovat synchronizaci pomocí mobilního datového připojení</translation> <translation id="6964390816189577014">Hrdina</translation> +<translation id="6964760285928603117">Odebrat ze skupiny</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Port</translation> <translation id="6965978654500191972">Zařízení</translation> @@ -4016,6 +4028,7 @@ <translation id="7109543803214225826">Zkratka byla odebrána</translation> <translation id="7113502843173351041">znalost vaší e-mailové adresy</translation> <translation id="7114054701490058191">Hesla nejsou shodná</translation> +<translation id="7114648273807173152">Chcete-li se ke svému účtu Google přihlašovat pomocí funkce Smart Lock, přejděte na Nastavení > Připojená zařízení > Váš telefon > Smart Lock.</translation> <translation id="7117228822971127758">Zkuste to znovu později</translation> <translation id="7117247127439884114">Znovu přihlásit...</translation> <translation id="711840821796638741">Zobrazit spravované záložky</translation> @@ -4171,6 +4184,7 @@ <translation id="7348093485538360975">Softwarová klávesnice</translation> <translation id="7352651011704765696">Něco se pokazilo</translation> <translation id="735361434055555355">Probíhá instalace systému Linux...</translation> +<translation id="7353887511974462734">Přidat do existující skupiny</translation> <translation id="735745346212279324">Síť VPN je odpojena</translation> <translation id="7359359531237882347">Kopírování <ph name="NUMBER_OF_ITEMS" /> položek...</translation> <translation id="7359588939039777303">Byly zablokovány reklamy.</translation> @@ -4233,7 +4247,6 @@ <translation id="7456847797759667638">Otevřít umístění...</translation> <translation id="7461924472993315131">Připnout</translation> <translation id="7463006580194749499">Přidat osobu</translation> -<translation id="7464902436585505072">Hlasový model „Ok Google“</translation> <translation id="7465778193084373987">Adresa URL pro odvolání certifikátu Netscape</translation> <translation id="7469894403370665791">Automaticky připojit k této síti</translation> <translation id="747114903913869239">Chyba: Nelze dekódovat rozšíření</translation> @@ -4800,6 +4813,7 @@ <translation id="827097179112817503">Zobrazit tlačítko Domovská stránka</translation> <translation id="8271246892936492311">{COUNT,plural, =1{Byla smazána 1 záložka}few{Byly smazány # záložky}many{Bylo smazáno # záložky}other{Bylo smazáno # záložek}}</translation> <translation id="8272443605911821513">Chcete-li spravovat rozšíření, klikněte v nabídce Nástroje na příkaz Rozšíření.</translation> +<translation id="8272966760965438857">Spravujte své účty Google na jednom místě</translation> <translation id="8274332263553132018">Odešlete soubor</translation> <translation id="8274924778568117936">V průběhu aktualizace <ph name="DEVICE_TYPE" /> nevypínejte ani nezavírejte. Po dokončení instalace se <ph name="DEVICE_TYPE" /> restartuje.</translation> <translation id="8275038454117074363">Importovat</translation> @@ -4812,7 +4826,7 @@ <translation id="8286036467436129157">Přihlásit se</translation> <translation id="8286963743045814739">V anonymním okně můžete web procházet v soukromí.</translation> <translation id="82871696630048499">Webová stránka byla načtena znovu, protože nebylo k dispozici dost paměti.</translation> -<translation id="8287902281644548111">Vyhledat podle volání API/URL</translation> +<translation id="8287902281644548111">Vyhledat podle adresy URL / volání API</translation> <translation id="8288032458496410887">Odinstalovat aplikaci <ph name="APP" />…</translation> <translation id="8291967909914612644">Země domácího poskytovatele</translation> <translation id="8294431847097064396">Zdroj</translation> @@ -5186,6 +5200,7 @@ <translation id="8883847527783433352">Synchronizovat do jiného účtu</translation> <translation id="8885197664446363138">Funkce Smart Lock není k dispozici</translation> <translation id="88870264962436283">Používání funkce Touch ID s aplikací <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Aplikace se spustí po dokončení upgradu. Upgradování může trvat několik minut.</translation> <translation id="8888432776533519951">Barva:</translation> <translation id="8890516388109605451">Zdroje</translation> <translation id="8892168913673237979">Vše je nastaveno!</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index b249c65..07446b5 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Stor musemarkør</translation> <translation id="1538729222189715449">Åbner Linux-filer...</translation> <translation id="1540605929960647700">Aktivér demotilstand</translation> +<translation id="1541396123399225659">Føj til ny gruppe</translation> <translation id="1542514202066550870">Denne fane viser VR-indhold til et headset.</translation> <translation id="1543284117603151572">Importeret fra Edge</translation> <translation id="1545177026077493356">Automatisk terminaltilstand</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Formaterer...</translation> <translation id="159359590073980872">Billedcache</translation> <translation id="1593926297800505364">Gem betalingsmetode</translation> +<translation id="1595492813686795610">Linux opgraderes</translation> <translation id="1598233202702788831">Opdateringer er deaktiveret af din administrator.</translation> <translation id="1600857548979126453">Få adgang til administration af fejlfinding på siden</translation> <translation id="1601560923496285236">Anvend</translation> @@ -513,7 +515,6 @@ <translation id="175772926354468439">Aktivér tema</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Se i Chrome Webshop</translation> -<translation id="1761588866118490543">Stemmemodel</translation> <translation id="176193854664720708">Fingeraftrykslæseren sidder i afbryderknappen. Tryk let på den med en finger.</translation> <translation id="1763046204212875858">Opret programgenveje</translation> <translation id="1763108912552529023">Udforsk videre</translation> @@ -935,6 +936,7 @@ <translation id="2379281330731083556">Dialogboks til Udskriv via system... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Spørg inden afsendelse (anbefales)</translation> <translation id="2384436799579181135">Der opstod en fejl. Tjek din printer, og prøv igen.</translation> +<translation id="2386926718981642523">Få adgang til din assistent, hver gang du siger "Ok Google"</translation> <translation id="2387458720915042159">Proxy-forbindelsestype</translation> <translation id="2391419135980381625">Standardskriftstørrelse</translation> <translation id="2391762656119864333">Tilbagekald</translation> @@ -1040,6 +1042,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> kunne ikke oprette forbindelse til <ph name="NETWORK_ID" />. Vælg et andet netværk, eller prøv igen.</translation> <translation id="2553440850688409052">Skjul dette plugin</translation> <translation id="2554553592469060349">Den valgte fil er for stor (maksimal størrelse: 3 MB).</translation> +<translation id="255747371423522804">Føj til eksisterende gruppe</translation> <translation id="2558896001721082624">Vis altid indstillingerne for hjælpefunktioner i systemmenuen</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2562743677925229011">Ikke logget ind på <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1313,6 +1316,7 @@ <translation id="2972581237482394796">&Annuller fortryd</translation> <translation id="2972642118232180842">Kør kun vigtigt indhold (anbefales)</translation> <translation id="2973324205039581528">Slå lyden fra på et website</translation> +<translation id="2977480621796371840">Fjern fra gruppe</translation> <translation id="2979639724566107830">Åbn i nyt vindue</translation> <translation id="2981113813906970160">Vis stor musemarkør</translation> <translation id="2982970937345031">Rapportér anonymt</translation> @@ -1563,6 +1567,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" /> %</translation> <translation id="338583716107319301">Separator</translation> <translation id="3389312115541230716">Højreklik på <ph name="SMALL_PRODUCT_LOGO" />-ikonet på proceslinjen</translation> +<translation id="3393352139658145068">Aktivér assistenten, når nogen siger “Ok Google”. For at spare på batteriet er “Ok Google” kun aktiveret, når din enhed er sluttet til en strømkilde.</translation> <translation id="3396800784455899911">Når du klikker på knappen "Acceptér og fortsæt", accepterer du den behandling, der er beskrevet ovenfor, for disse Google-tjenester.</translation> <translation id="3399432415385675819">Notifikationer deaktiveres</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3165,6 +3170,7 @@ <translation id="5816434091619127343">De printerændringer, du har anmodet om, vil gøre printeren ubrugelig.</translation> <translation id="5817918615728894473">Start parring</translation> <translation id="5821565227679781414">Opret genvej</translation> +<translation id="5825412242012995131">Til (anbefales)</translation> <translation id="5826507051599432481">Kaldenavn (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Udskriver...</translation> @@ -3710,6 +3716,11 @@ <translation id="6629841649550503054">Alt er sikkerhedskopieret til <ph name="BEGIN_LINK" />Google Drev<ph name="END_LINK" />.</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> ønsker permanent adgang til et certifikat for at godkende sig selv på dine vegne.</translation> <translation id="6635956300022133031">Vælg og tilpas oplæsningsstemmer</translation> +<translation id="6637585982786704944">Apps og websites, der har din tilladelse, kan få adgang til de kontooplysninger, de skal bruge for at fungere korrekt. + + Hvis du ikke vil tilføje en konto, kan du logge ind som gæst eller åbne et inkognitovindue til internetbrug. + + Du kan gå til Indstillinger -> Google-konti for at se og administrere alle konti.</translation> <translation id="6639554308659482635">SQLite-hukommelse</translation> <translation id="6641138807883536517">Den tilfældigt genererede adgangskode til sikkerhedsmodulet er ikke tilgængelig. Dette er normalt efter en Powerwash.</translation> <translation id="6643016212128521049">Ryd</translation> @@ -3911,6 +3922,7 @@ <translation id="6957231940976260713">Tjenestens navn</translation> <translation id="696203921837389374">Aktivér synkronisering via mobildata</translation> <translation id="6964390816189577014">Helt</translation> +<translation id="6964760285928603117">Fjern fra gruppe</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Port</translation> <translation id="6965978654500191972">Enhed</translation> @@ -4020,6 +4032,7 @@ <translation id="7109543803214225826">Genvejen blev fjernet</translation> <translation id="7113502843173351041">Kende din mailadresse</translation> <translation id="7114054701490058191">Adgangskoderne matcher ikke</translation> +<translation id="7114648273807173152">Du kan bruge Smart Lock til at logge ind på din Google-konto ved at gå til Indstillinger > Tilsluttede enheder > Din telefon > Smart Lock.</translation> <translation id="7117228822971127758">Prøv igen senere</translation> <translation id="7117247127439884114">Log ind igen...</translation> <translation id="711840821796638741">Vis administrerede bogmærker</translation> @@ -4175,6 +4188,7 @@ <translation id="7348093485538360975">Skærmtastatur</translation> <translation id="7352651011704765696">Der opstod en fejl</translation> <translation id="735361434055555355">Installerer Linux...</translation> +<translation id="7353887511974462734">Føj til eksisterende gruppe</translation> <translation id="735745346212279324">VPN afbrudt</translation> <translation id="7359359531237882347">Kopierer <ph name="NUMBER_OF_ITEMS" /> elementer...</translation> <translation id="7359588939039777303">Annoncer er blokeret.</translation> @@ -4237,7 +4251,6 @@ <translation id="7456847797759667638">Åbn placering...</translation> <translation id="7461924472993315131">Fastgør</translation> <translation id="7463006580194749499">Tilføj person</translation> -<translation id="7464902436585505072">Stemmemodellen "Ok Google"</translation> <translation id="7465778193084373987">Webadresse for tilbagekaldelse af Netscape-certifikat</translation> <translation id="7469894403370665791">Opret automatisk forbindelse til dette netværk</translation> <translation id="747114903913869239">Fejl: Udvidelsen kunne ikke afkodes</translation> @@ -4806,6 +4819,7 @@ <translation id="827097179112817503">Vis knappen Startside</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 bogmærke er slettet}one{# bogmærke er slettet}other{# bogmærker er slettet}}</translation> <translation id="8272443605911821513">Administrer dine udvidelser ved at klikke på Udvidelser i menuen "Flere værktøjer".</translation> +<translation id="8272966760965438857">Administrer dine Google-konti på ét sted</translation> <translation id="8274332263553132018">Cast fil</translation> <translation id="8274924778568117936">Undgå at slukke eller lukke din <ph name="DEVICE_TYPE" />, før opdateringen er færdig. Din <ph name="DEVICE_TYPE" /> genstarter, når installationen er gennemført.</translation> <translation id="8275038454117074363">Importer</translation> @@ -5193,6 +5207,7 @@ <translation id="8883847527783433352">Synkroniser med en anden konto</translation> <translation id="8885197664446363138">Smart Lock er ikke tilgængelig</translation> <translation id="88870264962436283">Brug Touch ID med <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Din app åbner, når opgraderingen er fuldført. Opgraderinger kan tage et par minutter.</translation> <translation id="8888432776533519951">Farve:</translation> <translation id="8890516388109605451">Kilder</translation> <translation id="8892168913673237979">Fuldført</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index cf8515e..ddb93ed 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -364,6 +364,7 @@ <translation id="15373452373711364">Großer Cursor</translation> <translation id="1538729222189715449">Linux-Dateien werden geöffnet…</translation> <translation id="1540605929960647700">Demomodus aktivieren</translation> +<translation id="1541396123399225659">Neuer Gruppe hinzufügen</translation> <translation id="1542514202066550870">Über diesen Tab werden VR-Inhalte für ein Headset abgespielt.</translation> <translation id="1543284117603151572">Aus Edge importiert</translation> <translation id="1545177026077493356">Automatischer Kioskmodus</translation> @@ -402,6 +403,7 @@ <translation id="1593594475886691512">Formatierung wird ausgeführt...</translation> <translation id="159359590073980872">Bilder-Cache</translation> <translation id="1593926297800505364">Zahlungsmethode speichern</translation> +<translation id="1595492813686795610">Linux wird aktualisiert</translation> <translation id="1598233202702788831">Updates sind durch Ihren Administrator deaktiviert.</translation> <translation id="1600857548979126453">Auf das Back-End für Seiten-Debugger zugreifen</translation> <translation id="1601560923496285236">Übernehmen</translation> @@ -513,7 +515,6 @@ <translation id="175772926354468439">Design aktivieren</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Im Chrome Web Store ansehen</translation> -<translation id="1761588866118490543">Sprachmodell</translation> <translation id="176193854664720708">Der Fingerabdrucksensor ist in die Ein-/Aus-Taste integriert. Berühren Sie diese leicht mit dem Finger.</translation> <translation id="1763046204212875858">App-Verknüpfungen erstellen</translation> <translation id="1763108912552529023">Weiter erkunden</translation> @@ -935,6 +936,7 @@ <translation id="2379281330731083556">Über das Systemdialogfeld drucken... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Vor dem Senden nachfragen (empfohlen)</translation> <translation id="2384436799579181135">Ein Fehler ist aufgetreten. Bitte überprüfen Sie Ihren Drucker und versuchen Sie es noch einmal.</translation> +<translation id="2386926718981642523">Mit "Ok Google" können Sie jederzeit auf Assistant zugreifen</translation> <translation id="2387458720915042159">Proxy-Verbindungstyp</translation> <translation id="2391419135980381625">Standardschrift</translation> <translation id="2391762656119864333">Aufheben</translation> @@ -1039,6 +1041,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> konnte keine Verbindung zu <ph name="NETWORK_ID" /> herstellen. Wählen Sie ein anderes Netzwerk oder versuchen Sie es erneut.</translation> <translation id="2553440850688409052">Dieses Plug-in ausblenden</translation> <translation id="2554553592469060349">Die ausgewählte Datei ist zu groß. Maximale Größe: 3 MB</translation> +<translation id="255747371423522804">Vorhandener Gruppe hinzufügen</translation> <translation id="2558896001721082624">Optionen für Bedienungshilfen im Systemmenü immer anzeigen</translation> <translation id="2562685439590298522">Google Docs</translation> <translation id="2562743677925229011">Nicht in <ph name="SHORT_PRODUCT_NAME" /> angemeldet</translation> @@ -1310,6 +1313,7 @@ <translation id="2972581237482394796">&Wiederholen</translation> <translation id="2972642118232180842">Nur wichtige Inhalte ausführen (empfohlen)</translation> <translation id="2973324205039581528">Website stummschalten</translation> +<translation id="2977480621796371840">Aus Gruppe entfernen</translation> <translation id="2979639724566107830">In neuem Fenster öffnen</translation> <translation id="2981113813906970160">Großen Cursor verwenden</translation> <translation id="2982970937345031">Anonym melden</translation> @@ -1560,6 +1564,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" /> %</translation> <translation id="338583716107319301">Trennzeichen</translation> <translation id="3389312115541230716">Klicken Sie mit der rechten Maustaste auf das Symbol <ph name="SMALL_PRODUCT_LOGO" /> in der Taskleiste</translation> +<translation id="3393352139658145068">Assistant wird aktiviert, sobald jemand "Ok Google" sagt. Damit dein Akku geschont wird, wird "Ok Google" nur aktiviert, wenn Ihr Gerät an eine Stromquelle angeschlossen ist.</translation> <translation id="3396800784455899911">Wenn Sie auf die Schaltfläche "Akzeptieren und fortfahren" klicken, willigen Sie damit in die oben für diese Google-Dienste beschriebene Verarbeitung Ihrer Daten ein.</translation> <translation id="3399432415385675819">Benachrichtigungen werden deaktiviert</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3162,6 +3167,7 @@ <translation id="5816434091619127343">Die angeforderten Änderungen würden den Drucker unbrauchbar machen.</translation> <translation id="5817918615728894473">Koppeln</translation> <translation id="5821565227679781414">Verknüpfung erstellen</translation> +<translation id="5825412242012995131">An (empfohlen)</translation> <translation id="5826507051599432481">Allgemeiner Name (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Wird gedruckt...</translation> @@ -3706,6 +3712,11 @@ <translation id="6629841649550503054">Alle Daten wurden in <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> gesichert.</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> fordert ständigen Zugriff auf ein Zertifikat an, um sich in Ihrem Namen zu authentifizieren.</translation> <translation id="6635956300022133031">Stimmen für die Sprachausgabe auswählen und anpassen</translation> +<translation id="6637585982786704944">Apps und Websites, denen Sie die entsprechende Berechtigung erteilt haben, können auf die Kontoinformationen zugreifen, die sie benötigen, um ordnungsgemäß zu funktionieren. + + Wenn Sie kein Konto hinzufügen möchten, melden Sie sich als Gast an oder öffnen Sie ein Inkognitofenster für das Surfen im Web. + + Unter "Einstellungen" -> "Google Konten" können Sie alle Konten abrufen und verwalten.</translation> <translation id="6639554308659482635">SQLite-Speicher</translation> <translation id="6641138807883536517">Das zufällig generierte Passwort für das Sicherheitsmodul ist nicht verfügbar. Dies ist nach einem Powerwash normal.</translation> <translation id="6643016212128521049">Löschen</translation> @@ -3907,6 +3918,7 @@ <translation id="6957231940976260713">Name des Dienstes</translation> <translation id="696203921837389374">Synchronisierung über mobile Daten aktivieren</translation> <translation id="6964390816189577014">Held</translation> +<translation id="6964760285928603117">Aus Gruppe entfernen</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Port</translation> <translation id="6965978654500191972">Gerät</translation> @@ -4016,6 +4028,7 @@ <translation id="7109543803214225826">Verknüpfung entfernt</translation> <translation id="7113502843173351041">Zugriff auf E-Mail-Adresse zulassen</translation> <translation id="7114054701490058191">Die Passwörter stimmen nicht überein</translation> +<translation id="7114648273807173152">Wenn Sie Smart Lock für die Anmeldung in Ihrem Google-Konto verwenden möchten, gehen Sie zu "Einstellungen" > "Verbundene Geräte" > "Mein Smartphone" > "Smart Lock".</translation> <translation id="7117228822971127758">Bitte versuchen Sie es später noch einmal</translation> <translation id="7117247127439884114">Erneut anmelden...</translation> <translation id="711840821796638741">Verwaltete Lesezeichen anzeigen</translation> @@ -4171,6 +4184,7 @@ <translation id="7348093485538360975">Bildschirmtastatur</translation> <translation id="7352651011704765696">Ein Problem ist aufgetreten.</translation> <translation id="735361434055555355">Linux wird installiert…</translation> +<translation id="7353887511974462734">Vorhandener Gruppe hinzufügen</translation> <translation id="735745346212279324">VPN-Verbindung getrennt</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" /> Elemente werden kopiert...</translation> <translation id="7359588939039777303">Werbung blockiert.</translation> @@ -4233,7 +4247,6 @@ <translation id="7456847797759667638">Adresse öffnen...</translation> <translation id="7461924472993315131">Anpinnen</translation> <translation id="7463006580194749499">Person hinzufügen</translation> -<translation id="7464902436585505072">"Ok Google"-Sprachmodell</translation> <translation id="7465778193084373987">URL zum Zurückrufen von Netscape-Zertifikaten</translation> <translation id="7469894403370665791">Verbindung zu diesem Netzwerk automatisch herstellen</translation> <translation id="747114903913869239">Fehler: Erweiterung kann nicht entschlüsselt werden.</translation> @@ -4802,6 +4815,7 @@ <translation id="827097179112817503">Schaltfläche "Startseite" anzeigen</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 Lesezeichen gelöscht}other{# Lesezeichen gelöscht}}</translation> <translation id="8272443605911821513">Zum Verwalten Ihrer Erweiterungen klicken Sie im Menü "Mehr Tools" auf "Erweiterungen".</translation> +<translation id="8272966760965438857">Google Konten an einem zentralen Ort verwalten</translation> <translation id="8274332263553132018">Datei streamen</translation> <translation id="8274924778568117936">Schalten Sie Ihr <ph name="DEVICE_TYPE" /> nicht aus bzw. schließen Sie es nicht, bis das Update abgeschlossen ist. Nach Abschluss der Installation wird Ihr <ph name="DEVICE_TYPE" /> neu gestartet.</translation> <translation id="8275038454117074363">Importieren</translation> @@ -5189,6 +5203,7 @@ <translation id="8883847527783433352">Mit einem anderen Konto synchronisieren</translation> <translation id="8885197664446363138">Smart Lock ist nicht verfügbar.</translation> <translation id="88870264962436283">Touch ID mit <ph name="APP_NAME" /> verwenden</translation> +<translation id="8888253246822647887">Ihre App wird geöffnet, wenn das Upgrade abgeschlossen ist. Upgrades können ein paar Minuten dauern.</translation> <translation id="8888432776533519951">Farbe:</translation> <translation id="8890516388109605451">Quellen</translation> <translation id="8892168913673237979">Fertig!</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb index 596f82a5..a2fb4e2 100644 --- a/chrome/app/resources/generated_resources_el.xtb +++ b/chrome/app/resources/generated_resources_el.xtb
@@ -518,7 +518,6 @@ <translation id="175772926354468439">Ενεργοποίηση θέματος</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Προβολή στο Chrome Web Store</translation> -<translation id="1761588866118490543">Φωνητικό μοντέλο</translation> <translation id="176193854664720708">Ο αισθητήρας δακτυλικού αποτυπώματος βρίσκεται στο κουμπί λειτουργίας. Αγγίξτε το ελαφρώς με οποιοδήποτε δάκτυλο.</translation> <translation id="1763046204212875858">Δημιουργία συντομεύσεων εφαρμογής</translation> <translation id="1763108912552529023">Συνεχίστε την εξερεύνηση</translation> @@ -3168,7 +3167,6 @@ <translation id="5804241973901381774">Άδειες</translation> <translation id="5805697420284793859">Διαχείριση παραθύρου</translation> <translation id="580571955903695899">Αναδιοργάνωση κατά τίτλο</translation> -<translation id="5806795763657948556">Περισσότεροι προορισμοί</translation> <translation id="5811750797187914944">Όλα είναι έτοιμα</translation> <translation id="5814126672212206791">Τύπος σύνδεσης</translation> <translation id="5815645614496570556">Διεύθυνση X.400</translation> @@ -4255,7 +4253,6 @@ <translation id="7456847797759667638">Άνοιγμα Τοποθεσίας...</translation> <translation id="7461924472993315131">Καρφίτσωμα</translation> <translation id="7463006580194749499">Προσθήκη χρήστη</translation> -<translation id="7464902436585505072">Φωνητικό μοντέλο "Ok Google"</translation> <translation id="7465778193084373987">URL ανάκλησης πιστοποιητικού Netscape</translation> <translation id="7469894403370665791">Αυτόματη σύνδεση σε αυτό το δίκτυο</translation> <translation id="747114903913869239">Σφάλμα: Δεν είναι δυνατή η αποκωδικοποίηση της επέκτασης</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index 1557571..d084592 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -518,7 +518,6 @@ <translation id="175772926354468439">Enable theme</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">View in Chrome Web Store</translation> -<translation id="1761588866118490543">Voice model</translation> <translation id="176193854664720708">The fingerprint sensor is in the power button. Touch it lightly with any finger.</translation> <translation id="1763046204212875858">Create application shortcuts</translation> <translation id="1763108912552529023">Keep exploring</translation> @@ -3166,7 +3165,6 @@ <translation id="5804241973901381774">Permissions</translation> <translation id="5805697420284793859">Window manager</translation> <translation id="580571955903695899">Reorder by Title</translation> -<translation id="5806795763657948556">More destinations</translation> <translation id="5811750797187914944">All set</translation> <translation id="5814126672212206791">Connection type</translation> <translation id="5815645614496570556">X.400 Address</translation> @@ -4253,7 +4251,6 @@ <translation id="7456847797759667638">Open Location...</translation> <translation id="7461924472993315131">Pin</translation> <translation id="7463006580194749499">Add person</translation> -<translation id="7464902436585505072">"Ok Google" voice model</translation> <translation id="7465778193084373987">Netscape Certificate Revocation URL</translation> <translation id="7469894403370665791">Automatically connect to this network</translation> <translation id="747114903913869239">Error: Unable to decode extension</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb index 3928d7a..f318d7b 100644 --- a/chrome/app/resources/generated_resources_es-419.xtb +++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -131,7 +131,7 @@ <translation id="1177138678118607465">Es posible que Google use tu historial de navegación para personalizar Búsqueda, los anuncios y otros servicios de Google. Puedes cambiar esta configuración en cualquier momento en myaccount.google.com.</translation> <translation id="1177863135347784049">Personalizado</translation> <translation id="1178581264944972037">Detener</translation> -<translation id="1181037720776840403">Eliminar</translation> +<translation id="1181037720776840403">Quitar</translation> <translation id="1183237619868651138">No se puede instalar <ph name="EXTERNAL_CRX_FILE" /> en la memoria caché local.</translation> <translation id="1185924365081634987">También puedes intentar <ph name="GUEST_SIGNIN_LINK_START" />navegar como invitado<ph name="GUEST_SIGNIN_LINK_END" /> para solucionar este error de red.</translation> <translation id="1186771945450942097">Quitar software dañino</translation> @@ -364,6 +364,7 @@ <translation id="15373452373711364">Cursor del mouse grande</translation> <translation id="1538729222189715449">Abriendo archivos de Linux…</translation> <translation id="1540605929960647700">Activar el modo de demostración</translation> +<translation id="1541396123399225659">Agregar a un nuevo grupo</translation> <translation id="1542514202066550870">Esta pestaña muestra contenido de RV en un visor.</translation> <translation id="1543284117603151572">Importados desde Edge</translation> <translation id="1545177026077493356">Modo kiosco automático</translation> @@ -402,6 +403,7 @@ <translation id="1593594475886691512">Aplicando formato...</translation> <translation id="159359590073980872">Caché de imagen</translation> <translation id="1593926297800505364">Guardar la forma de pago</translation> +<translation id="1595492813686795610">Se está actualizando Linux</translation> <translation id="1598233202702788831">Tu administrador inhabilitó las actualizaciones.</translation> <translation id="1600857548979126453">Acceder al servidor del depurador de páginas</translation> <translation id="1601560923496285236">Aplicar</translation> @@ -513,7 +515,6 @@ <translation id="175772926354468439">Habilitar tema</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Ver en Chrome Web Store</translation> -<translation id="1761588866118490543">Modelo de voz</translation> <translation id="176193854664720708">El sensor de huellas digitales es el botón de encendido. Tócalo suavemente con cualquier dedo.</translation> <translation id="1763046204212875858">Crear accesos directos a aplicaciones</translation> <translation id="1763108912552529023">Seguir explorando</translation> @@ -929,12 +930,13 @@ <translation id="2377667304966270281">Fallos graves</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> archivos seleccionados</translation> <translation id="237828693408258535">¿Deseas traducir esta página?</translation> -<translation id="2378346380592252785">Actualiza las credenciales para <ph name="SHARE_PATH" />.</translation> +<translation id="2378346380592252785">Actualiza las credenciales para <ph name="SHARE_PATH" /></translation> <translation id="2378982052244864789">Seleccionar el directorio de extensión.</translation> <translation id="2379232090534544565">Un sitio está accediendo a la entrada de audio y video</translation> <translation id="2379281330731083556">Imprimir mediante el sistema de diálogo... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Preguntar antes de enviar (recomendado)</translation> <translation id="2384436799579181135">Se produjo un error. Revisa la impresora y vuelve a intentarlo.</translation> +<translation id="2386926718981642523">Di "Ok Google" para acceder al Asistente en cualquier momento</translation> <translation id="2387458720915042159">Tipo de conexión proxy</translation> <translation id="2391419135980381625">Fuente estándar</translation> <translation id="2391762656119864333">Revocar</translation> @@ -1040,6 +1042,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> no se pudo conectar a <ph name="NETWORK_ID" />. Selecciona otra red o inténtalo de nuevo.</translation> <translation id="2553440850688409052">Ocultar este complemento</translation> <translation id="2554553592469060349">El archivo seleccionado es demasiado grande (tamaño máximo: 3 MB).</translation> +<translation id="255747371423522804">Agregar al grupo existente</translation> <translation id="2558896001721082624">Siempre mostrar opciones de accesibilidad en el menú del sistema</translation> <translation id="2562685439590298522">Documentos</translation> <translation id="2562743677925229011">No accediste a <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1312,6 +1315,7 @@ <translation id="2972581237482394796">&Rehacer</translation> <translation id="2972642118232180842">Ejecutar solo contenido importante (recomendado)</translation> <translation id="2973324205039581528">Silenciar el sitio</translation> +<translation id="2977480621796371840">Quitar del grupo</translation> <translation id="2979639724566107830">Abrir en una ventana nueva</translation> <translation id="2981113813906970160">Mostrar cursor del mouse grande</translation> <translation id="2982970937345031">Informar de forma anónima</translation> @@ -1562,6 +1566,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Separador</translation> <translation id="3389312115541230716">Haz clic con el botón derecho en el ícono <ph name="SMALL_PRODUCT_LOGO" /> en la barra de tareas</translation> +<translation id="3393352139658145068">Activa el Asistente cuando alguien dice "Ok Google". Para ahorrar batería, "Ok Google" solo se activa cuando tu dispositivo está conectado a una fuente de alimentación.</translation> <translation id="3396800784455899911">Al hacer clic en el botón "Aceptar y continuar", confirmas el procesamiento descrito anteriormente para estos servicios de Google.</translation> <translation id="3399432415385675819">Se inhabilitarán las notificaciones</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -2022,7 +2027,7 @@ <translation id="4037889604535939429">Editar persona</translation> <translation id="4042264909745389898">Condiciones del Sistema operativo Google Chrome</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{Salir de la página}other{Salir de las páginas}}</translation> -<translation id="404299405565920089">Aquí puedes administrar todas las Cuentas de Google con las que hayas accedido en apps y sitios web. Las apps y sitios web que tienen tu permiso pueden acceder a la información de la cuenta que necesitan para funcionar correctamente.</translation> +<translation id="404299405565920089">Aquí puedes administrar todas las Cuentas de Google con las que hayas accedido en apps y sitios web. Las apps y los sitios web que tienen tu permiso pueden acceder a la información de la cuenta que necesitan para funcionar correctamente.</translation> <translation id="4044612648082411741">Ingresar la contraseña del certificado</translation> <translation id="404493185430269859">Motor de búsqueda predeterminado</translation> <translation id="4052120076834320548">Diminuto</translation> @@ -3164,6 +3169,7 @@ <translation id="5816434091619127343">Los cambios solicitados harán que la impresora no se pueda utilizar.</translation> <translation id="5817918615728894473">Sincronizar</translation> <translation id="5821565227679781414">Crear acceso directo</translation> +<translation id="5825412242012995131">Activado (recomendado)</translation> <translation id="5826507051599432481">Nombre común (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Impresión...</translation> @@ -3708,6 +3714,11 @@ <translation id="6629841649550503054">Todos los archivos están guardados en una copia de seguridad en <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />.</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> solicita acceso permanente a un certificado para autenticarse en tu nombre.</translation> <translation id="6635956300022133031">Seleccionar y personalizar las voces de texto a voz</translation> +<translation id="6637585982786704944">Las apps y los sitios web que tengan tu permiso podrán acceder a la información de la cuenta que necesiten para funcionar correctamente. + + Si no quieres agregar una cuenta, accede como invitado o abre una ventana de incógnito para navegar por la Web. + + Para ver y administrar todas las cuentas, ve a Configuración -> Cuentas de Google.</translation> <translation id="6639554308659482635">Memoria SQLite</translation> <translation id="6641138807883536517">La contraseña del módulo de seguridad generada de manera aleatoria no está disponible. Esto es normal después de un Powerwash.</translation> <translation id="6643016212128521049">Borrar</translation> @@ -3909,6 +3920,7 @@ <translation id="6957231940976260713">Nombre del servicio</translation> <translation id="696203921837389374">Habilitar la sincronización mediante datos móviles</translation> <translation id="6964390816189577014">Héroe</translation> +<translation id="6964760285928603117">Quitar del grupo</translation> <translation id="6965382102122355670">Aceptar</translation> <translation id="6965648386495488594">Puerto</translation> <translation id="6965978654500191972">Dispositivo</translation> @@ -4018,6 +4030,7 @@ <translation id="7109543803214225826">Se quitó el acceso directo</translation> <translation id="7113502843173351041">Conocer tu dirección de correo electrónico</translation> <translation id="7114054701490058191">Las contraseñas no coinciden</translation> +<translation id="7114648273807173152">Si quieres usar Smart Lock para acceder a tu Cuenta de Google, ve a Configuración > Dispositivos conectados > Tu teléfono > Smart Lock.</translation> <translation id="7117228822971127758">Vuelve a intentarlo más tarde</translation> <translation id="7117247127439884114">Volver a acceder</translation> <translation id="711840821796638741">Mostrar favoritos administrados</translation> @@ -4173,6 +4186,7 @@ <translation id="7348093485538360975">Teclado en pantalla</translation> <translation id="7352651011704765696">Se produjo un error</translation> <translation id="735361434055555355">Instalando Linux…</translation> +<translation id="7353887511974462734">Agregar al grupo existente</translation> <translation id="735745346212279324">VPN desconectada</translation> <translation id="7359359531237882347">Copiando <ph name="NUMBER_OF_ITEMS" /> elementos…</translation> <translation id="7359588939039777303">Se bloquearon anuncios.</translation> @@ -4235,7 +4249,6 @@ <translation id="7456847797759667638">Abrir ubicación...</translation> <translation id="7461924472993315131">Fijar</translation> <translation id="7463006580194749499">Agregar a una persona</translation> -<translation id="7464902436585505072">Modelo de voz de "Ok Google"</translation> <translation id="7465778193084373987">URL de revocación del certificado de Netscape</translation> <translation id="7469894403370665791">Conectarse automáticamente a esta red</translation> <translation id="747114903913869239">Error: No se puede decodificar la extensión</translation> @@ -4805,6 +4818,7 @@ <translation id="827097179112817503">Mostrar el botón de la Página principal</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 favorito borrado}other{# favoritos borrados}}</translation> <translation id="8272443605911821513">Para administrar tus extensiones, haz clic en Extensiones en el menú "Más herramientas".</translation> +<translation id="8272966760965438857">Administra tus Cuentas de Google en un solo lugar</translation> <translation id="8274332263553132018">Transmitir archivo</translation> <translation id="8274924778568117936">No apagues ni cierres el dispositivo <ph name="DEVICE_TYPE" /> hasta que finalice la actualización. Cuando el proceso termine, el dispositivo <ph name="DEVICE_TYPE" /> se reiniciará.</translation> <translation id="8275038454117074363">Importar</translation> @@ -5094,7 +5108,7 @@ <translation id="8730621377337864115">Listo</translation> <translation id="8732030010853991079">Para usar esta extensión, haz clic en este ícono.</translation> <translation id="8732212173949624846">Leer y cambiar el historial de navegación en todos los dispositivos a los que accediste.</translation> -<translation id="8732844209475700754">Más opciones de configuración relacionadas con la privacidad, la seguridad y la recopilación de datos</translation> +<translation id="8732844209475700754">Más opciones de configuración relacionadas con la privacidad, seguridad y recopilación de datos</translation> <translation id="8734073480934656039">Al habilitar esta opción, las aplicaciones del kiosco podrán iniciarse automáticamente en el inicio.</translation> <translation id="873545264931343897">Cuando <ph name="PLUGIN_NAME" /> termine de actualizarse, vuelve a cargar la página para activarlo</translation> <translation id="8736288397686080465">Este sitio se actualizó en segundo plano.</translation> @@ -5192,6 +5206,7 @@ <translation id="8883847527783433352">Sincronizar con otra cuenta</translation> <translation id="8885197664446363138">Smart Lock no está disponible</translation> <translation id="88870264962436283">Usar Touch ID con <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Cuando se complete la actualización, se abrirá la app. Las actualizaciones pueden tardar algunos minutos.</translation> <translation id="8888432776533519951">Color:</translation> <translation id="8890516388109605451">Fuentes</translation> <translation id="8892168913673237979">¡Listo!</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index 1c15ef8..c6483b1 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -131,7 +131,7 @@ <translation id="1177138678118607465">Es posible que Google use tu historial de navegación para personalizar los anuncios de búsqueda y otros servicios de Google. Puedes cambiar esta opción en cualquier momento en la página myaccount.google.com/activitycontrols/search</translation> <translation id="1177863135347784049">Personalizado</translation> <translation id="1178581264944972037">Pausar</translation> -<translation id="1181037720776840403">Eliminar</translation> +<translation id="1181037720776840403">Quitar</translation> <translation id="1183237619868651138">No se puede instalar <ph name="EXTERNAL_CRX_FILE" /> en la memoria caché local.</translation> <translation id="1185924365081634987">También puedes intentar <ph name="GUEST_SIGNIN_LINK_START" />navegar como invitado<ph name="GUEST_SIGNIN_LINK_END" /> para solucionar el problema de red.</translation> <translation id="1186771945450942097">Elimina el software dañino</translation> @@ -367,6 +367,7 @@ <translation id="15373452373711364">Cursor del ratón grande</translation> <translation id="1538729222189715449">Abriendo archivos de Linux...</translation> <translation id="1540605929960647700">Habilitar modo de demostración</translation> +<translation id="1541396123399225659">Añadir a un grupo nuevo</translation> <translation id="1542514202066550870">Esta pestaña está proyectando contenido de realidad virtual a un visor.</translation> <translation id="1543284117603151572">Importado desde Edge</translation> <translation id="1545177026077493356">Modo kiosco automático</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Formateando...</translation> <translation id="159359590073980872">Caché de imagen</translation> <translation id="1593926297800505364">Guardar el método de pago</translation> +<translation id="1595492813686795610">Linux se está actualizando</translation> <translation id="1598233202702788831">El administrador ha inhabilitado las actualizaciones.</translation> <translation id="1600857548979126453">Acceder al servidor de depuración de página</translation> <translation id="1601560923496285236">Aplicar</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Habilitar tema</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Ver en Chrome Web Store</translation> -<translation id="1761588866118490543">Modelo de voz</translation> <translation id="176193854664720708">El sensor de huellas digitales está situado en el botón de encendido. Tócalo ligeramente con un dedo.</translation> <translation id="1763046204212875858">Crear accesos directos a aplicaciones</translation> <translation id="1763108912552529023">Seguir explorando</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">Imprimir utilizando el cuadro de diálogo del sistema <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Preguntar antes de enviar (recomendado)</translation> <translation id="2384436799579181135">Se ha producido un error. Comprueba tu impresora y vuelve a intentarlo.</translation> +<translation id="2386926718981642523">Acceder al Asistente cuando digas "Ok Google"</translation> <translation id="2387458720915042159">Tipo de conexión con proxy</translation> <translation id="2391419135980381625">Fuente estándar</translation> <translation id="2391762656119864333">Revocar</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> no ha podido establecer conexión con <ph name="NETWORK_ID" />. Selecciona otra red o vuelve a intentarlo.</translation> <translation id="2553440850688409052">Ocultar este complemento</translation> <translation id="2554553592469060349">El archivo seleccionado es demasiado grande (tamaño máximo: 3 MB).</translation> +<translation id="255747371423522804">Añadir a un grupo existente</translation> <translation id="2558896001721082624">Mostrar siempre opciones de accesibilidad en el menú del sistema</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2562743677925229011">No has iniciado sesión en <ph name="SHORT_PRODUCT_NAME" />.</translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">&Rehacer</translation> <translation id="2972642118232180842">Ejecutar solo contenido importante (recomendado)</translation> <translation id="2973324205039581528">Silenciar sitio web</translation> +<translation id="2977480621796371840">Quitar del grupo</translation> <translation id="2979639724566107830">Abrir en una ventana nueva</translation> <translation id="2981113813906970160">Mostrar cursor del ratón grande</translation> <translation id="2982970937345031">Enviar de forma anónima</translation> @@ -1563,6 +1567,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" /> %</translation> <translation id="338583716107319301">Separador</translation> <translation id="3389312115541230716">Haz clic con el botón derecho en el icono <ph name="SMALL_PRODUCT_LOGO" /> situado en la barra de tareas</translation> +<translation id="3393352139658145068">Activa el Asistente cuando alguien diga "Ok Google". Para ahorrar batería, "Ok Google" solo se activará cuando el dispositivo esté conectado a una fuente de alimentación.</translation> <translation id="3396800784455899911">Al hacer clic en el botón "Aceptar y continuar", declaras que estás conforme con el proceso descrito anteriormente de estos servicios de Google.</translation> <translation id="3399432415385675819">Se inhabilitarán las notificaciones</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3164,6 +3169,7 @@ <translation id="5816434091619127343">Los cambios solicitados en la impresora harían que no se pudiera usar.</translation> <translation id="5817918615728894473">Vincular</translation> <translation id="5821565227679781414">Crear acceso directo</translation> +<translation id="5825412242012995131">Activado (opción recomendada)</translation> <translation id="5826507051599432481">Nombre común (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Imprimiendo...</translation> @@ -3708,6 +3714,11 @@ <translation id="6629841649550503054">Se ha realizado la copia de seguridad de todos los archivos en <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> desea acceder de forma permanente a un certificado parar autenticarse en tu nombre.</translation> <translation id="6635956300022133031">Seleccionar y personalizar voces de la síntesis de voz</translation> +<translation id="6637585982786704944">Las aplicaciones y los sitios web a los que hayas dado permiso pueden acceder a la información de la cuenta que necesiten para funcionar correctamente. + + Si no quieres añadir ninguna cuenta, inicia sesión como invitado o abre una ventana de incógnito para navegar por Internet. + + Puedes ver y gestionar todas tus cuentas en Configuración -> Cuentas de Google.</translation> <translation id="6639554308659482635">Memoria de SQLite</translation> <translation id="6641138807883536517">La contraseña del modulo de seguridad generada de forma aleatoria no está disponible (suele ocurrir después de un Powerwash).</translation> <translation id="6643016212128521049">Eliminar</translation> @@ -3909,6 +3920,7 @@ <translation id="6957231940976260713">Nombre de servicio</translation> <translation id="696203921837389374">Habilitar sincronización a través de redes de datos móviles</translation> <translation id="6964390816189577014">Héroe</translation> +<translation id="6964760285928603117">Quitar del grupo</translation> <translation id="6965382102122355670">Aceptar</translation> <translation id="6965648386495488594">Puerto</translation> <translation id="6965978654500191972">Dispositivo</translation> @@ -4018,6 +4030,7 @@ <translation id="7109543803214225826">Se ha quitado el acceso directo</translation> <translation id="7113502843173351041">Conocer tu dirección de correo electrónico</translation> <translation id="7114054701490058191">Las contraseñas no coinciden</translation> +<translation id="7114648273807173152">Si quieres usar Smart Lock para iniciar sesión en tu cuenta de Google, ve a Configuración > Dispositivos conectados > Tu teléfono > Smart Lock.</translation> <translation id="7117228822971127758">Inténtalo de nuevo más tarde</translation> <translation id="7117247127439884114">Volver a iniciar sesión...</translation> <translation id="711840821796638741">Mostrar marcadores administrados</translation> @@ -4173,6 +4186,7 @@ <translation id="7348093485538360975">Teclado en pantalla</translation> <translation id="7352651011704765696">Se ha producido un problema</translation> <translation id="735361434055555355">Instalando Linux...</translation> +<translation id="7353887511974462734">Añadir a un grupo existente</translation> <translation id="735745346212279324">VPN desconectada</translation> <translation id="7359359531237882347">Se están copiando <ph name="NUMBER_OF_ITEMS" /> elementos...</translation> <translation id="7359588939039777303">Los anuncios están bloqueados.</translation> @@ -4235,7 +4249,6 @@ <translation id="7456847797759667638">Abrir ubicación...</translation> <translation id="7461924472993315131">Fijar</translation> <translation id="7463006580194749499">Añadir perfil</translation> -<translation id="7464902436585505072">Modelo de voz de "Ok Google"</translation> <translation id="7465778193084373987">URL de revocación de certificado de Netscape</translation> <translation id="7469894403370665791">Conectarse automáticamente a esta red</translation> <translation id="747114903913869239">Error: no es posible decodificar la extensión.</translation> @@ -4805,6 +4818,7 @@ <translation id="827097179112817503">Mostrar el botón de página principal</translation> <translation id="8271246892936492311">{COUNT,plural, =1{Se ha eliminado 1 marcador}other{Se han eliminado # marcadores}}</translation> <translation id="8272443605911821513">Para administrar tus extensiones, haz clic en la opción Extensiones del menú Más herramientas.</translation> +<translation id="8272966760965438857">Gestiona tus cuentas de Google en un mismo lugar</translation> <translation id="8274332263553132018">Enviar archivo</translation> <translation id="8274924778568117936">No apagues ni cierres tu <ph name="DEVICE_TYPE" /> hasta que termine de actualizarse. Tu <ph name="DEVICE_TYPE" /> se reiniciará cuando se complete la instalación.</translation> <translation id="8275038454117074363">Importar</translation> @@ -5191,6 +5205,7 @@ <translation id="8883847527783433352">Sincronizar con otra cuenta</translation> <translation id="8885197664446363138">Smart Lock no está disponible</translation> <translation id="88870264962436283">Usar Touch ID con <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">La aplicación se abrirá cuando la actualización se haya completado. Las actualizaciones pueden tardar varios minutos.</translation> <translation id="8888432776533519951">Color:</translation> <translation id="8890516388109605451">Fuentes</translation> <translation id="8892168913673237979">¡Listo!</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb index 2d8461d..f451369 100644 --- a/chrome/app/resources/generated_resources_et.xtb +++ b/chrome/app/resources/generated_resources_et.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Suur hiirekursor</translation> <translation id="1538729222189715449">Linuxi failide avamine …</translation> <translation id="1540605929960647700">Demorežiimi lubamine</translation> +<translation id="1541396123399225659">Uude gruppi lisamine</translation> <translation id="1542514202066550870">Sellel vahekaardil esitatakse VR-sisu peakomplektis.</translation> <translation id="1543284117603151572">Imporditud teenusest Edge</translation> <translation id="1545177026077493356">Automaatne kioskirežiim</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Vormindamine ...</translation> <translation id="159359590073980872">Kujutiste vahemälu</translation> <translation id="1593926297800505364">Salvestab makseviisi</translation> +<translation id="1595492813686795610">Linuxit uuendatakse</translation> <translation id="1598233202702788831">Administraator on värskendused keelanud.</translation> <translation id="1600857548979126453">Juurdepääs lehesiluri tagaosale</translation> <translation id="1601560923496285236">Rakenda</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Luba teema</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Kuva Chrome'i veebipoes</translation> -<translation id="1761588866118490543">Häälemudel</translation> <translation id="176193854664720708">Sõrmejäljeandur on toitenupp. Puudutage seda õrnalt mis tahes sõrmega.</translation> <translation id="1763046204212875858">Rakenduse otseteede loomine</translation> <translation id="1763108912552529023">Jätka uurimist</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">Prindi süsteemidialoogi abil ... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Küsib enne saatmist (soovitatav)</translation> <translation id="2384436799579181135">Ilmnes viga. Kontrollige printerit ja proovige uuesti.</translation> +<translation id="2386926718981642523">Pääsete oma assistendile juurde igal ajal, öeldes lihtsalt „Ok Google”</translation> <translation id="2387458720915042159">Puhverserveri ühenduse tüüp</translation> <translation id="2391419135980381625">Standardne font</translation> <translation id="2391762656119864333">Tühista</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> ei suutnud ühenduda võrku <ph name="NETWORK_ID" />. Valige muu võrk või proovige uuesti.</translation> <translation id="2553440850688409052">Peida pistikprogramm</translation> <translation id="2554553592469060349">Valitud fail on liiga suur (max suurus on 3 MB).</translation> +<translation id="255747371423522804">Olemasolevasse gruppi lisamine</translation> <translation id="2558896001721082624">Kuva alati juurdepääsuvalikud süsteemimenüüs</translation> <translation id="2562685439590298522">Dokumendid</translation> <translation id="2562743677925229011">Pole teenusesse <ph name="SHORT_PRODUCT_NAME" /> sisse logitud</translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">&Tee uuesti</translation> <translation id="2972642118232180842">Käita ainult olulist sisu (soovitatav)</translation> <translation id="2973324205039581528">Vaigista sait</translation> +<translation id="2977480621796371840">Grupist eemaldamine</translation> <translation id="2979639724566107830">Ava uues aknas</translation> <translation id="2981113813906970160">Kuva suur hiirekursor</translation> <translation id="2982970937345031">Anonüümselt teavitamine</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Eraldaja</translation> <translation id="3389312115541230716">Paremklõpsake tegumiribal ikoonil <ph name="SMALL_PRODUCT_LOGO" /></translation> +<translation id="3393352139658145068">Assistendi aktiveerimine, kui keegi ütleb „Ok Google”. Aku säästmiseks toimib „Ok Google” ainult juhul, kui seade on ühendatud toiteallikaga.</translation> <translation id="3396800784455899911">Kui klõpsate nupul „Nõustu ja jätka”, nõustute nende Google'i teenuste puhul andmete ülalkirjeldatud töötlemisega.</translation> <translation id="3399432415385675819">Märguanded keelatakse</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3167,6 +3172,7 @@ <translation id="5816434091619127343">Nõutud printeri muudatuste korral ei saaks printerit kasutada.</translation> <translation id="5817918615728894473">Seo</translation> <translation id="5821565227679781414">Loo otsetee</translation> +<translation id="5825412242012995131">Sees (soovitatav)</translation> <translation id="5826507051599432481">Üldnimi (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Printimine ...</translation> @@ -3711,6 +3717,11 @@ <translation id="6629841649550503054">Kõik failid varundati teenuses <ph name="BEGIN_LINK" />Google Drive.<ph name="END_LINK" /></translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> soovib püsijuurdepääsu sertifikaadile, et end teie nimel autentida.</translation> <translation id="6635956300022133031">Saate valida ja kohandada kõnesünteesi hääli</translation> +<translation id="6637585982786704944">Rakendused ja veebisaidid, millel on teie luba, pääsevad juurde konto teabele, mida on vaja ootuspäraseks toimimiseks. + + Kui te ei soovi kontot lisada, logige külalisena sisse või avage veebis sirvimiseks inkognito aken. + + Kõigi kontode vaatamiseks ja haldamiseks tehke valikud Seaded -> Google’i kontod.</translation> <translation id="6639554308659482635">SQLite'i mälu</translation> <translation id="6641138807883536517">Juhuslikult loodud turvamooduli parool pole saadaval. See on pärast Powerwashi tavapärane.</translation> <translation id="6643016212128521049">Tühjenda</translation> @@ -3912,6 +3923,7 @@ <translation id="6957231940976260713">Teenuse nimi</translation> <translation id="696203921837389374">Luba sünkroonimine mobiilse andmeside kaudu</translation> <translation id="6964390816189577014">Kangelane</translation> +<translation id="6964760285928603117">Grupist eemaldamine</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Port</translation> <translation id="6965978654500191972">Seade</translation> @@ -4021,6 +4033,7 @@ <translation id="7109543803214225826">Otsetee on eemaldatud</translation> <translation id="7113502843173351041">Teave teie e-posti aadressi kohta</translation> <translation id="7114054701490058191">Paroolid ei ühti</translation> +<translation id="7114648273807173152">Oma Google’i kontole funktsiooni Smart Lock abil sisselogimiseks tehke valikud Seaded > Ühendatud seaded > Teie telefon > Smart Lock.</translation> <translation id="7117228822971127758">Proovige hiljem uuesti</translation> <translation id="7117247127439884114">Logi uuesti sisse ...</translation> <translation id="711840821796638741">Kuva hallatud järjehoidjad</translation> @@ -4176,6 +4189,7 @@ <translation id="7348093485538360975">Ekraanil kuvatav klaviatuur</translation> <translation id="7352651011704765696">Midagi läks valesti</translation> <translation id="735361434055555355">Linuxi installimine …</translation> +<translation id="7353887511974462734">Olemasolevasse gruppi lisamine</translation> <translation id="735745346212279324">VPN-i ühendus on katkestatud</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" /> üksuse kopeerimine …</translation> <translation id="7359588939039777303">Reklaamid on blokeeritud.</translation> @@ -4238,7 +4252,6 @@ <translation id="7456847797759667638">Ava asukoht...</translation> <translation id="7461924472993315131">Kinnita</translation> <translation id="7463006580194749499">Lisa inimene</translation> -<translation id="7464902436585505072">Otsetee sõna „Ok Google" häälmudel</translation> <translation id="7465778193084373987">Netscape'i sertifikaadi tühistus-URL</translation> <translation id="7469894403370665791">Võta automaatselt selle võrguga ühendust</translation> <translation id="747114903913869239">Viga: laiendust ei õnnestu dekodeerida</translation> @@ -4808,6 +4821,7 @@ <translation id="827097179112817503">Kuva nupp Avaleht</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 järjehoidja on kustutatud}other{# järjehoidjat on kustutatud}}</translation> <translation id="8272443605911821513">Hallake oma laiendusi, klõpsates menüüs „Rohkem tööriistu” valikul Laiendused.</translation> +<translation id="8272966760965438857">Hallake oma Google’i kontosid ühes kohas</translation> <translation id="8274332263553132018">Faili ülekandmine</translation> <translation id="8274924778568117936">Ärge lülitage välja ega sulgege oma seadet <ph name="DEVICE_TYPE" />, kuni värskendus lõpule viiakse. Seade <ph name="DEVICE_TYPE" /> taaskäivitatakse pärast installimise lõpetamist.</translation> <translation id="8275038454117074363">Impordi</translation> @@ -5195,6 +5209,7 @@ <translation id="8883847527783433352">Sünkrooni muu kontoga</translation> <translation id="8885197664446363138">Smart Lock pole saadaval</translation> <translation id="88870264962436283">Puute-ID kasutamine rakenduses <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Rakendus avatakse, kui uuendamine on lõppenud. Uuendamiseks võib kuluda mõni minut.</translation> <translation id="8888432776533519951">Värv:</translation> <translation id="8890516388109605451">Allikad</translation> <translation id="8892168913673237979">Kõik on valmis!</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb index 92a8263..5bf3b05 100644 --- a/chrome/app/resources/generated_resources_fa.xtb +++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -364,6 +364,7 @@ <translation id="15373452373711364">نشانگر موشواره بزرگ</translation> <translation id="1538729222189715449">درحال باز کردن فایلهای Linux…</translation> <translation id="1540605929960647700">فعال کردن حالت نمایشی</translation> +<translation id="1541396123399225659">افزودن به گروه جدید</translation> <translation id="1542514202066550870">این برگه محتوای VR را به هدست ارائه میدهد.</translation> <translation id="1543284117603151572">وارد شده از Edge</translation> <translation id="1545177026077493356">حالت کیوسک خودکار</translation> @@ -402,6 +403,7 @@ <translation id="1593594475886691512">در حال قالببندی...</translation> <translation id="159359590073980872">حافظهٔ پنهان تصویر</translation> <translation id="1593926297800505364">ذخیره روش پرداخت</translation> +<translation id="1595492813686795610">Linux درحال ارتقا است</translation> <translation id="1598233202702788831">سرپرست سیستم شما بهروزرسانیها را غیرفعال کرده است.</translation> <translation id="1600857548979126453">دسترسی به مرحله پایانی اشکالزدای صفحه</translation> <translation id="1601560923496285236">اعمال</translation> @@ -513,7 +515,6 @@ <translation id="175772926354468439">فعال کردن طرح زمینه</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">مشاهده در «نتبازار Chrome»</translation> -<translation id="1761588866118490543">مدل صوتی</translation> <translation id="176193854664720708">حسگر اثر انگشت روی دکمه روشن/خاموش است. با یکی از انگشتهایتان آن را بهآرامی لمس کنید.</translation> <translation id="1763046204212875858">ایجاد میانبرهای برنامه</translation> <translation id="1763108912552529023">به کاوش ادامه دهید</translation> @@ -935,6 +936,7 @@ <translation id="2379281330731083556">چاپ با استفاده از گفتگوی سیستم... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">قبل از ارسال سؤال شود (توصیه میشود)</translation> <translation id="2384436799579181135">خطایی روی داده است. لطفاً چاپگرتان را بررسی و دوباره امتحان کنید.</translation> +<translation id="2386926718981642523">هرزمان میگویید «Ok Google»، به «دستیار» دسترسی داشته باشید</translation> <translation id="2387458720915042159">نوع اتصال پراکسی</translation> <translation id="2391419135980381625">قلم استاندارد</translation> <translation id="2391762656119864333">ابطال</translation> @@ -1040,6 +1042,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> نتوانست به <ph name="NETWORK_ID" /> متصل شود. لطفاً یک شبکه دیگر را انتخاب کرده یا دوباره امتحان کنید.</translation> <translation id="2553440850688409052">پنهان کردن این افزایه</translation> <translation id="2554553592469060349">فایل انتخابی بیش از حد بزرگ است (حداکثر اندازه: ۳ مگابایت).</translation> +<translation id="255747371423522804">افزودن به گروه موجود</translation> <translation id="2558896001721082624">گزینههای دسترسپذیری در منوی سیستم همیشه نمایش داده شوند</translation> <translation id="2562685439590298522">اسناد</translation> <translation id="2562743677925229011">به سیستم <ph name="SHORT_PRODUCT_NAME" /> وارد نشدید</translation> @@ -1311,6 +1314,7 @@ <translation id="2972581237482394796">انجام مجدد</translation> <translation id="2972642118232180842">فقط محتوای مهم اجرا شود (توصیه میشود)</translation> <translation id="2973324205039581528">بیصدا کردن سایت</translation> +<translation id="2977480621796371840">برداشتن از گروه</translation> <translation id="2979639724566107830">باز کردن در پنجرهٔ جدید</translation> <translation id="2981113813906970160">نمایش نشانگر موشواره بزرگ</translation> <translation id="2982970937345031">گزارش بهصورت ناشناس</translation> @@ -1561,6 +1565,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">جداساز</translation> <translation id="3389312115541230716">روی نماد <ph name="SMALL_PRODUCT_LOGO" /> در نوار وظیفه کلیک راست کنید</translation> +<translation id="3393352139658145068">وفتی فردی میگوید «Ok Google»، «دستیار» فعال شود. برای صرفهجویی در مصرف باتری، «Ok Google» فقط زمانی روشن است که دستگاهتان به برق متصل باشد.</translation> <translation id="3396800784455899911">با کلیک کردن روی دکمه «پذیرفتن و ادامه»، با پردازش مربوط به این سرویسهای Google که در بالا توضیح داده شد موافقت میکنید.</translation> <translation id="3399432415385675819">اعلانها غیرفعال خواهند شد</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />، <ph name="TIME_LEFT" /></translation> @@ -3163,6 +3168,7 @@ <translation id="5816434091619127343">تغییرات درخواستی باعث میشود چاپگر غیرقابل استفاده شود.</translation> <translation id="5817918615728894473">مرتبطسازی</translation> <translation id="5821565227679781414">ایجاد میانبر</translation> +<translation id="5825412242012995131">روشن (توصیه میشود)</translation> <translation id="5826507051599432481">نام مشترک (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">در حال چاپ...</translation> @@ -3707,6 +3713,11 @@ <translation id="6629841649550503054">همه در <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> پشتیبان گرفته شدند</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> خواستار دسترسی دائم به یک گواهی است تا خودش را از طرف شما احراز هویت کند.</translation> <translation id="6635956300022133031">انتخاب و سفارشیسازی صداهای نوشتار به گفتار</translation> +<translation id="6637585982786704944">برنامهها و وبسایتهایی که از شما مجوز دارند، میتوانند به اطلاعات حسابی که برای کارکرد مناسب نیاز دارند دستری پیدا کنند. + + اگر نمیخواهید حسابی را اضافه کنید، بهعنوان مهمان به سیستم وارد شوید یا پنجره ناشناسی را برای مرور وب باز کنید. + + میتوانید به «تنظیمات -> حسابهای Google» بروید تا همه حسابها مشاهده و مدیریت کنید.</translation> <translation id="6639554308659482635">حافظه SQLite</translation> <translation id="6641138807883536517">گذرواژه بهصورت تصادفی ایجادشده مدول امن دردسترس نیست. این حالت بعد از Powerwash عادی است.</translation> <translation id="6643016212128521049">پاک کردن</translation> @@ -3908,6 +3919,7 @@ <translation id="6957231940976260713">نام سرویس</translation> <translation id="696203921837389374">فعال کردن همگامسازی از طریق داده تلفن همراه</translation> <translation id="6964390816189577014">قهرمان</translation> +<translation id="6964760285928603117">برداشتن از گروه</translation> <translation id="6965382102122355670">قبول</translation> <translation id="6965648386495488594">درگاه</translation> <translation id="6965978654500191972">دستگاه</translation> @@ -4017,6 +4029,7 @@ <translation id="7109543803214225826">میانبر حذف شد</translation> <translation id="7113502843173351041">دیدن نشانی ایمیل شما</translation> <translation id="7114054701490058191">گذرواژهها مطابقت ندارند</translation> +<translation id="7114648273807173152">برای استفاده از Smart Lock برای ورود به سیستم حساب Google، به «تنظیمات > دستگاههای متصل > Smart Lock» بروید.</translation> <translation id="7117228822971127758">لطفاً بعداً دوباره امتحان کنید</translation> <translation id="7117247127439884114">ورود مجدد به سیستم...</translation> <translation id="711840821796638741">نمایش نشانکهای مدیریت شده</translation> @@ -4172,6 +4185,7 @@ <translation id="7348093485538360975">صفحهکلید روی صفحه</translation> <translation id="7352651011704765696">مشکلی پیش آمد</translation> <translation id="735361434055555355">درحال نصب Linux…</translation> +<translation id="7353887511974462734">افزودن به گروه موجود</translation> <translation id="735745346212279324">VPN قطع است</translation> <translation id="7359359531237882347">در حال کپی کردن <ph name="NUMBER_OF_ITEMS" /> مورد…</translation> <translation id="7359588939039777303">آگهیها مسدود شدند.</translation> @@ -4234,7 +4248,6 @@ <translation id="7456847797759667638">باز کردن مکان...</translation> <translation id="7461924472993315131">پین</translation> <translation id="7463006580194749499">افزودن شخص</translation> -<translation id="7464902436585505072">مدل صوتی «Ok Google»</translation> <translation id="7465778193084373987">نشانی وب ابطال گواهی Netscape</translation> <translation id="7469894403370665791">اتصال به این شبکه به صورت خودکار</translation> <translation id="747114903913869239">خطا: رمزگشایی برنامهٔ افزودنی ممکن نیست</translation> @@ -4804,6 +4817,7 @@ <translation id="827097179112817503">نمایش دکمه صفحه اصلی</translation> <translation id="8271246892936492311">{COUNT,plural, =1{۱ نشانک حذف شد}one{# نشانک حذف شد}other{# نشانک حذف شد}}</translation> <translation id="8272443605911821513">با کلیک کردن روی افزونهها در منوی «ابزارهای بیشتر»، برنامههای افزودنی خود را مدیریت کنید.</translation> +<translation id="8272966760965438857">مدیریت حسابها Google در یک مکان</translation> <translation id="8274332263553132018">ارسال محتوای فایل</translation> <translation id="8274924778568117936">تا وقتی بهروزرسانی به پایان نرسیده است، <ph name="DEVICE_TYPE" /> را خاموش نکنید یا نبندید. بعد از کامل شدن نصب، <ph name="DEVICE_TYPE" /> راهاندازی مجدد میشود.</translation> <translation id="8275038454117074363">وارد کردن</translation> @@ -5190,6 +5204,7 @@ <translation id="8883847527783433352">همگامسازی با حسابی دیگر</translation> <translation id="8885197664446363138">Smart Lock در دسترس نیست</translation> <translation id="88870264962436283">استفاده از شناسه لمسی در <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">وقتی ارتقا به پایان برسد، برنامهتان باز خواهد شد. ارتقا ممکن است چند دقیقه طول بکشد.</translation> <translation id="8888432776533519951">رنگ:</translation> <translation id="8890516388109605451">منابع</translation> <translation id="8892168913673237979">همه چیز آماده است!</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index bb9fcb3..f94f720c 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Suuri hiiren osoitin</translation> <translation id="1538729222189715449">Avataan Linux-tiedostoja…</translation> <translation id="1540605929960647700">Ota esittelytila käyttöön</translation> +<translation id="1541396123399225659">Lisää uuteen ryhmään</translation> <translation id="1542514202066550870">Tällä välilehdellä esitetään VR-sisältöä headsetiin.</translation> <translation id="1543284117603151572">Edgestä tuodut</translation> <translation id="1545177026077493356">Automaattinen kioskitila</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Alustetaan…</translation> <translation id="159359590073980872">Kuvavälimuisti</translation> <translation id="1593926297800505364">Tallenna maksutapa</translation> +<translation id="1595492813686795610">Linuxia päivitetään</translation> <translation id="1598233202702788831">Järjestelmänvalvoja on estänyt päivitykset.</translation> <translation id="1600857548979126453">Käyttää sivun viankorjausta</translation> <translation id="1601560923496285236">Käytä</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Ota teema käyttöön</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Näytä Chrome Web Storessa</translation> -<translation id="1761588866118490543">Äänimalli</translation> <translation id="176193854664720708">Sormenjälkitunnistin on virtapainikkeessa. Kosketa sitä kevyesti millä tahansa sormella.</translation> <translation id="1763046204212875858">Luo sovelluspikakuvakkeita</translation> <translation id="1763108912552529023">Jatka tutkimista</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">Tulosta järjestelmän tulostusikkunalla... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Kysy ennen lähettämistä (suositus)</translation> <translation id="2384436799579181135">Tapahtui virhe. Tarkista tulostimesi ja yritä uudelleen.</translation> +<translation id="2386926718981642523">Käytä Assistantia milloin tahansa sanomalla Ok Google</translation> <translation id="2387458720915042159">Välityspalvelinyhteyden tyyppi</translation> <translation id="2391419135980381625">Peruskirjasin</translation> <translation id="2391762656119864333">Peruuta</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> ei voinut yhdistää verkkoon <ph name="NETWORK_ID" />. Valitse toinen verkko tai yritä uudelleen.</translation> <translation id="2553440850688409052">Piilota tämä laajennus</translation> <translation id="2554553592469060349">Valittu tiedosto on liian iso (enimmäiskoko: 3 Mt).</translation> +<translation id="255747371423522804">Lisää aiempaan ryhmään</translation> <translation id="2558896001721082624">Näytä esteettömyysvalinnat aina järjestelmävalikossa</translation> <translation id="2562685439590298522">Dokumentit</translation> <translation id="2562743677925229011">Ei kirjautunut tuotteeseen <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1316,6 +1319,7 @@ <translation id="2972581237482394796">&Tee uudelleen</translation> <translation id="2972642118232180842">Suorita vain tärkeä sisältö (suositus)</translation> <translation id="2973324205039581528">Mykistä sivusto</translation> +<translation id="2977480621796371840">Poista ryhmästä</translation> <translation id="2979639724566107830">Avaa uudessa ikkunassa</translation> <translation id="2981113813906970160">Näytä suuri hiiren osoitin</translation> <translation id="2982970937345031">Tee nimetön ilmoitus</translation> @@ -1566,6 +1570,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" /> %</translation> <translation id="338583716107319301">Erotin</translation> <translation id="3389312115541230716">Klikkaa tehtäväpalkissa olevaa <ph name="SMALL_PRODUCT_LOGO" />-kuvaketta hiiren kakkospainikkeella.</translation> +<translation id="3393352139658145068">Aktivoi Assistant, kun joku sanoo Ok Google. Jos haluat säästää virtaa, Ok Google on käytössä vain, kun laitteesi on yhdistetty virtalähteeseen.</translation> <translation id="3396800784455899911">Kun valitset Hyväksy ja jatka, hyväksyt käsittelyn näissä Google-palveluissa edellä kuvatuilla tavoilla.</translation> <translation id="3399432415385675819">Ilmoitukset poistetaan käytöstä.</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -2110,7 +2115,7 @@ <translation id="4193154014135846272">Google-dokumentti</translation> <translation id="4194570336751258953">Ota koskettamalla klikkaus käyttöön</translation> <translation id="4195249722193633765">Asenna sovellus Linuxilla (beta)</translation> -<translation id="4195643157523330669">Avaa uudessa välilehdessä</translation> +<translation id="4195643157523330669">Avaa uudelle välilehdelle</translation> <translation id="4195814663415092787">Jatka siitä, mihin jäit</translation> <translation id="4197674956721858839">Pakkaa valitut</translation> <translation id="4198146608511578238">Paina käynnistysohjelman kuvaketta pitkään, niin voit puhua Google Assistantille.</translation> @@ -3165,6 +3170,7 @@ <translation id="5816434091619127343">Tulostimeen pyydetyt muutokset estäisivät sen käytön.</translation> <translation id="5817918615728894473">Muodosta laitepari</translation> <translation id="5821565227679781414">Luo pikakuvake</translation> +<translation id="5825412242012995131">Käytössä (suositus)</translation> <translation id="5826507051599432481">Yleinen nimi (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Tulostetaan...</translation> @@ -3711,6 +3717,11 @@ <translation id="6629841649550503054">Kaikki on varmuuskopioitu <ph name="BEGIN_LINK" />Google Driveen!<ph name="END_LINK" /></translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> haluaa jatkuvan varmenteen käyttöoikeuden voidakseen varmentaa itsensä puolestasi.</translation> <translation id="6635956300022133031">Tekstistä puheeksi ‑äänten valinta ja yksilöinti</translation> +<translation id="6637585982786704944">Sallimasi sovellukset ja verkkosivustot voivat käyttää tilitietoja, joita ne tarvitsevat toimiakseen. + + Jos et halua lisätä tiliä, kirjaudu sisään vierailijana tai avaa incognito-ikkuna verkon selaamista varten. + + Voit katsella ja ylläpitää kaikkia tilejä kohdassa Asetukset -> Google-tilit.</translation> <translation id="6639554308659482635">SQLiten käyttämä muisti</translation> <translation id="6641138807883536517">Sattumanvarainen suojausmoduulin salasana ei ole saatavilla. Tämä on normaalia Powerwashin jälkeen.</translation> <translation id="6643016212128521049">Tyhjennä</translation> @@ -3912,6 +3923,7 @@ <translation id="6957231940976260713">Palvelun nimi</translation> <translation id="696203921837389374">Ota käyttöön synkronointi mobiilitiedonsiirron kautta</translation> <translation id="6964390816189577014">Sankari</translation> +<translation id="6964760285928603117">Poista ryhmästä</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Portti</translation> <translation id="6965978654500191972">Laite</translation> @@ -4021,6 +4033,7 @@ <translation id="7109543803214225826">Pikanäppäin poistettu</translation> <translation id="7113502843173351041">Saada selville sähköpostiosoitteesi</translation> <translation id="7114054701490058191">Salasanat eivät täsmää</translation> +<translation id="7114648273807173152">Jos haluat kirjautua Google-tilillesi Smart Lockin avulla, siirry kohtaan Asetukset > Yhdistetyt laitteet > Puhelimesi > Smart Lock.</translation> <translation id="7117228822971127758">Yritä myöhemmin uudelleen.</translation> <translation id="7117247127439884114">Kirjaudu uudelleen sisään...</translation> <translation id="711840821796638741">Näytä hallinnoidut kirjanmerkit</translation> @@ -4176,6 +4189,7 @@ <translation id="7348093485538360975">Virtuaalinäppäimistö</translation> <translation id="7352651011704765696">Tapahtui jokin virhe</translation> <translation id="735361434055555355">Asennetaan Linuxia…</translation> +<translation id="7353887511974462734">Lisää aiempaan ryhmään</translation> <translation id="735745346212279324">VPN-yhteys katkaistu</translation> <translation id="7359359531237882347">Kopioidaan <ph name="NUMBER_OF_ITEMS" /> kohdetta…</translation> <translation id="7359588939039777303">Mainokset estetty</translation> @@ -4238,7 +4252,6 @@ <translation id="7456847797759667638">Avaa sijainti...</translation> <translation id="7461924472993315131">Kiinnitä</translation> <translation id="7463006580194749499">Lisää käyttäjä</translation> -<translation id="7464902436585505072">OK Google -puhemalli</translation> <translation id="7465778193084373987">Netscape-varmenteen kumoamis-URL</translation> <translation id="7469894403370665791">Yhdistä automaattisesti tähän verkkoon</translation> <translation id="747114903913869239">Virhe: laajennuksen koodauksen purkaminen ei onnistunut</translation> @@ -4807,6 +4820,7 @@ <translation id="827097179112817503">Näytä Etusivu-painike</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 kirjanmerkki poistettiin}other{# kirjanmerkkiä poistettiin}}</translation> <translation id="8272443605911821513">Hallinnoi laajennuksiasi valitsemalla Lisätyökalut-valikossa Laajennukset.</translation> +<translation id="8272966760965438857">Ylläpidä Google-tilejäsi yhdessä paikassa</translation> <translation id="8274332263553132018">Suoratoista tiedosto</translation> <translation id="8274924778568117936">Pidä <ph name="DEVICE_TYPE" /> päällä, kunnes päivitys on valmis. <ph name="DEVICE_TYPE" /> käynnistyy uudelleen, kun asennus on valmis.</translation> <translation id="8275038454117074363">Tuo</translation> @@ -5193,6 +5207,7 @@ <translation id="8883847527783433352">Synkronoi toisen tilin kanssa</translation> <translation id="8885197664446363138">Smart Lock ei ole käytettävissä</translation> <translation id="88870264962436283">Käytä Touch ID:tä sovelluksen <ph name="APP_NAME" /> kanssa</translation> +<translation id="8888253246822647887">Sovelluksesi avautuu, kun päivitys on valmis. Päivitykset voivat kestää muutaman minuutin.</translation> <translation id="8888432776533519951">Väri:</translation> <translation id="8890516388109605451">Lähteet</translation> <translation id="8892168913673237979">Kaikki valmista!</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb index e847c857..c0ba13a30 100644 --- a/chrome/app/resources/generated_resources_fil.xtb +++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Malaking mouse cursor</translation> <translation id="1538729222189715449">Binubuksan ang mga Linux file...</translation> <translation id="1540605929960647700">I-enable ang demo mode</translation> +<translation id="1541396123399225659">Idagdag sa Bagong Grupo</translation> <translation id="1542514202066550870">Nagpapakita ang tab na ito ng VR content sa isang headset.</translation> <translation id="1543284117603151572">Na-import Mula Sa Edge</translation> <translation id="1545177026077493356">Awtomatikong Kiosk Mode</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Nagpo-format...</translation> <translation id="159359590073980872">Cache ng Larawan</translation> <translation id="1593926297800505364">I-save ang paraan ng pagbabayad</translation> +<translation id="1595492813686795610">Ina-upgrade ang Linux</translation> <translation id="1598233202702788831">Na-disable ng iyong administrator ang mga update.</translation> <translation id="1600857548979126453">I-access ang backend ng debugger ng pahina</translation> <translation id="1601560923496285236">Ilapat</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Paganahin ang tema</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Tingnan sa Chrome Web Store</translation> -<translation id="1761588866118490543">Voice model</translation> <translation id="176193854664720708">Nasa power button ang sensor para sa fingerprint. Pundutin ito nang magaan gamit ang alinmang daliri.</translation> <translation id="1763046204212875858">Gumawa ng mga shortcut ng application</translation> <translation id="1763108912552529023">Magpatuloy sa pag-explore</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">I-print gamit ang dialog ng system... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Magtanong bago magpadala (inirerekomenda)</translation> <translation id="2384436799579181135">Nagka-error. Pakisuri ang iyong printer at subukang muli.</translation> +<translation id="2386926718981642523">I-access ang iyong Assistant sa tuwing sinasabi mo ang "Ok Google"</translation> <translation id="2387458720915042159">Uri ng koneksyon sa proxy</translation> <translation id="2391419135980381625">Karaniwang font</translation> <translation id="2391762656119864333">Bawiin</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190">Hindi nagawang kumonekta ng <ph name="PRODUCT_NAME" /> sa <ph name="NETWORK_ID" />. Mangyaring pumili ng ibang network o subukang muli.</translation> <translation id="2553440850688409052">Itago ang Plugin na Ito</translation> <translation id="2554553592469060349">Masyadong malaki ang napiling file (max na laki: 3mb).</translation> +<translation id="255747371423522804">Idagdag sa dati nang grupo</translation> <translation id="2558896001721082624">Ipakita ang mga opsyon sa accessibility sa menu ng system</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2562743677925229011">Hindi naka-sign in sa <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">&I-redo</translation> <translation id="2972642118232180842">Magpatakbo lang ng mahalagang content (inirerekomenda)</translation> <translation id="2973324205039581528">I-mute ang Site</translation> +<translation id="2977480621796371840">Alisin sa grupo</translation> <translation id="2979639724566107830">Buksan ng bagong window</translation> <translation id="2981113813906970160">Ipakita ang malaking mouse cursor</translation> <translation id="2982970937345031">Mag-ulat nang anonymous</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Separator</translation> <translation id="3389312115541230716">I-right click ang icon na <ph name="SMALL_PRODUCT_LOGO" /> sa taskbar</translation> +<translation id="3393352139658145068">I-activate ang Assistant kapag may sinumang nagsabi ng “Ok Google”. Para makatipid ng baterya, naka-on lang ang “Ok Google” kapag nakakonekta ang iyong device sa isang pinagmumulan ng kuryente.</translation> <translation id="3396800784455899911">Sa pamamagitan ng pag-click sa button na "Tanggapin at magpatuloy," sumasang-ayon ka sa pagpoproseso na inilarawan sa itaas para sa mga serbisyong ito ng Google.</translation> <translation id="3399432415385675819">Madi-disable ang mga notification</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3167,6 +3172,7 @@ <translation id="5816434091619127343">Magiging hindi magagamit ang printer dahil sa mga hiniling na pagbabago sa printer.</translation> <translation id="5817918615728894473">Ipares</translation> <translation id="5821565227679781414">Lumikha ng Shortcut</translation> +<translation id="5825412242012995131">Naka-on (inirerekomenda)</translation> <translation id="5826507051599432481">Common Name (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Nagpi-print...</translation> @@ -3414,7 +3420,7 @@ <translation id="6163363155248589649">&Normal</translation> <translation id="6163522313638838258">Palawakin lahat...</translation> <translation id="6164005077879661055">Permanenteng matatanggal ang lahat ng file at lokal na data na kaugnay ng pinangangasiwaang user sa oras na alisin ang pinangangasiwaang user na ito. Maaari pa ring makita ng manager ang mga nabisitang website at setting para sa pinangangasiwaang user na ito sa <ph name="MANAGEMENT_URL" />.</translation> -<translation id="6165508094623778733">Matuto nang higit pa</translation> +<translation id="6165508094623778733">Matuto pa</translation> <translation id="6166185671393271715">Mag-import ng Mga Password sa Chrome</translation> <translation id="6169040057125497443">Pakisuri ang iyong mikropono.</translation> <translation id="6169666352732958425">Hindi ma-cast ang desktop.</translation> @@ -3711,6 +3717,11 @@ <translation id="6629841649550503054">Naka-back up na ang lahat sa <ph name="BEGIN_LINK" />Google Drive!<ph name="END_LINK" /></translation> <translation id="6630752851777525409">Gusto ng <ph name="EXTENSION_NAME" /> ng permanenteng access sa isang certificate upang patunayan ang sarili nito sa iyong ngalan.</translation> <translation id="6635956300022133031">Pumili at mag-customize ng mga boses ng text-to-speech</translation> +<translation id="6637585982786704944">Maaaring i-access ng mga app at website na mayroon ng iyong pahintulot ang impormasyon ng account na kinakailangan ng mga ito para gumana nang maayos ang mga ito. + + Kung ayaw mong magdagdag ng account, mag-sign in bilang bisita o magbukas ng incognito na window para sa pag-browse sa web. + + Maaari kang pumunta sa Mga Setting -> Mga Google Account para tingnan at pamahalaan ang lahat ng account.</translation> <translation id="6639554308659482635">Memorya sa SQLite</translation> <translation id="6641138807883536517">Hindi available ang random na ginawang password ng secure na module. Normal lang ito pagkatapos ng Powerwash.</translation> <translation id="6643016212128521049">I-clear</translation> @@ -3912,6 +3923,7 @@ <translation id="6957231940976260713">Pangalan ng serbisyo</translation> <translation id="696203921837389374">I-enable ang pagsi-sync gamit ang mobile data</translation> <translation id="6964390816189577014">Bayani</translation> +<translation id="6964760285928603117">Alisin Sa Grupo</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Port</translation> <translation id="6965978654500191972">Device</translation> @@ -4021,6 +4033,7 @@ <translation id="7109543803214225826">Inalis ang shortcut</translation> <translation id="7113502843173351041">Alamin ang iyong email address</translation> <translation id="7114054701490058191">Hindi magkatugma ang mga password</translation> +<translation id="7114648273807173152">Para gamitin ang Smart Lock para mag-sign in sa iyong Google Account, pumunta sa Mga Setting > Mga nakakonektang device > Iyong telepono > Smart Lock.</translation> <translation id="7117228822971127758">Pakisubukang muli sa ibang pagkakataon</translation> <translation id="7117247127439884114">Muling Mag-sign in...</translation> <translation id="711840821796638741">Ipakita ang Mga Pinamamahalaang Bookmark</translation> @@ -4176,6 +4189,7 @@ <translation id="7348093485538360975">Nasa screen na keyboard</translation> <translation id="7352651011704765696">Nagkaroon ng problema</translation> <translation id="735361434055555355">Ini-install ang Linux...</translation> +<translation id="7353887511974462734">Idagdag sa Dati Nang Grupo</translation> <translation id="735745346212279324">Nakadiskonekta ang VPN</translation> <translation id="7359359531237882347">Kinokopya ang <ph name="NUMBER_OF_ITEMS" /> (na) item...</translation> <translation id="7359588939039777303">Na-block ang mga ad.</translation> @@ -4238,7 +4252,6 @@ <translation id="7456847797759667638">Buksan ang Lokasyon...</translation> <translation id="7461924472993315131">I-pin</translation> <translation id="7463006580194749499">Magdagdag ng tao</translation> -<translation id="7464902436585505072">Voice model na "Ok Google"</translation> <translation id="7465778193084373987">URL ng Pagpapawalang-bisa ng Netscape Certificate</translation> <translation id="7469894403370665791">Awtomatikong kumonekta sa network na ito</translation> <translation id="747114903913869239">Error: Hindi magawang i-decode ang extension</translation> @@ -4808,6 +4821,7 @@ <translation id="827097179112817503">Ipakita ang button ng home</translation> <translation id="8271246892936492311">{COUNT,plural, =1{Na-delete ang 1 bookmark}one{Na-delete ang # bookmark}other{Na-delete ang # na bookmark}}</translation> <translation id="8272443605911821513">Pamahalaan ang iyong mga extension sa pamamagitan ng pag-click sa Mga Extension sa menu ng "Higit pang mga tool."</translation> +<translation id="8272966760965438857">Pamahalaan ang iyong Mga Google Account sa iisang lugar</translation> <translation id="8274332263553132018">I-cast ang file</translation> <translation id="8274924778568117936">Huwag i-off o isara ang iyong <ph name="DEVICE_TYPE" /> hanggang sa matapos ang pag-update. Magre-restart ang <ph name="DEVICE_TYPE" /> mo pagkatapos ng pag-install.</translation> <translation id="8275038454117074363">I-import</translation> @@ -5196,6 +5210,7 @@ <translation id="8883847527783433352">I-sync sa Isa pang Account</translation> <translation id="8885197664446363138">Hindi available ang Smart Lock</translation> <translation id="88870264962436283">Gamitin ang Touch ID sa <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Bubukas ang iyong app kapag tapos na ang pag-upgrade. Maaaring tumagal nang ilang minuto ang mga pag-upgrade.</translation> <translation id="8888432776533519951">Kulay</translation> <translation id="8890516388109605451">Mga Source</translation> <translation id="8892168913673237979">Handa na ang lahat!</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb index 1eda413..9544c50 100644 --- a/chrome/app/resources/generated_resources_fr.xtb +++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Grand curseur</translation> <translation id="1538729222189715449">Ouverture des fichiers Linux…</translation> <translation id="1540605929960647700">Activer le mode de démonstration</translation> +<translation id="1541396123399225659">Ajouter à un nouveau groupe</translation> <translation id="1542514202066550870">Du contenu RV est diffusé sur un casque à partir de cet onglet.</translation> <translation id="1543284117603151572">Importés depuis Edge</translation> <translation id="1545177026077493356">Mode Kiosque automatique</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Formatage en cours…</translation> <translation id="159359590073980872">Cache des images</translation> <translation id="1593926297800505364">Enregistrer le mode de paiement</translation> +<translation id="1595492813686795610">Mise à jour de Linux…</translation> <translation id="1598233202702788831">L'administrateur a désactivé les mises à jour.</translation> <translation id="1600857548979126453">Accéder au système du débogueur de pages</translation> <translation id="1601560923496285236">Appliquer</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Activer le thème</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Afficher sur le Chrome Web Store</translation> -<translation id="1761588866118490543">Empreinte vocale</translation> <translation id="176193854664720708">Le lecteur d'empreinte digitale est intégré au bouton Marche/Arrêt. Effleurez-le avec n'importe quel doigt.</translation> <translation id="1763046204212875858">Créer des raccourcis vers des applications</translation> <translation id="1763108912552529023">Poursuivre la découverte</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">Imprimer via la boîte de dialogue du système... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Demander l'autorisation avant d'envoyer (recommandé)</translation> <translation id="2384436799579181135">Une erreur s'est produite. Veuillez vérifier l'imprimante, puis réessayer.</translation> +<translation id="2386926718981642523">Accédez à l'Assistant Google en disant simplement "Ok Google"</translation> <translation id="2387458720915042159">Type de connexion proxy</translation> <translation id="2391419135980381625">Police standard</translation> <translation id="2391762656119864333">Révoquer</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> n'est pas parvenu à se connecter à <ph name="NETWORK_ID" />. Sélectionnez un autre réseau ou réessayez.</translation> <translation id="2553440850688409052">Masquer ce plug-in</translation> <translation id="2554553592469060349">Le fichier sélectionné est trop volumineux (taille maximale : 3 Mo).</translation> +<translation id="255747371423522804">Ajouter à un groupe existant</translation> <translation id="2558896001721082624">Toujours afficher les options d'accessibilité dans le menu système</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2562743677925229011">Vous n'êtes pas connecté à <ph name="SHORT_PRODUCT_NAME" />.</translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">&Rétablir</translation> <translation id="2972642118232180842">N'exécuter que les contenus importants (recommandé)</translation> <translation id="2973324205039581528">Couper le son du site</translation> +<translation id="2977480621796371840">Retirer du groupe</translation> <translation id="2979639724566107830">Ouvrir dans une nouvelle fenêtre</translation> <translation id="2981113813906970160">Afficher le grand curseur</translation> <translation id="2982970937345031">Signaler de manière anonyme</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" /> %</translation> <translation id="338583716107319301">Séparateur</translation> <translation id="3389312115541230716">Faites un clic droit sur l'icône <ph name="SMALL_PRODUCT_LOGO" /> dans la barre des tâches.</translation> +<translation id="3393352139658145068">Activez l'Assistant Google lorsque quelqu'un dit "Ok Google". Pour économiser la batterie, la détection du mot clé "Ok Google" n'est activée que lorsque vous branchez votre appareil sur une source d'alimentation externe.</translation> <translation id="3396800784455899911">En cliquant sur le bouton "Accepter et continuer", vous acceptez le processus décrit ci-dessus pour ces services Google.</translation> <translation id="3399432415385675819">Les notifications seront désactivées</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3168,6 +3173,7 @@ <translation id="5816434091619127343">Les modifications demandées concernant l'imprimante risquent de rendre celle-ci inutilisable.</translation> <translation id="5817918615728894473">Associer</translation> <translation id="5821565227679781414">Créer un raccourci</translation> +<translation id="5825412242012995131">Activé (recommandé)</translation> <translation id="5826507051599432481">Nom commun (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Impression...</translation> @@ -3712,6 +3718,11 @@ <translation id="6629841649550503054">Tous les contenus sont sauvegardés sur <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />.</translation> <translation id="6630752851777525409">Une demande d'accès permanent à un certificat pour s'authentifier en votre nom a été initiée pour l'extension "<ph name="EXTENSION_NAME" />".</translation> <translation id="6635956300022133031">Sélectionner et personnaliser les voix de la synthèse vocale</translation> +<translation id="6637585982786704944">Les applications et sites Web qui ont votre autorisation peuvent accéder aux informations du compte nécessaires à leur bon fonctionnement. + + Si vous ne souhaitez pas ajouter de compte, connectez-vous en tant qu'invité ou ouvrez une fenêtre de navigation privée. + + Accédez à Paramètres -> Comptes Google pour afficher et gérer l'ensemble des comptes.</translation> <translation id="6639554308659482635">Mémoire SQLite</translation> <translation id="6641138807883536517">Le mot de passe du module sécurisé généré de façon aléatoire n'est pas disponible, ce qui est normal après un Powerwash.</translation> <translation id="6643016212128521049">Effacer</translation> @@ -3913,6 +3924,7 @@ <translation id="6957231940976260713">Nom du service</translation> <translation id="696203921837389374">Activer la synchronisation via les données mobiles</translation> <translation id="6964390816189577014">Héros</translation> +<translation id="6964760285928603117">Retirer du groupe</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Port</translation> <translation id="6965978654500191972">Périphérique</translation> @@ -4022,6 +4034,7 @@ <translation id="7109543803214225826">Raccourci supprimé</translation> <translation id="7113502843173351041">Accéder à votre adresse e-mail</translation> <translation id="7114054701490058191">Les mots de passe ne correspondent pas.</translation> +<translation id="7114648273807173152">Pour utiliser Smart Lock pour vous connecter à votre compte Google, accédez à Paramètres > Appareils connectés > Votre téléphone > Smart Lock.</translation> <translation id="7117228822971127758">Veuillez réessayer plus tard</translation> <translation id="7117247127439884114">Nouvelle connexion...</translation> <translation id="711840821796638741">Afficher les favoris gérés</translation> @@ -4177,6 +4190,7 @@ <translation id="7348093485538360975">Clavier virtuel</translation> <translation id="7352651011704765696">Un problème est survenu</translation> <translation id="735361434055555355">Installation de Linux…</translation> +<translation id="7353887511974462734">Ajouter à un groupe existant</translation> <translation id="735745346212279324">VPN déconnecté</translation> <translation id="7359359531237882347">Copie de <ph name="NUMBER_OF_ITEMS" /> éléments…</translation> <translation id="7359588939039777303">Annonces bloquées.</translation> @@ -4239,7 +4253,6 @@ <translation id="7456847797759667638">Ouvrir une adresse</translation> <translation id="7461924472993315131">Épingler</translation> <translation id="7463006580194749499">Ajouter une personne</translation> -<translation id="7464902436585505072">Empreinte vocale pour "Ok Google"</translation> <translation id="7465778193084373987">URL de révocation de certificat Netscape</translation> <translation id="7469894403370665791">Se connecter automatiquement à ce réseau</translation> <translation id="747114903913869239">Erreur : impossible de décoder l'extension.</translation> @@ -4809,6 +4822,7 @@ <translation id="827097179112817503">Afficher le bouton Accueil</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 favori supprimé}one{# favori supprimé}other{# favoris supprimés}}</translation> <translation id="8272443605911821513">Cliquer sur "Extensions" dans le menu "Autres outils" pour gérer les extensions</translation> +<translation id="8272966760965438857">Gérez tous vos comptes Google au même endroit</translation> <translation id="8274332263553132018">Caster le fichier</translation> <translation id="8274924778568117936">N'éteignez pas et ne fermez pas votre <ph name="DEVICE_TYPE" /> avant la fin de la mise à jour. Votre <ph name="DEVICE_TYPE" /> redémarrera une fois l'installation terminée.</translation> <translation id="8275038454117074363">Importer</translation> @@ -5195,6 +5209,7 @@ <translation id="8883847527783433352">Synchroniser avec un autre compte</translation> <translation id="8885197664446363138">Smart Lock indisponible</translation> <translation id="88870264962436283">Utiliser Touch ID avec <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Votre application s'ouvrira lorsque la mise à jour sera terminée. Les mises à jour peuvent prendre quelques minutes.</translation> <translation id="8888432776533519951">Couleur :</translation> <translation id="8890516388109605451">Sources</translation> <translation id="8892168913673237979">Vous êtes prêt</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index 3e72a0a..3babe2a 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -131,7 +131,7 @@ <translation id="1177138678118607465">શોધ અને અન્ય Google સેવાઓને વ્યક્તિગત કરવા માટે, Google તમારા બ્રાઉઝિંગ ઇતિહાસનો ઉપયોગ કરી શકે છે. તમે આને myaccount.google.com/activitycontrols/search પર બદલી શકો છો</translation> <translation id="1177863135347784049">કસ્ટમ</translation> <translation id="1178581264944972037">થોભો</translation> -<translation id="1181037720776840403">દૂર કરો</translation> +<translation id="1181037720776840403">કાઢી નાખો</translation> <translation id="1183237619868651138">સ્થાનિક કૅશ મેમરીમાં <ph name="EXTERNAL_CRX_FILE" />ને ઇન્સ્ટૉલ કરી શકતાં નથી.</translation> <translation id="1185924365081634987">આ નેટવર્ક ભૂલને સુધારવા માટે તમે <ph name="GUEST_SIGNIN_LINK_START" />અતિથિ તરીકે બ્રાઉઝ કરો<ph name="GUEST_SIGNIN_LINK_END" /> ને પણ અજમાવી શકો છો.</translation> <translation id="1186771945450942097">નુકસાનકારક સૉફ્ટવેર દૂર કરો</translation> @@ -364,6 +364,7 @@ <translation id="15373452373711364">મોટું માઉસ કર્સર</translation> <translation id="1538729222189715449">Linux ફાઇલો ખોલી રહ્યાં છીએ...</translation> <translation id="1540605929960647700">ડેમો મોડ ચાલુ કરો</translation> +<translation id="1541396123399225659">નવા ગ્રૂપમાં ઉમેરો</translation> <translation id="1542514202066550870">આ ટૅબ હૅડસેટ પર VR કન્ટેન્ટ પ્રસ્તુત કરી રહ્યું છે.</translation> <translation id="1543284117603151572">Edge માંથી આયાત કરેલ</translation> <translation id="1545177026077493356">સ્વચલિત કિઓસ્ક મોડ</translation> @@ -401,6 +402,7 @@ <translation id="1593594475886691512">ફોર્મેટિંગ...</translation> <translation id="159359590073980872">ફોટો કૅશ મેમરી</translation> <translation id="1593926297800505364">ચુકવણી પદ્ધતિ સાચવો</translation> +<translation id="1595492813686795610">Linux અપગ્રેડ થાય છે</translation> <translation id="1598233202702788831">તમારા વ્યવસ્થાપક દ્વારા અપડેટ્સ અક્ષમ કરાયા છે.</translation> <translation id="1600857548979126453">પૃષ્ઠ ડીબગર બૅકએંડ ઍક્સેસ કરો</translation> <translation id="1601560923496285236">લાગુ કરો</translation> @@ -512,7 +514,6 @@ <translation id="175772926354468439">થીમ ચાલુ કરો</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Chrome વેબ સ્ટોરમાં જુઓ</translation> -<translation id="1761588866118490543">વૉઇસ મૉડલ</translation> <translation id="176193854664720708">ફિંગરપ્રિન્ટ સેન્સર એ પાવર બટનમાં ઉપલબ્ધ છે. તેને કોઈપણ આંગળીથી હળવેથી સ્પર્શ કરો.</translation> <translation id="1763046204212875858">ઍપ્લિકેશન શૉર્ટકટ્સ બનાવો</translation> <translation id="1763108912552529023">અન્વેષણ કરતાં રહો</translation> @@ -934,6 +935,7 @@ <translation id="2379281330731083556">સિસ્ટમ સંવાદનો ઉપયોગ કરીને પ્રિન્ટ કરો...<ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">મોકલતાં પહેલાં પૂછો (ભલામણ કરેલ)</translation> <translation id="2384436799579181135">એક ભૂલ આવી છે. કૃપા કરીને તમારું પ્રિન્ટર તપાસો અને ફરી પ્રયાસ કરો.</translation> +<translation id="2386926718981642523">કોઈપણ સમયે "ઓકે Google" બોલીને તમારા આસિસ્ટંટને ઍક્સેસ કરો</translation> <translation id="2387458720915042159">પ્રૉક્સી કનેક્શનનો પ્રકાર</translation> <translation id="2391419135980381625">માનક ફૉન્ટ</translation> <translation id="2391762656119864333">રદબાતલ કરો</translation> @@ -1039,6 +1041,7 @@ <translation id="2553340429761841190"><ph name="NETWORK_ID" /> ને કનેક્ટ કરવામાં <ph name="PRODUCT_NAME" /> અક્ષમ હતું. કૃપા કરીને બીજું નેટવર્ક પસંદ કરો અથવા ફરી પ્રયાસ કરો.</translation> <translation id="2553440850688409052">આ પ્લગિન છુપાવો </translation> <translation id="2554553592469060349">પસંદ કરેલ ફાઇલ ખૂબ મોટી છે (મહત્તમ કદ: 3mb).</translation> +<translation id="255747371423522804">હાલના ગ્રૂપમાં ઉમેરો</translation> <translation id="2558896001721082624">સિસ્ટમ મેનૂમાં હંમેશાં ઍક્સેસિબિલિટી વિકલ્પો બતાવો</translation> <translation id="2562685439590298522">દસ્તાવેજ</translation> <translation id="2562743677925229011"><ph name="SHORT_PRODUCT_NAME" /> પર સાઇન ઇન નથી</translation> @@ -1311,6 +1314,7 @@ <translation id="2972581237482394796">&ફરી કરો</translation> <translation id="2972642118232180842">માત્ર મહત્ત્વનું કન્ટેન્ટ ચલાવો (ભલામણ કરેલ)</translation> <translation id="2973324205039581528">સાઇટને મ્યૂટ કરો</translation> +<translation id="2977480621796371840">ગ્રૂપમાંથી દૂર કરો</translation> <translation id="2979639724566107830">નવી વિંડોમાં ખોલો</translation> <translation id="2981113813906970160">મોટું માઉસ કર્સર બતાવો</translation> <translation id="2982970937345031">અનામ રીતે જાણ કરો</translation> @@ -1561,6 +1565,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">વિભાજક</translation> <translation id="3389312115541230716">ટાસ્કબારમાં <ph name="SMALL_PRODUCT_LOGO" /> આઇકનને રાઇટ ક્લિક કરો</translation> +<translation id="3393352139658145068">જ્યારે કોઈ “ઓકે Google” કહે ત્યારે આસિસ્ટંટને સક્રિય કરો. બૅટરીની બચત કરવા માટે, જ્યારે તમારું ડિવાઇસ પાવર સ્રોત સાથે કનેક્ટેડ હોય ત્યારે જ માત્ર "ઓકે Google” ચાલુ હોય છે.</translation> <translation id="3396800784455899911">"સ્વીકારો અને ચાલુ રાખો" બટન પર ક્લિક કરીને, તમે આ Google સેવાઓ માટે ઉપર વર્ણવેલી પ્રક્રિયા સાથે સંમત થાઓ છો.</translation> <translation id="3399432415385675819">સૂચનાઓ અક્ષમ કરવામાં આવશે</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3164,6 +3169,7 @@ <translation id="5816434091619127343">પ્રિન્ટર માટે વિનંતી કરેલ ફેરફારોને લીધે પ્રિન્ટર વાપરી શકાશે નહીં.</translation> <translation id="5817918615728894473">જોડી કરો</translation> <translation id="5821565227679781414">શૉર્ટકટ બનાવો</translation> +<translation id="5825412242012995131">ચાલુ કરો (સુઝાવ આપેલ)</translation> <translation id="5826507051599432481">કોમન નેમ (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">છાપકામ...</translation> @@ -3708,6 +3714,11 @@ <translation id="6629841649550503054">તમામનો <ph name="BEGIN_LINK" />Google ડ્રાઇવ<ph name="END_LINK" /> પર બેકઅપ લેવાયો!</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> ને તમારા વતી પોતાની પ્રમાણિત કરવા માટે પ્રમાણપત્રની કાયમી અૅક્સેસ જોઈએ છે.</translation> <translation id="6635956300022133031">ટેક્સ્ટ ટૂ સ્પીચ વૉઇસ પસંદ કરો અને કસ્ટમાઇઝ કરો</translation> +<translation id="6637585982786704944">તમારી પરવાનગી ધરાવતી ઍપ અને વેબસાઇટ, તેમને યોગ્ય રીતે કાર્ય કરવામાં જરૂરી હોય તેવી એકાઉન્ટની માહિતી ઍક્સેસ કરી શકે છે. + + તમે એકાઉન્ટ ઉમેરવા માગતા ન હો, તો અતિથિ તરીકે સાઇન ઇન કરો અથવા વેબ બ્રાઉઝ કરવા માટે છુપી વિન્ડો ખોલો. + + બધાં એકાઉન્ટ જોવા અને મેનેજ કરવા માટે તમે સેટિંગ > Google એકાઉન્ટમાં જઈ શકો છો.</translation> <translation id="6639554308659482635">SQLite મેમરી</translation> <translation id="6641138807883536517">રૅન્ડમલી બનાવવામાં આવેલો સુરક્ષિત મોડ્યુલ પાસવર્ડ ઉપલબ્ધ નથી. પાવરવૉશ પછી આમ થવું સામાન્ય છે.</translation> <translation id="6643016212128521049">સાફ કરો</translation> @@ -3909,6 +3920,7 @@ <translation id="6957231940976260713">સેવાનું નામ</translation> <translation id="696203921837389374">મોબાઇલ ડેટા પર સિંક કરવાનું ચાલુ કરો</translation> <translation id="6964390816189577014">હીરો</translation> +<translation id="6964760285928603117">ગ્રૂપમાંથી દૂર કરો</translation> <translation id="6965382102122355670">બરાબર, સમજાઇ ગયું</translation> <translation id="6965648386495488594">પોર્ટ</translation> <translation id="6965978654500191972">ઉપકરણ</translation> @@ -4018,6 +4030,7 @@ <translation id="7109543803214225826">શૉર્ટકટ કાઢી નાખ્યો</translation> <translation id="7113502843173351041">તમારું ઇમેઇલ ઍડ્રેસ જાણો</translation> <translation id="7114054701490058191">પાસવર્ડ્સ મેળ ખાતા નથી</translation> +<translation id="7114648273807173152">તમારા Google એકાઉન્ટમાં સાઇન ઇન કરવા માટે SmartLockનો ઉપયોગ કરવા, સેટિંગ > કનેક્ટ કરેલાં ડિવાઇસ > તમારો ફોન > SmartLock પર જાઓ.</translation> <translation id="7117228822971127758">કૃપા કરીને થોડા સમય પછી ફરી પ્રયાસ કરો</translation> <translation id="7117247127439884114">ફરીથી સાઇન ઇન કરો...</translation> <translation id="711840821796638741">સંચાલિત બુકમાર્ક્સ દર્શાવો</translation> @@ -4173,6 +4186,7 @@ <translation id="7348093485538360975">ઑન-સ્ક્રીન કીબોર્ડ</translation> <translation id="7352651011704765696">કંઈક ખોટું થયું હતું</translation> <translation id="735361434055555355">Linux ઇન્સ્ટૉલ કરી રહ્યાં છીએ…</translation> +<translation id="7353887511974462734">હાલના ગ્રૂપમાં ઉમેરો</translation> <translation id="735745346212279324">VPN ડિસ્કનેક્ટ કર્યું છે</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" /> આઇટમ કૉપિ કરી રહ્યું છે...</translation> <translation id="7359588939039777303">જાહેરાતો અવરોધિત કરી.</translation> @@ -4235,7 +4249,6 @@ <translation id="7456847797759667638">સ્થાન ખોલો...</translation> <translation id="7461924472993315131">પિન કરો</translation> <translation id="7463006580194749499">વ્યક્તિ ઉમેરો</translation> -<translation id="7464902436585505072">"ઑકે Google" વૉઇસ મોડલ</translation> <translation id="7465778193084373987">નેટસ્કેપ પ્રમાણપત્ર રિવોકેશન URL</translation> <translation id="7469894403370665791">આ નેટવર્કથી આપમેળે કનેક્ટ થાઓ</translation> <translation id="747114903913869239">ભૂલ: એક્સટેન્શનને ડિકોડ કરવામાં અક્ષમ</translation> @@ -4797,6 +4810,7 @@ <translation id="827097179112817503">હોમ બટન દર્શાવો</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 બુકમાર્ક કાઢી નાખ્યું}one{# બુકમાર્ક કાઢી નાખ્યા}other{# બુકમાર્ક કાઢી નાખ્યા}}</translation> <translation id="8272443605911821513">"વધુ સાધનો" મેનૂમાં એક્સટેન્શન્સને ક્લિક કરીને તમારા એક્સટેન્શન્સનું સંચાલન કરો.</translation> +<translation id="8272966760965438857">તમારાં Google એકાઉન્ટ એક જ સ્થળે મેનેજ કરો</translation> <translation id="8274332263553132018">ફાઇલ કાસ્ટ કરો</translation> <translation id="8274924778568117936">અપડેટ પૂર્ણ ન થાય ત્યાં સુધી તમારું <ph name="DEVICE_TYPE" /> બંધ કરતા નહીં. ઇન્સ્ટૉલેશન પૂર્ણ થયા બાદ તમારું <ph name="DEVICE_TYPE" /> ફરી શરૂ થશે.</translation> <translation id="8275038454117074363">આયાત કરો</translation> @@ -5183,6 +5197,7 @@ <translation id="8883847527783433352">બીજા એકાઉન્ટ સાથે સિંક કરો</translation> <translation id="8885197664446363138">Smart Lock અનુપલબ્ધ છે</translation> <translation id="88870264962436283"><ph name="APP_NAME" />ના ટચ IDનો ઉપયોગ કરો</translation> +<translation id="8888253246822647887">જ્યારે અપગ્રેડ પૂર્ણ થશે ત્યારે તમારી ઍપ ખુલશે. અપગ્રેડમાં થોડી મિનિટ લાગી શકે છે.</translation> <translation id="8888432776533519951">રંગ:</translation> <translation id="8890516388109605451">સ્રોતો</translation> <translation id="8892168913673237979">બધું સેટ છે!</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index 5a1cd1c..53295ec 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -131,7 +131,7 @@ <translation id="1177138678118607465">खोज विज्ञापन और दूसरी Google सेवाओं को मनमुताबिक बनाने के लिए Google आपके ब्राउज़िंग इतिहास का इस्तेमाल कर सकता है. आप myaccount.google.com/activitycontrols/search में इसे कभी भी बदल सकते हैं</translation> <translation id="1177863135347784049">कस्टम</translation> <translation id="1178581264944972037">पॉज़ करें</translation> -<translation id="1181037720776840403">निकालें</translation> +<translation id="1181037720776840403">हटाएं</translation> <translation id="1183237619868651138">स्थानीय कैश में <ph name="EXTERNAL_CRX_FILE" /> इंस्टॉल नहीं कर सकते.</translation> <translation id="1185924365081634987">इस नेटवर्क गड़बड़ी को ठीक करने के लिए आप <ph name="GUEST_SIGNIN_LINK_START" />अतिथि के रूप में ब्राउज़ करें<ph name="GUEST_SIGNIN_LINK_END" /> को भी आज़मा सकते हैं.</translation> <translation id="1186771945450942097">नुकसान पहुंचाने वाला सॉफ़्टवेयर निकालें</translation> @@ -367,6 +367,7 @@ <translation id="15373452373711364">बड़ा माउस कर्सर</translation> <translation id="1538729222189715449">Linux फ़ाइलें खुल रही हैं...</translation> <translation id="1540605929960647700">'डेमो मोड' चालू करें</translation> +<translation id="1541396123399225659">नए समूह में शामिल करें</translation> <translation id="1542514202066550870">यह टैब, हेडसेट में VR सामग्री को दिखाता है.</translation> <translation id="1543284117603151572">Edge से आयात किया गया</translation> <translation id="1545177026077493356">स्वचालित किओस्क मोड</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">फ़ॉर्मेट किया जा रहा है...</translation> <translation id="159359590073980872">चित्र संचय</translation> <translation id="1593926297800505364">भुगतान का तरीका सेव करें</translation> +<translation id="1595492813686795610">Linux अपग्रेड हो रहा है</translation> <translation id="1598233202702788831">आपके व्यवस्थापक के द्वारा अपडेट अक्षम किए गए हैं</translation> <translation id="1600857548979126453">पेज डीबगर बैकएंड तक पहुंचें</translation> <translation id="1601560923496285236">लागू करें</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">थीम सक्षम करें</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Chrome वेब स्टोर में देखें</translation> -<translation id="1761588866118490543">आवाज़ का नमूना</translation> <translation id="176193854664720708">पावर बटन में फ़िंगरप्रिंट सेंसर मौजूद होता है. किसी भी उंगली से इसे हल्के से छुएं.</translation> <translation id="1763046204212875858">ऐप्स शॉर्टकट बनाएं</translation> <translation id="1763108912552529023">एक्सप्लोर करते रहें</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">सिस्टम डॉयलॉग का उपयोग करके प्रिंट करें… <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">भेजने से पहले पूछें (अनुशंसित)</translation> <translation id="2384436799579181135">कोई गड़बड़ी हुई है. कृपया अपना प्रिंटर देखें और दोबारा कोशिश करें.</translation> +<translation id="2386926718981642523">बस "Ok Google" कहें और अपनी Assistant सेवा एक्सेस करें</translation> <translation id="2387458720915042159">प्रॉक्सी कनेक्शन प्रकार</translation> <translation id="2391419135980381625">मानक फ़ॉन्ट</translation> <translation id="2391762656119864333">निरस्त करें</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" />, <ph name="NETWORK_ID" /> से कनेक्ट करने में असमर्थ था. कृपया कोई अन्य नेटवर्क चुनें या पुन: प्रयास करें.</translation> <translation id="2553440850688409052">यह प्लग इन छुपाएं</translation> <translation id="2554553592469060349">चुनी गई फ़ाइल बहुत बड़ी है (अधिकतम आकार: 3mb).</translation> +<translation id="255747371423522804">मौजूदा समूह में जोड़ें</translation> <translation id="2558896001721082624">सिस्टम मेन्यू में सुलभता विकल्प हमेशा दिखाएं</translation> <translation id="2562685439590298522"> दस्तावेज़</translation> <translation id="2562743677925229011"><ph name="SHORT_PRODUCT_NAME" /> में प्रवेश नहीं है</translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">&फिर से करें</translation> <translation id="2972642118232180842">केवल ज़रूरी सामग्री चलाएं (सुझाया गया)</translation> <translation id="2973324205039581528">साइट म्यूट करें</translation> +<translation id="2977480621796371840">समूह से हटाएं</translation> <translation id="2979639724566107830">नई विंडो में खोलें</translation> <translation id="2981113813906970160">बड़ा माउस कर्सर दिखाएं</translation> <translation id="2982970937345031">अनाम रूप से रिपोर्ट करें</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">विभाजक</translation> <translation id="3389312115541230716">टास्कबार में <ph name="SMALL_PRODUCT_LOGO" /> आइकॉन पर राइट क्लिक करें</translation> +<translation id="3393352139658145068">जब कोई “Ok Google” कहे, तो Assistant चालू करें. बैटरी बचाने के लिए, “Ok Google” सिर्फ़ तब ही चालू होता है जब आपका डिवाइस किसी पावर स्रोत से कनेक्ट होता है.</translation> <translation id="3396800784455899911">"स्वीकार करें और जारी रखें" बटन पर क्लिक करके, आप पुष्टि करते हैं कि इन Google सेवाओं के लिए ऊपर बताई गई प्रोसेसिंग से आप सहमत हैं.</translation> <translation id="3399432415385675819">नोटिफ़िकेशन अक्षम हो जाएंगे</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3166,6 +3171,7 @@ <translation id="5816434091619127343">प्रिंटर में जिन बदलावों का अनुरोध किया गया है, उनकी वजह से प्रिंटर का इस्तेमाल नहीं किया जा सकेगा.</translation> <translation id="5817918615728894473">युग्मित करें</translation> <translation id="5821565227679781414">शॉर्टकट बनाएं</translation> +<translation id="5825412242012995131">चालू (सुुझाया गया)</translation> <translation id="5826507051599432481">सामान्य नाम (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">प्रिंट हो रहा है...</translation> @@ -3325,7 +3331,7 @@ <translation id="6041155700700864984">पूर्णस्क्रीन से बाहर निकलें</translation> <translation id="604124094241169006">स्वचालित</translation> <translation id="6042169520002885235">किसी प्रिंटर का निर्माता और मॉडल चुनें</translation> -<translation id="6042308850641462728">अधिक</translation> +<translation id="6042308850641462728">और ज़्यादा</translation> <translation id="6043317578411397101"><ph name="APP_NAME" />, <ph name="TAB_NAME" /> के साथ Chrome टैब को शेयर कर रहा है.</translation> <translation id="6044805581023976844"><ph name="APP_NAME" />, <ph name="TAB_NAME" /> के साथ Chrome टैब और ऑडियो शेयर कर रहा है.</translation> <translation id="6045021379489914695">आपका Chromebook और Android फ़ोन साथ मिलकर बेहतर काम करते हैं. उन्हें आपस में जोड़ें ताकि आप अपने कंप्यूटर से मैसेज (एसएमएस) भेज सकें, अपना इंटरनेट कनेक्शन शेयर कर सकें और अपने Chromebook को अपने फ़ोन से अनलॉक कर सकें.<ph name="FOOTNOTE_POINTER" /> <ph name="LINK_BEGIN" />ज़्यादा जानें<ph name="LINK_END" /></translation> @@ -3413,7 +3419,7 @@ <translation id="6163363155248589649">&सामान्य</translation> <translation id="6163522313638838258">सभी को विस्तृत करें...</translation> <translation id="6164005077879661055">'निगरानी में रखे गए इस उपयोगकर्ता' को हटाने के बाद, निगरानी में रखे गए उपयोगकर्ता से जुड़ीं सभी फ़ाइलें और 'स्थानीय डेटा' हमेशा के लिए मिट जाएंगे. 'निगरानी में रखे गए इस उपयोगकर्ता' की देखी गईं वेबसाइटें और सेटिंग <ph name="MANAGEMENT_URL" /> पर प्रबंधक को अब भी दिखेंगी.</translation> -<translation id="6165508094623778733">अधिक जानें</translation> +<translation id="6165508094623778733">ज़्यादा जानें</translation> <translation id="6166185671393271715">Chrome में पासवर्ड आयात करें</translation> <translation id="6169040057125497443">कृपया अपना माइक्रोफ़ोन जाँचें.</translation> <translation id="6169666352732958425">डेस्कटॉप कास्ट करने में असमर्थ.</translation> @@ -3710,6 +3716,11 @@ <translation id="6629841649550503054">सभी का <ph name="BEGIN_LINK" />Google डिस्क<ph name="END_LINK" /> में बैक अप लिया गया!</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> को आपकी ओर से स्वयं को प्रमाणीकृत करने के लिए प्रमाणपत्र की स्थायी ऐक्सेस चाहिए.</translation> <translation id="6635956300022133031">लिखाई को बोली में बदलने वाली आवाज़ें चुनें और उन्हें पसंद के मुताबिक बनाएं</translation> +<translation id="6637585982786704944">जिन ऐप्लिकेशन और वेबसाइटों को मंज़ूरी मिली हुई है, वे उस खाता जानकारी को एक्सेस कर सकते हैं, जो काम को ठीक तरीके से करने के लिए ज़रूरी है. + + अगर आप खाता नहीं जोड़ना चाहते हैं, तो वेब ब्राउज़िंग के लिए मेहमान के तौर पर साइन इन करें या कोई गुप्त विडो खोलें. + + सभी खातों को देखने और प्रबंधित करने के लिए आप सेटिंग -> Google खाते पर जा सकते हैं.</translation> <translation id="6639554308659482635">SQLite मेमोरी</translation> <translation id="6641138807883536517">बिना किसी क्रम से जेनरेट किया गया सुरक्षित मॉड्यूल पासवर्ड उपलब्ध नहीं है. Powerwash के बाद आमतौर पर ऐसा होता है.</translation> <translation id="6643016212128521049">साफ़ करें</translation> @@ -3911,6 +3922,7 @@ <translation id="6957231940976260713">सेवा का नाम</translation> <translation id="696203921837389374">मोबाइल डेटा पर समन्वयन सक्षम करें</translation> <translation id="6964390816189577014">हीरो</translation> +<translation id="6964760285928603117">समूह से हटाएं</translation> <translation id="6965382102122355670">ठीक है</translation> <translation id="6965648386495488594">पोर्ट</translation> <translation id="6965978654500191972">डिवाइस</translation> @@ -4020,6 +4032,7 @@ <translation id="7109543803214225826">शॉर्टकट हटाया गया</translation> <translation id="7113502843173351041">अपना ईमेल पता जानें</translation> <translation id="7114054701490058191">पासवर्ड मेल नहीं खाते</translation> +<translation id="7114648273807173152">Smart Lock का इस्तेमाल करके अपने Google खाते में साइन इन करने के लिए, सेटिंग > कनेक्ट किए हुए डिवाइस > आपका फ़ोन > Smart Lock पर जाएं.</translation> <translation id="7117228822971127758">कृपया बाद में फिर से कोशिश करें</translation> <translation id="7117247127439884114">पुन: प्रवेश करें...</translation> <translation id="711840821796638741">प्रबंधित बुकमार्क दिखाएं</translation> @@ -4175,6 +4188,7 @@ <translation id="7348093485538360975">ऑन-स्क्रीन कीबोर्ड</translation> <translation id="7352651011704765696">कुछ गलत हुआ</translation> <translation id="735361434055555355">Linux इंस्टॉल किया जा रहा है...</translation> +<translation id="7353887511974462734">मौजूदा समूह में जोड़ें</translation> <translation id="735745346212279324">VPN डिसकनेक्ट है</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" /> आइटम कॉपी किए जा रहे हैं...</translation> <translation id="7359588939039777303">विज्ञापन ब्लॉक हैं.</translation> @@ -4237,7 +4251,6 @@ <translation id="7456847797759667638">स्थान खोलें...</translation> <translation id="7461924472993315131">पिन करें</translation> <translation id="7463006580194749499">व्यक्ति जोड़ें</translation> -<translation id="7464902436585505072">"Ok Google" आवाज़ का नमूना</translation> <translation id="7465778193084373987">Netscape प्रमाणपत्र रद्द करने संबंधी URL</translation> <translation id="7469894403370665791">इस नेटवर्क से अपने आप कनेक्ट करें</translation> <translation id="747114903913869239">गड़बड़ी: एक्सटेंशन डिकोड करने में असमर्थ</translation> @@ -4807,6 +4820,7 @@ <translation id="827097179112817503">होम बटन दिखाएं</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 बुकमार्क हटाया गया}one{# बुकमार्क हटाए गए}other{# बुकमार्क हटाए गए}}</translation> <translation id="8272443605911821513">"अधिक टूल" मेनू में एक्सटेंशन पर क्लिक करके अपने एक्सटेंशन प्रबंधित करें.</translation> +<translation id="8272966760965438857">अपने Google खातों को एक ही जगह से प्रबंधित करें</translation> <translation id="8274332263553132018">फ़ाइल कास्ट करें</translation> <translation id="8274924778568117936">अपडेट पूरा होने तक अपना <ph name="DEVICE_TYPE" /> बंद न करें. इंस्टॉलेशन पूरा हो जाने के बाद आपका <ph name="DEVICE_TYPE" /> फिर से चालू हो जाएगा.</translation> <translation id="8275038454117074363">आयात करें</translation> @@ -5193,6 +5207,7 @@ <translation id="8883847527783433352">'किसी दूसरे खाते से सिंक करें'</translation> <translation id="8885197664446363138">Smart Lock अनुपलब्ध है</translation> <translation id="88870264962436283"><ph name="APP_NAME" /> के साथ टच आईडी का इस्तेमाल करें</translation> +<translation id="8888253246822647887">अपग्रेड पूरा होने पर आपका ऐप्लिकेशन खुल जाएगा. अपग्रेड में कुछ समय लग सकता है.</translation> <translation id="8888432776533519951">रंग:</translation> <translation id="8890516388109605451">स्रोत</translation> <translation id="8892168913673237979">बिल्कुल तैयार है!</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb index f085457..3ca32bd 100644 --- a/chrome/app/resources/generated_resources_hr.xtb +++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -518,7 +518,6 @@ <translation id="175772926354468439">Omogućiti temu</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Prikaz u Chrome web-trgovini</translation> -<translation id="1761588866118490543">Glasovni model</translation> <translation id="176193854664720708">Senzor otiska prsta nalazi se u tipki za uključivanje/isključivanje. Dodirnite ga lagano bilo kojim prstom.</translation> <translation id="1763046204212875858">Stvaranje prečaca aplikacije</translation> <translation id="1763108912552529023">Nastavi istraživati</translation> @@ -2118,7 +2117,7 @@ <translation id="4193154014135846272">Googleov dokument</translation> <translation id="4194570336751258953">Omogući dodir umjesto klika</translation> <translation id="4195249722193633765">Instalacija aplikacije uz Linux (Beta)</translation> -<translation id="4195643157523330669">Otvori u novoj kartici</translation> +<translation id="4195643157523330669">Otvori na novoj kartici</translation> <translation id="4195814663415092787">Nastavite tamo gdje ste stali</translation> <translation id="4197674956721858839">Komprimiraj odabrano</translation> <translation id="4198146608511578238">Samo držite ikonu Pokretača da biste razgovarali s Google asistentom.</translation> @@ -3167,7 +3166,6 @@ <translation id="5804241973901381774">Dozvoljeno</translation> <translation id="5805697420284793859">Upravitelj prozora</translation> <translation id="580571955903695899">Poredaj ponovo po naslovu</translation> -<translation id="5806795763657948556">Više odredišta</translation> <translation id="5811750797187914944">Sve je spremno</translation> <translation id="5814126672212206791">Vrsta veze</translation> <translation id="5815645614496570556">X.400 adresa</translation> @@ -4254,7 +4252,6 @@ <translation id="7456847797759667638">Otvori lokaciju...</translation> <translation id="7461924472993315131">Prikvači</translation> <translation id="7463006580194749499">Dodaj osobu</translation> -<translation id="7464902436585505072">Glasovni model za "Ok Google"</translation> <translation id="7465778193084373987">URL za opoziv Netscape certifikata</translation> <translation id="7469894403370665791">Automatski se povežite s tom mrežom</translation> <translation id="747114903913869239">Pogreška: Nije moguće dekodirati proširenje</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb index 7793231..436b02a 100644 --- a/chrome/app/resources/generated_resources_hu.xtb +++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Nagy egérmutató</translation> <translation id="1538729222189715449">Linux-fájlok megnyitása…</translation> <translation id="1540605929960647700">Demó mód engedélyezése</translation> +<translation id="1541396123399225659">Hozzáadás új csoporthoz</translation> <translation id="1542514202066550870">Ez a lap VR-tartalmat jelenít meg egy headseten.</translation> <translation id="1543284117603151572">Az Edge böngészőből importálva</translation> <translation id="1545177026077493356">Automatikus kioszk mód</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Formázás...</translation> <translation id="159359590073980872">Képek gyorsítótára</translation> <translation id="1593926297800505364">Fizetési mód mentése</translation> +<translation id="1595492813686795610">A Linux frissít…</translation> <translation id="1598233202702788831">A frissítéseket a rendszergazda letiltotta.</translation> <translation id="1600857548979126453">Hozzáférés az oldal háttérben történő hibakereséséhez</translation> <translation id="1601560923496285236">Alkalmaz</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Téma engedélyezése</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Megtekintés a Chrome Internetes áruházban</translation> -<translation id="1761588866118490543">Hangminta</translation> <translation id="176193854664720708">Az ujjlenyomat-érzékelő a bekapcsológombban található. Érintse meg finoman valamelyik ujjával.</translation> <translation id="1763046204212875858">Parancsikon létrehozása az alkalmazáshoz</translation> <translation id="1763108912552529023">A felfedezés folytatása</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">Nyomtatás a rendszer párbeszédablakán keresztül... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Kérdezzen rá küldés előtt (ajánlott)</translation> <translation id="2384436799579181135">Hiba történt. Ellenőrizze a nyomtatót, majd próbálja újra.</translation> +<translation id="2386926718981642523">Bármikor hozzáférhet Segédjéhez, csak mondja azt, hogy „Ok Google”</translation> <translation id="2387458720915042159">Proxykapcsolat típusa</translation> <translation id="2391419135980381625">Alapértelmezett betűtípus</translation> <translation id="2391762656119864333">Visszavonás</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190">A <ph name="PRODUCT_NAME" /> nem tudott kapcsolódni a következőhöz: <ph name="NETWORK_ID" />. Válasszon másik hálózatot és próbálja újra.</translation> <translation id="2553440850688409052">Plug-in elrejtése</translation> <translation id="2554553592469060349">A kiválasztott fájl túl nagy (a maximális méret 3 MB).</translation> +<translation id="255747371423522804">Hozzáadás meglévő csoporthoz</translation> <translation id="2558896001721082624">A kisegítő beállítások mindig jelenjenek meg a rendszermenüben</translation> <translation id="2562685439590298522">Dokumentumok</translation> <translation id="2562743677925229011">Nem jelentkezett be ide: <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1316,6 +1319,7 @@ <translation id="2972581237482394796">&Újra</translation> <translation id="2972642118232180842">Csak fontos tartalmak futtatása (ajánlott)</translation> <translation id="2973324205039581528">Webhely némítása</translation> +<translation id="2977480621796371840">Eltávolítás a csoportból</translation> <translation id="2979639724566107830">Megnyitás új ablakban</translation> <translation id="2981113813906970160">Nagy egérmutató megjelenítése</translation> <translation id="2982970937345031">Jelentés névtelenül</translation> @@ -1566,6 +1570,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Elválasztó</translation> <translation id="3389312115541230716">Kattintson a jobb gombbal a(z) <ph name="SMALL_PRODUCT_LOGO" /> ikonjára a tálcán</translation> +<translation id="3393352139658145068">A Segéd aktiválása, amikor valaki azt mondja, hogy „Ok Google”. Az akkumulátor üzemidejének növelése érdekében az „Ok Google” csak akkor van bekapcsolva, amikor az eszköz áramforrásra csatlakozik.</translation> <translation id="3396800784455899911">Az „Elfogadás és folytatás” gombra kattintva elfogadja az ezen Google-szolgáltatásokkal kapcsolatos, fent részletezett feldolgozási folyamatot.</translation> <translation id="3399432415385675819">Az értesítések le lesznek tiltva</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3169,6 +3174,7 @@ <translation id="5816434091619127343">A kívánt nyomtatómódosítások használhatatlanná tehetik a nyomtatót.</translation> <translation id="5817918615728894473">Párosítás</translation> <translation id="5821565227679781414">Parancsikon létrehozása</translation> +<translation id="5825412242012995131">Be (javasolt)</translation> <translation id="5826507051599432481">Név (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Nyomtatás...</translation> @@ -3328,7 +3334,7 @@ <translation id="6041155700700864984">Kilépés a teljes képernyős módból</translation> <translation id="604124094241169006">Automatikus</translation> <translation id="6042169520002885235">A nyomtató gyártójának és modelljének kiválasztása</translation> -<translation id="6042308850641462728">Hosszabban</translation> +<translation id="6042308850641462728">Továbbiak</translation> <translation id="6043317578411397101">A(z) <ph name="APP_NAME" /> megosztja a Chrome egy lapját a következővel: <ph name="TAB_NAME" />.</translation> <translation id="6044805581023976844">A(z) <ph name="APP_NAME" /> megosztja a Chrome egy lapját és a hangot a következővel: <ph name="TAB_NAME" />.</translation> <translation id="6045021379489914695">Chromebook-eszköze és Android-telefonja együtt még hatékonyabb. Ha csatlakoztatja őket egymáshoz, számítógépről küldhet SMS-t, megoszthatja az internetkapcsolatot, és feloldhatja Chromebookja zárolását a telefonról.<ph name="FOOTNOTE_POINTER" /> <ph name="LINK_BEGIN" />További információ<ph name="LINK_END" />.</translation> @@ -3713,6 +3719,11 @@ <translation id="6629841649550503054">Mindenről van biztonsági másolat a <ph name="BEGIN_LINK" />Google Drive-on<ph name="END_LINK" />!</translation> <translation id="6630752851777525409">A(z) <ph name="EXTENSION_NAME" /> végleges hozzáférést kér egy tanúsítványhoz, hogy az Ön nevében hitelesíthesse magát.</translation> <translation id="6635956300022133031">A szövegfelolvasó hangjainak kiválasztása és testreszabása</translation> +<translation id="6637585982786704944">Az engedélyével rendelkező alkalmazások és webhelyek hozzáférhetnek a megfelelő működésükhöz szükséges fiókadatokhoz. + + Ha fiók hozzáadása nélkül szeretne böngészni az interneten, jelentkezzen be vendégként, vagy nyisson inkognitóablakot. + + A fiókokat a Beállítások -> Google-fiókok szakaszban kezelheti.</translation> <translation id="6639554308659482635">SQLite memória</translation> <translation id="6641138807883536517">A véletlenszerűen generált biztonságimodul-jelszó nem áll rendelkezésre. Powerwash művelet után ez normális.</translation> <translation id="6643016212128521049">Törlés</translation> @@ -3914,6 +3925,7 @@ <translation id="6957231940976260713">Szolgáltatás neve</translation> <translation id="696203921837389374">Szinkronizálás engedélyezése mobiladat-kapcsolaton</translation> <translation id="6964390816189577014">Hős</translation> +<translation id="6964760285928603117">Eltávolítás a csoportból</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Port</translation> <translation id="6965978654500191972">Készülék</translation> @@ -4023,6 +4035,7 @@ <translation id="7109543803214225826">Billentyűparancs eltávolítva</translation> <translation id="7113502843173351041">Megismerheti az Ön e-mail-címét</translation> <translation id="7114054701490058191">A jelszavak nem egyeznek</translation> +<translation id="7114648273807173152">Ha használni szeretné a Smart Lock funkciót Google-fiókjában, lépjen a Beállítások > Társított eszközök > Telefon > Smart Lock menüpontba.</translation> <translation id="7117228822971127758">Próbálja újra később</translation> <translation id="7117247127439884114">Bejelentkezés újra...</translation> <translation id="711840821796638741">Kezelt könyvjelzők megjelenítése</translation> @@ -4178,6 +4191,7 @@ <translation id="7348093485538360975">Képernyő-billentyűzet</translation> <translation id="7352651011704765696">Valami nem működik</translation> <translation id="735361434055555355">A Linux telepítése…</translation> +<translation id="7353887511974462734">Hozzáadás meglévő csoporthoz</translation> <translation id="735745346212279324">A VPN nincs csatlakoztatva</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" /> elem másolása…</translation> <translation id="7359588939039777303">Hirdetések letiltva.</translation> @@ -4240,7 +4254,6 @@ <translation id="7456847797759667638">Hely megnyitása...</translation> <translation id="7461924472993315131">Rögzítés</translation> <translation id="7463006580194749499">Személy hozzáadása</translation> -<translation id="7464902436585505072">„Ok Google” hangminta</translation> <translation id="7465778193084373987">Netscape tanúsítvány - visszavonási URL</translation> <translation id="7469894403370665791">Automatikus kapcsolódás ehhez a hálózathoz</translation> <translation id="747114903913869239">Hiba: nem lehet dekódolni a bővítményt</translation> @@ -4810,6 +4823,7 @@ <translation id="827097179112817503">A „kezdőoldal” gomb megjelenítése</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 könyvjelző törölve}other{# könyvjelző törölve}}</translation> <translation id="8272443605911821513">Bővítményeit a „További eszközök” menü Bővítmények elemére kattintva kezelheti.</translation> +<translation id="8272966760965438857">Egyetlen helyen kezelheti Google-fiókjait</translation> <translation id="8274332263553132018">Fájl átküldése</translation> <translation id="8274924778568117936">A frissítés befejezéséig ne kapcsolja ki vagy csukja le <ph name="DEVICE_TYPE" /> eszközét. <ph name="DEVICE_TYPE" /> eszköze a telepítést követően újraindul.</translation> <translation id="8275038454117074363">Importálás</translation> @@ -5196,6 +5210,7 @@ <translation id="8883847527783433352">Szinkronizálás másik fiókkal</translation> <translation id="8885197664446363138">A Smart Lock nem áll rendelkezésre</translation> <translation id="88870264962436283">Touch ID használata a következővel: <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">A frissítés befejezése után megnyílik az alkalmazás. A frissítési folyamat eltarthat néhány percig.</translation> <translation id="8888432776533519951">Szín:</translation> <translation id="8890516388109605451">Források</translation> <translation id="8892168913673237979">Kész is van!</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index 0ee3da6e..fb7c6f9 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -518,7 +518,6 @@ <translation id="175772926354468439">Aktifkan tema</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Lihat di Chrome Web Store</translation> -<translation id="1761588866118490543">Model suara</translation> <translation id="176193854664720708">Sensor sidik jari ada di tombol power. Sentuh sensor menggunakan jari mana pun.</translation> <translation id="1763046204212875858">Buat pintasan aplikasi</translation> <translation id="1763108912552529023">Terus menjelajah</translation> @@ -3167,7 +3166,6 @@ <translation id="5804241973901381774">Izin</translation> <translation id="5805697420284793859">Window manager</translation> <translation id="580571955903695899">Susun Ulang menurut Judul</translation> -<translation id="5806795763657948556">Tujuan lainnya</translation> <translation id="5811750797187914944">Semua siap</translation> <translation id="5814126672212206791">Jenis sambungan</translation> <translation id="5815645614496570556">X.400 Address</translation> @@ -4076,7 +4074,7 @@ <translation id="7171559745792467651">Instal aplikasi dari perangkat lainnya</translation> <translation id="7175037578838465313">Konfigurasi <ph name="NAME" /></translation> <translation id="7175353351958621980">Dimuat dari:</translation> -<translation id="7180611975245234373">Segarkan</translation> +<translation id="7180611975245234373">Perbarui</translation> <translation id="7180865173735832675">Sesuaikan</translation> <translation id="7182359331070524176">Pilih album Google Foto</translation> <translation id="7186088072322679094">Tetap sematkan di Bilah Alat</translation> @@ -4254,7 +4252,6 @@ <translation id="7456847797759667638">Buka Lokasi...</translation> <translation id="7461924472993315131">Pasang Pin</translation> <translation id="7463006580194749499">Tambahkan pengguna</translation> -<translation id="7464902436585505072">Model suara "Ok Google"</translation> <translation id="7465778193084373987">Netscape Certificate Revocation URL</translation> <translation id="7469894403370665791">Sambungkan ke jaringan ini secara otomatis</translation> <translation id="747114903913869239">Kesalahan: Tidak dapat mendekodekan ekstensi</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index 6bb661d..07d5117 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Puntatore del mouse grande</translation> <translation id="1538729222189715449">Apertura di file Linux…</translation> <translation id="1540605929960647700">Attiva modalità demo</translation> +<translation id="1541396123399225659">Aggiungi a nuovo gruppo</translation> <translation id="1542514202066550870">Questa scheda mostra contenuti VR a un auricolare.</translation> <translation id="1543284117603151572">Importati da Edge</translation> <translation id="1545177026077493356">Modalità kiosk automatica</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Formattazione in corso...</translation> <translation id="159359590073980872">Cache immagini</translation> <translation id="1593926297800505364">Salva il metodo di pagamento</translation> +<translation id="1595492813686795610">Upgrade di Linux…</translation> <translation id="1598233202702788831">Gli aggiornamenti sono stati disattivati dall'amministratore.</translation> <translation id="1600857548979126453">Accesso al backend del debugger delle pagine</translation> <translation id="1601560923496285236">Applica</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Attiva tema</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Visualizza nel Chrome Web Store</translation> -<translation id="1761588866118490543">Modello vocale</translation> <translation id="176193854664720708">Il sensore di impronte digitali si trova nel tasto di accensione. Toccalo leggermente con un dito.</translation> <translation id="1763046204212875858">Creazione di scorciatoie applicazione</translation> <translation id="1763108912552529023">Continua a esplorare</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">Stampa utilizzando la finestra di dialogo di sistema... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Chiedi prima di inviare (opzione consigliata)</translation> <translation id="2384436799579181135">Si è verificato un errore. Controlla la tua stampante e riprova.</translation> +<translation id="2386926718981642523">Accedi all'assistente ogni volta che dici "Ok Google"</translation> <translation id="2387458720915042159">Tipo di connessione proxy</translation> <translation id="2391419135980381625">Carattere standard</translation> <translation id="2391762656119864333">Revoca</translation> @@ -1042,6 +1044,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> non è riuscito a collegarsi a <ph name="NETWORK_ID" />. Seleziona un'altra rete o riprova.</translation> <translation id="2553440850688409052">Nascondi questo plug-in</translation> <translation id="2554553592469060349">Il file selezionato è troppo grande (dimensioni massime: 3 mb).</translation> +<translation id="255747371423522804">Aggiungi al gruppo esistente</translation> <translation id="2558896001721082624">Mostra sempre le opzioni di accessibilità nel menu di sistema</translation> <translation id="2562685439590298522">Documenti</translation> <translation id="2562743677925229011">Non connesso a <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1313,6 +1316,7 @@ <translation id="2972581237482394796">&Ripeti</translation> <translation id="2972642118232180842">Esegui solo contenuti importanti (consigliata)</translation> <translation id="2973324205039581528">Disattiva l'audio del sito</translation> +<translation id="2977480621796371840">Rimuovi dal gruppo</translation> <translation id="2979639724566107830">Apri in un'altra finestra</translation> <translation id="2981113813906970160">Mostra puntatore mouse grande</translation> <translation id="2982970937345031">Segnalazione anonima</translation> @@ -1561,6 +1565,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Separatore</translation> <translation id="3389312115541230716">Fai clic con il pulsante destro del mouse sull'icona <ph name="SMALL_PRODUCT_LOGO" /> nella barra delle applicazioni</translation> +<translation id="3393352139658145068">Attiva l'assistente quando qualcuno dice "Ok Google". Per consumare meno batteria, la hotword "Ok Google" è attiva solo quando il dispositivo è collegato a una fonte di alimentazione.</translation> <translation id="3396800784455899911">Se fai clic sul pulsante "Accetta e continua", accetti l'elaborazione descritta in precedenza per questi servizi Google.</translation> <translation id="3399432415385675819">Le notifiche verranno disattivate</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3162,6 +3167,7 @@ <translation id="5816434091619127343">Le modifiche richieste renderebbero la stampante inutilizzabile.</translation> <translation id="5817918615728894473">Accoppia</translation> <translation id="5821565227679781414">Crea scorciatoia</translation> +<translation id="5825412242012995131">On (opzione consigliata)</translation> <translation id="5826507051599432481">Nome comune (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Stampa in corso...</translation> @@ -3706,6 +3712,11 @@ <translation id="6629841649550503054">Backup di tutti gli elementi su <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> completato.</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> desidera un accesso permanente a un certificato per eseguire l'autenticazione a tuo nome.</translation> <translation id="6635956300022133031">Seleziona e personalizza le voci per la sintesi vocale</translation> +<translation id="6637585982786704944">Le app e i siti web autorizzati possono accedere ai dati degli account necessari per il loro corretto funzionamento. + + Se non vuoi aggiungere un account, accedi come ospite oppure apri una finestra di navigazione in incognito per navigare sul Web. + + Puoi aprire Impostazioni -> Account Google per vedere e gestire tutti gli account.</translation> <translation id="6639554308659482635">Memoria SQLite</translation> <translation id="6641138807883536517">La password del modulo per la sicurezza generata in modo casuale non è disponibile, ma è normale dopo un Powerwash.</translation> <translation id="6643016212128521049">Cancella</translation> @@ -3907,6 +3918,7 @@ <translation id="6957231940976260713">Nome servizio</translation> <translation id="696203921837389374">Attiva sincronizzazione tramite dati mobili</translation> <translation id="6964390816189577014">Eroe</translation> +<translation id="6964760285928603117">Rimuovi dal gruppo</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Porta</translation> <translation id="6965978654500191972">Dispositivo</translation> @@ -4016,6 +4028,7 @@ <translation id="7109543803214225826">Scorciatoia rimossa</translation> <translation id="7113502843173351041">Accedere all'indirizzo email</translation> <translation id="7114054701490058191">Le password non corrispondono</translation> +<translation id="7114648273807173152">Per utilizzare Smart Lock per accedere al tuo Account Google, apri Impostazioni > Dispositivi connessi > Il tuo telefono > Smart Lock.</translation> <translation id="7117228822971127758">Riprova più tardi</translation> <translation id="7117247127439884114">Esegui di nuovo l'accesso...</translation> <translation id="711840821796638741">Mostra Preferiti gestiti</translation> @@ -4171,6 +4184,7 @@ <translation id="7348093485538360975">Tastiera sullo schermo</translation> <translation id="7352651011704765696">Si è verificato un problema</translation> <translation id="735361434055555355">Installazione di Linux...</translation> +<translation id="7353887511974462734">Aggiungi al gruppo esistente</translation> <translation id="735745346212279324">VPN scollegata</translation> <translation id="7359359531237882347">Copia di <ph name="NUMBER_OF_ITEMS" /> elementi...</translation> <translation id="7359588939039777303">Annunci bloccati.</translation> @@ -4233,7 +4247,6 @@ <translation id="7456847797759667638">Apri percorso...</translation> <translation id="7461924472993315131">Blocca</translation> <translation id="7463006580194749499">Aggiungi persona</translation> -<translation id="7464902436585505072">Modello vocale "Ok Google"</translation> <translation id="7465778193084373987">URL di revoca certificato Netscape</translation> <translation id="7469894403370665791">Collegati automaticamente a questa rete</translation> <translation id="747114903913869239">Errore: impossibile decodificare l'estensione</translation> @@ -4800,6 +4813,7 @@ <translation id="827097179112817503">Mostra pulsante Home</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 preferito eliminato}other{# preferiti eliminati}}</translation> <translation id="8272443605911821513">Gestisci le tue estensioni facendo clic su Estensioni nel menu "Altri strumenti".</translation> +<translation id="8272966760965438857">Gestisci il tuo Account Google in un unico posto</translation> <translation id="8274332263553132018">Trasmetti file</translation> <translation id="8274924778568117936">Non spegnere o chiudere il tuo dispositivo <ph name="DEVICE_TYPE" /> fino al termine dell'aggiornamento. Il dispositivo <ph name="DEVICE_TYPE" /> si riavvierà al termine dell'installazione.</translation> <translation id="8275038454117074363">Importa</translation> @@ -5186,6 +5200,7 @@ <translation id="8883847527783433352">Sincronizza con un altro account</translation> <translation id="8885197664446363138">Smart Lock non disponibile</translation> <translation id="88870264962436283">Usa Touch ID con <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">L'app verrà aperta al termine dell'upgrade. Gli upgrade possono richiedere qualche minuto.</translation> <translation id="8888432776533519951">Colore:</translation> <translation id="8890516388109605451">Fonti</translation> <translation id="8892168913673237979">Finito.</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index 9925680b..7ede17a 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -131,7 +131,7 @@ <translation id="1177138678118607465">Google עשויה להשתמש בהיסטוריית הגלישה שלך כדי להתאים אישית את החיפוש, מודעות ושירותים נוספים של Google. אפשר לשנות את ההגדרה הזו בכתובת myaccount.google.com/activitycontrols/search.</translation> <translation id="1177863135347784049">מותאם אישית</translation> <translation id="1178581264944972037">השהה</translation> -<translation id="1181037720776840403">הסר</translation> +<translation id="1181037720776840403">הסרה</translation> <translation id="1183237619868651138">לא ניתן להתקין את <ph name="EXTERNAL_CRX_FILE" /> במטמון המקומי.</translation> <translation id="1185924365081634987">כדאי גם לנסות <ph name="GUEST_SIGNIN_LINK_START" />לגלוש כאורח<ph name="GUEST_SIGNIN_LINK_END" /> כדי לתקן את שגיאת הרשת הזו.</translation> <translation id="1186771945450942097">הסרת תוכנה מזיקה</translation> @@ -364,6 +364,7 @@ <translation id="15373452373711364">סמן עכבר גדול</translation> <translation id="1538729222189715449">מתבצעת פתיחה של קובצי Linux...</translation> <translation id="1540605929960647700">הפעלת מצב הדגמה</translation> +<translation id="1541396123399225659">הוספה לקבוצה חדשה</translation> <translation id="1542514202066550870">הכרטיסייה הזו מציגה תוכן VR במשקפי VR.</translation> <translation id="1543284117603151572">מיובא מ-Edge</translation> <translation id="1545177026077493356">מצב קיוסק אוטומטי</translation> @@ -402,6 +403,7 @@ <translation id="1593594475886691512">מפרמט...</translation> <translation id="159359590073980872">מטמון של תמונה</translation> <translation id="1593926297800505364">שמירת אמצעי התשלום</translation> +<translation id="1595492813686795610">מתבצע עכשיו שדרוג של Linux</translation> <translation id="1598233202702788831">מנהל המערכת השבית את העדכונים.</translation> <translation id="1600857548979126453">להיכנס לניפוי הבאגים העורפי של הדף</translation> <translation id="1601560923496285236">החל</translation> @@ -513,7 +515,6 @@ <translation id="175772926354468439">הפעל עיצוב</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">הצגה בחנות האינטרנט של Chrome</translation> -<translation id="1761588866118490543">תבנית קול</translation> <translation id="176193854664720708">חיישן טביעות האצבע נמצא בלחצן ההפעלה. יש לגעת בו בעדינות באחת האצבעות.</translation> <translation id="1763046204212875858">צור קיצורי דרך ליישום</translation> <translation id="1763108912552529023">המשך לחקור</translation> @@ -935,6 +936,7 @@ <translation id="2379281330731083556">הדפס באמצעות תיבת דו-שיח של המערכת... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">שאל לפני שליחה (מומלץ)</translation> <translation id="2384436799579181135">אירעה שגיאה. יש לבדוק את המדפסת ולנסות שוב.</translation> +<translation id="2386926718981642523">גישה אל ה-Assistant בכל פעם שנאמר הביטוי "Ok Google"</translation> <translation id="2387458720915042159">סוג חיבור לשרת proxy</translation> <translation id="2391419135980381625">גופן רגיל</translation> <translation id="2391762656119864333">בטל</translation> @@ -1040,6 +1042,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> לא הצליח להתחבר אל <ph name="NETWORK_ID" />. בחר רשת אחרת או נסה שוב.</translation> <translation id="2553440850688409052">הסתר פלאגין זה</translation> <translation id="2554553592469060349">הקובץ שנבחר גדול מדי (גודל מרבי: 3mb).</translation> +<translation id="255747371423522804">הוספה לקבוצה קיימת</translation> <translation id="2558896001721082624">אפשרויות נגישות מוצגות תמיד בתפריט המערכת</translation> <translation id="2562685439590298522">מסמכים</translation> <translation id="2562743677925229011">לא נכנסת לחשבון <ph name="SHORT_PRODUCT_NAME" /> שלך</translation> @@ -1312,6 +1315,7 @@ <translation id="2972581237482394796">&בצע שנית</translation> <translation id="2972642118232180842">הפעלה של תוכן חשוב בלבד (מומלץ)</translation> <translation id="2973324205039581528">השתקת האתר</translation> +<translation id="2977480621796371840">הסרה מהקבוצה</translation> <translation id="2979639724566107830">פתח בחלון חדש</translation> <translation id="2981113813906970160">הצג סמן עכבר גדול</translation> <translation id="2982970937345031">דיווח באופן אנונימי</translation> @@ -1562,6 +1566,7 @@ <translation id="3385092118218578224">%<ph name="DISPLAY_ZOOM" /></translation> <translation id="338583716107319301">מפריד</translation> <translation id="3389312115541230716">לחץ לחיצה ימנית על הסמל <ph name="SMALL_PRODUCT_LOGO" /> בשורת המשימות</translation> +<translation id="3393352139658145068">הפעלה של ה-Assistant כשמישהו אומר "Ok Google". כדי לחסוך בסוללה, התכונה "Ok Google" פועלת רק כשהמכשיר מחובר למקור חשמל.</translation> <translation id="3396800784455899911">לחיצה על הלחצן "קבלה והמשך" מבטאת את הסכמתך לעיבוד שתואר קודם לכן לגבי השירותים האלה של Google.</translation> <translation id="3399432415385675819">הודעות יושבתו</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -2109,7 +2114,7 @@ <translation id="4193154014135846272">מסמך Google</translation> <translation id="4194570336751258953">הפעלת האפשרות 'נגיעה קלה'</translation> <translation id="4195249722193633765">התקנת אפליקציה באמצעות Linux (בטא)</translation> -<translation id="4195643157523330669">פתח בכרטיסייה חדשה</translation> +<translation id="4195643157523330669">פתיחה בכרטיסייה חדשה</translation> <translation id="4195814663415092787">המשך מהמקום שבו הפסקת</translation> <translation id="4197674956721858839">כווץ את הקבצים שנבחרו</translation> <translation id="4198146608511578238">כדי לדבר אל Google Assistant, לחץ לחיצה ארוכה על הסמל של מרכז האפליקציות.</translation> @@ -3165,6 +3170,7 @@ <translation id="5816434091619127343">אם יבוצעו שינויי המדפסת שהתבקשו, לא ניתן יהיה להשתמש בה.</translation> <translation id="5817918615728894473">התאם</translation> <translation id="5821565227679781414">צור קיצור דרך</translation> +<translation id="5825412242012995131">מופעל (מומלץ)</translation> <translation id="5826507051599432481">שם נפוץ (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">מדפיס...</translation> @@ -3709,6 +3715,11 @@ <translation id="6629841649550503054">הכל מגובה ב-<ph name="BEGIN_LINK" />Google Drive!<ph name="END_LINK" /></translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> מעוניין בגישה קבועה לאישור כדי לאמת את עצמו בשמך.</translation> <translation id="6635956300022133031">בחירה והתאמה אישית של קולות בהמרת טקסט לדיבור</translation> +<translation id="6637585982786704944">אפליקציות ואתרים שהענקת להם הרשאה יכולים לגשת אל פרטי החשבון הנחוצים להם כדי לפעול באופן תקין. + + אם אינך רוצה להוסיף חשבון, יש להיכנס כאורח או לפתוח חלון גלישה בסתר כדי לגלוש באינטרנט. + + את החשבונות אפשר להציג ולנהל ב'הגדרות' -> 'חשבונות Google'.</translation> <translation id="6639554308659482635">זיכרון SQLite </translation> <translation id="6641138807883536517">סיסמת המודול המאובטח הנוצרת באופן אקראי אינה זמינה. זהו מצב רגיל לאחר ביצוע Powerwash.</translation> <translation id="6643016212128521049">נקה</translation> @@ -3910,6 +3921,7 @@ <translation id="6957231940976260713">שם שירות</translation> <translation id="696203921837389374">הפעל סנכרון של נתונים לנייד</translation> <translation id="6964390816189577014">גיבור</translation> +<translation id="6964760285928603117">הסרה מהקבוצה</translation> <translation id="6965382102122355670">אישור</translation> <translation id="6965648386495488594">יציאה</translation> <translation id="6965978654500191972">התקן</translation> @@ -4019,6 +4031,7 @@ <translation id="7109543803214225826">קיצור הדרך הוסר</translation> <translation id="7113502843173351041">לדעת את כתובת האימייל שלך</translation> <translation id="7114054701490058191">הסיסמאות לא תואמות</translation> +<translation id="7114648273807173152">כדי להשתמש ב-Smart Lock על מנת להיכנס אל חשבון Google צריך לעבור אל 'הגדרות' > 'מכשירים מחוברים' > 'הטלפון שלך > Smart Lock.</translation> <translation id="7117228822971127758">אפשר לנסות שוב מאוחר יותר</translation> <translation id="7117247127439884114">היכנס שוב...</translation> <translation id="711840821796638741">הצג סימניות מנוהלות</translation> @@ -4059,7 +4072,7 @@ <translation id="7171559745792467651">התקנת אפליקציות ממכשירים אחרים שברשותך</translation> <translation id="7175037578838465313">הגדרה של <ph name="NAME" /></translation> <translation id="7175353351958621980">נטען מתוך:</translation> -<translation id="7180611975245234373">רענן</translation> +<translation id="7180611975245234373">רענון</translation> <translation id="7180865173735832675">התאם אישית</translation> <translation id="7182359331070524176">בחירת אלבום בתמונות Google</translation> <translation id="7186088072322679094">השאר בסרגל הכלים</translation> @@ -4174,6 +4187,7 @@ <translation id="7348093485538360975">מקלדת על המסך</translation> <translation id="7352651011704765696">משהו השתבש</translation> <translation id="735361434055555355">מתבצעת התקנה של Linux...</translation> +<translation id="7353887511974462734">הוספה לקבוצה קיימת</translation> <translation id="735745346212279324">VPN מנותק</translation> <translation id="7359359531237882347">מעתיק <ph name="NUMBER_OF_ITEMS" /> פריטים…</translation> <translation id="7359588939039777303">מודעות חסומות.</translation> @@ -4236,7 +4250,6 @@ <translation id="7456847797759667638">פתח מיקום...</translation> <translation id="7461924472993315131">הצמד</translation> <translation id="7463006580194749499">הוספת משתמש</translation> -<translation id="7464902436585505072">תבנית קול בשביל "Ok Google"</translation> <translation id="7465778193084373987">כתובת אתר לביטול אישור של Netscape</translation> <translation id="7469894403370665791">התחבר אוטומטית לרשת זו.</translation> <translation id="747114903913869239">שגיאה: לא ניתן לפענח תוסף</translation> @@ -4805,6 +4818,7 @@ <translation id="827097179112817503">הצג את לחצן 'דף הבית'</translation> <translation id="8271246892936492311">{COUNT,plural, =1{סימניה אחת נמחקה}two{# סימניות נמחקו}many{# סימניות נמחקו}other{# סימניות נמחקו}}</translation> <translation id="8272443605911821513">נהל את התוספים שלך על ידי לחיצה על 'תוספים' בתפריט 'כלים נוספים'.</translation> +<translation id="8272966760965438857">יש לך אפשרות לנהל את כל חשבונות Google שלך במקום אחד</translation> <translation id="8274332263553132018">העברת קובץ</translation> <translation id="8274924778568117936">אל תכבה או תסגור את ה-<ph name="DEVICE_TYPE" /> לפני סיום העדכון. ה-<ph name="DEVICE_TYPE" /> יופעל מחדש באופן אוטומטי בסיום ההתקנה.</translation> <translation id="8275038454117074363">ייבוא</translation> @@ -5191,6 +5205,7 @@ <translation id="8883847527783433352">סינכרון עם חשבון אחר</translation> <translation id="8885197664446363138">Smart Lock אינו זמין</translation> <translation id="88870264962436283">שימוש ב-Touch ID באפליקציה <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">האפליקציה תיפתח בסיום השדרוג. פעולת השדרוג יכולה להימשך כמה דקות.</translation> <translation id="8888432776533519951">צבע:</translation> <translation id="8890516388109605451">מקורות</translation> <translation id="8892168913673237979">הכל מוכן!</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index 1584132..e0d2ffb 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">大きいマウス カーソル</translation> <translation id="1538729222189715449">[Linux ファイル] を開いています...</translation> <translation id="1540605929960647700">デモモードの有効化</translation> +<translation id="1541396123399225659">新しいグループに追加</translation> <translation id="1542514202066550870">このタブは VR コンテンツをヘッドセットに配信しています。</translation> <translation id="1543284117603151572">Edge からインポート</translation> <translation id="1545177026077493356">自動キオスク モード</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">フォーマット中...</translation> <translation id="159359590073980872">画像キャッシュ</translation> <translation id="1593926297800505364">お支払い方法を保存</translation> +<translation id="1595492813686795610">Linux をアップグレードしています</translation> <translation id="1598233202702788831">更新は管理者によって無効になっています。</translation> <translation id="1600857548979126453">ページ デバッガ バックエンドにアクセスする</translation> <translation id="1601560923496285236">適用</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">テーマを有効にする</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Chrome ウェブストアのページに移動</translation> -<translation id="1761588866118490543">音声モデル</translation> <translation id="176193854664720708">指紋認証センサーは電源ボタンに搭載されています。いずれかの指で軽く触れてください。</translation> <translation id="1763046204212875858">アプリケーションのショートカットを作成</translation> <translation id="1763108912552529023">さらに確認</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">システム ダイアログを使用して印刷... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">送信する前に確認する(推奨)</translation> <translation id="2384436799579181135">エラーが発生しました。プリンタを確認してもう一度お試しください。</translation> +<translation id="2386926718981642523">「OK Google」と話すといつでもアシスタントにアクセスできます</translation> <translation id="2387458720915042159">プロキシ接続タイプ</translation> <translation id="2391419135980381625">標準フォント</translation> <translation id="2391762656119864333">取り消し</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> は <ph name="NETWORK_ID" /> に接続できませんでした。別のネットワークを選択するか、もう一度お試しください。</translation> <translation id="2553440850688409052">このプラグインを表示しない</translation> <translation id="2554553592469060349">選択したファイルが大きすぎます(最大サイズ: 3 MB)。</translation> +<translation id="255747371423522804">既存のグループに追加</translation> <translation id="2558896001721082624">システム メニューにユーザー補助オプションを常に表示する</translation> <translation id="2562685439590298522">ドキュメント</translation> <translation id="2562743677925229011"><ph name="SHORT_PRODUCT_NAME" /> にログインしていません</translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">やり直し(&R)</translation> <translation id="2972642118232180842">重要なコンテンツのみを実行する(推奨)</translation> <translation id="2973324205039581528">サイトをミュート</translation> +<translation id="2977480621796371840">グループから削除</translation> <translation id="2979639724566107830">新しいウィンドウで開く</translation> <translation id="2981113813906970160">大きいマウス カーソルを表示する</translation> <translation id="2982970937345031">匿名で報告</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">セパレータ</translation> <translation id="3389312115541230716">タスクバーで <ph name="SMALL_PRODUCT_LOGO" /> アイコンを右クリックします</translation> +<translation id="3393352139658145068">「OK Google」と話すとアシスタントを起動できます。バッテリー消費を抑えるため、お使いのデバイスがコンセントに接続されている場合にのみ「OK Google」に反応します。</translation> <translation id="3396800784455899911">[同意して続行] をクリックすると、これらの Google サービスに関する上記の処理内容に同意したことになります。</translation> <translation id="3399432415385675819">通知が無効になります</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />、<ph name="TIME_LEFT" /></translation> @@ -3167,6 +3172,7 @@ <translation id="5816434091619127343">リクエストされた変更を行うと、プリンタを使用できなくります。</translation> <translation id="5817918615728894473">ペア設定</translation> <translation id="5821565227679781414">ショートカットを作成</translation> +<translation id="5825412242012995131">オン(推奨)</translation> <translation id="5826507051599432481">一般名(CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">印刷中...</translation> @@ -3414,7 +3420,7 @@ <translation id="6163363155248589649">標準(&N)</translation> <translation id="6163522313638838258">すべてを展開...</translation> <translation id="6164005077879661055">この監視対象ユーザーを削除すると、このユーザーに関連付けられたすべてのファイルとローカル データも完全に削除されます。この監視対象ユーザーがアクセスしたウェブサイトやこのユーザーの設定は引き続き、管理者が <ph name="MANAGEMENT_URL" /> で見ることができます。</translation> -<translation id="6165508094623778733">詳しく見る</translation> +<translation id="6165508094623778733">詳細</translation> <translation id="6166185671393271715">Chrome にパスワードをインポート</translation> <translation id="6169040057125497443">マイクを確認してください。</translation> <translation id="6169666352732958425">デスクトップをキャストできません。</translation> @@ -3711,6 +3717,11 @@ <translation id="6629841649550503054">すべて <ph name="BEGIN_LINK" />Google ドライブ<ph name="END_LINK" />にバックアップ済みです</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> が、自身を自動的に認証できるよう、証明書への恒久的なアクセス許可を求めています。</translation> <translation id="6635956300022133031">テキスト読み上げ用の音声を選択してカスタマイズします</translation> +<translation id="6637585982786704944">許可している場合、アプリやウェブサイトは正しく動作するために必要なアカウント情報にアクセスできます。 + + アカウントを追加したくない場合は、ゲストとしてログインするか、シークレット ウィンドウを開いてウェブ閲覧を行ってください。 + + すべてのアカウントの確認と管理は、[設定] -> [Google アカウント] で行っていただけます。</translation> <translation id="6639554308659482635">SQLite メモリ</translation> <translation id="6641138807883536517">ランダム生成のセキュア モジュール パスワードが使用できなくなっています。これは Powerwash の実行後に通常起こることです。</translation> <translation id="6643016212128521049">クリア</translation> @@ -3912,6 +3923,7 @@ <translation id="6957231940976260713">サービス名</translation> <translation id="696203921837389374">モバイルデータとの同期を有効にする</translation> <translation id="6964390816189577014">ヒーロー</translation> +<translation id="6964760285928603117">グループから削除</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">ポート</translation> <translation id="6965978654500191972">デバイス</translation> @@ -4021,6 +4033,7 @@ <translation id="7109543803214225826">ショートカットを削除しました</translation> <translation id="7113502843173351041">メールアドレスの読み取り</translation> <translation id="7114054701490058191">パスワードが一致しません</translation> +<translation id="7114648273807173152">Smart Lock を使用して Google アカウントにログインするには、[設定] > [接続済みのデバイス] > [スマートフォン] > [Smart Lock] に移動します。</translation> <translation id="7117228822971127758">しばらくしてからもう一度お試しください</translation> <translation id="7117247127439884114">もう一度ログインする...</translation> <translation id="711840821796638741">管理対象のブックマークを表示</translation> @@ -4176,6 +4189,7 @@ <translation id="7348093485538360975">画面キーボード</translation> <translation id="7352651011704765696">問題が発生しました</translation> <translation id="735361434055555355">Linux をインストールしています...</translation> +<translation id="7353887511974462734">既存のグループに追加</translation> <translation id="735745346212279324">VPN が切断されました</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" /> 個のアイテムをコピーしています...</translation> <translation id="7359588939039777303">広告がブロックされました。</translation> @@ -4239,7 +4253,6 @@ <translation id="7456847797759667638">場所を開く...</translation> <translation id="7461924472993315131">固定</translation> <translation id="7463006580194749499">ユーザーを追加</translation> -<translation id="7464902436585505072">「OK Google」音声モデル</translation> <translation id="7465778193084373987">Netscape 証明書取り消し URL</translation> <translation id="7469894403370665791">このネットワークに自動接続する</translation> <translation id="747114903913869239">エラー: 拡張機能をデコードできません</translation> @@ -4809,6 +4822,7 @@ <translation id="827097179112817503">ホームボタンを表示する</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 個のブックマークが削除されました}other{# 個のブックマークが削除されました}}</translation> <translation id="8272443605911821513">拡張機能を管理するには、[その他のツール] メニューの [拡張機能] をクリックします。</translation> +<translation id="8272966760965438857">Google アカウントを 1 か所で管理</translation> <translation id="8274332263553132018">ファイルをキャスト</translation> <translation id="8274924778568117936">アップデートが完了するまでは、<ph name="DEVICE_TYPE" /> の電源を切ったり蓋を閉じたりしないでください。インストールが完了すると、<ph name="DEVICE_TYPE" /> は再起動します。</translation> <translation id="8275038454117074363">インポート</translation> @@ -5195,6 +5209,7 @@ <translation id="8883847527783433352">別のアカウントに同期</translation> <translation id="8885197664446363138">Smart Lock は使用できません</translation> <translation id="88870264962436283">「<ph name="APP_NAME" />」で Touch ID を使用</translation> +<translation id="8888253246822647887">アップグレードが完了するとアプリが起動します。アップグレードには数分かかることがあります。</translation> <translation id="8888432776533519951">色:</translation> <translation id="8890516388109605451">ソース</translation> <translation id="8892168913673237979">設定完了。</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb index 8392d5c..b350ed20 100644 --- a/chrome/app/resources/generated_resources_kn.xtb +++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -127,7 +127,7 @@ <translation id="1177138678118607465">ಹುಡುಕಾಟ, ಜಾಹೀರಾತುಗಳು ಮತ್ತು ಇತರ Google ಸೇವೆಗಳನ್ನು ವೈಯಕ್ತೀಕರಿಸಲು ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸವನ್ನು Google ಬಳಸಬಹುದು. ನೀವು ಇದನ್ನು myaccount.google.com/activitycontrols/search ನಲ್ಲಿ ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು</translation> <translation id="1177863135347784049">ಕಸ್ಟಮ್</translation> <translation id="1178581264944972037">ವಿರಾಮ</translation> -<translation id="1181037720776840403">ತೆಗೆದುಹಾಕು</translation> +<translation id="1181037720776840403">ತೆಗೆದುಹಾಕಿ</translation> <translation id="1183237619868651138"><ph name="EXTERNAL_CRX_FILE" /> ಅನ್ನು ಸ್ಥಳೀಯ ಸಂಗ್ರಹದಲ್ಲಿ ಸ್ಥಾಪಿಸಲಾಗುವುದಿಲ್ಲ.</translation> <translation id="1185924365081634987">ಈ ನೆಟ್ವರ್ಕ್ ದೋಷವನ್ನು ಬಗೆಹರಿಸಲು <ph name="GUEST_SIGNIN_LINK_START" />ಅತಿಥಿಯಾಗಿ ಬ್ರೌಸ್ ಮಾಡುವುದನ್ನು<ph name="GUEST_SIGNIN_LINK_END" /> ಕೂಡಾ ನೀವು ಪ್ರಯತ್ನಿಸಬಹುದು.</translation> <translation id="1186771945450942097">ಹಾನಿಕಾರಕ ಸಾಫ್ಟ್ವೇರ್ ತೆಗೆದುಹಾಕಿ</translation> @@ -364,6 +364,7 @@ <translation id="15373452373711364">ದೊಡ್ಡ ಮೌಸ್ ಕರ್ಸರ್</translation> <translation id="1538729222189715449">Linux ಫೈಲ್ಗಳನ್ನು ತೆರೆಯಲಾಗುತ್ತಿದೆ...</translation> <translation id="1540605929960647700">ಡೆಮೊ ಮೋಡ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation> +<translation id="1541396123399225659">ಹೊಸ ಗುಂಪಿಗೆ ಸೇರಿಸಿ</translation> <translation id="1542514202066550870">ಈ ಟ್ಯಾಬ್ ಹೆಡ್ಸೆಟ್ಗೆ VR ವಿಷಯವನ್ನು ಪ್ರಸ್ತುತಪಡಿಸುತ್ತಿದೆ.</translation> <translation id="1543284117603151572">Edge ನಿಂದ ಆಮದು ಮಾಡಿಕೊಳ್ಳಲಾಗಿದೆ</translation> <translation id="1545177026077493356">ಸ್ವಯಂಚಾಲಿತ ಕಿಯೋಸ್ಕ್ ಮೋಡ್</translation> @@ -402,6 +403,7 @@ <translation id="1593594475886691512">ಸ್ವರೂಪಣೆ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation> <translation id="159359590073980872">ಚಿತ್ರದ ಸಂಗ್ರಹ</translation> <translation id="1593926297800505364">ಪಾವತಿ ವಿಧಾನವನ್ನು ಉಳಿಸಿ</translation> +<translation id="1595492813686795610">Linux ಅಪ್ಗ್ರೇಡ್ ಆಗುತ್ತಿದೆ</translation> <translation id="1598233202702788831">ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಅಪ್ಡೇಟ್ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ.</translation> <translation id="1600857548979126453">ಡೀಬಗರ್ ಅನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳುವ ಪುಟವನ್ನು ಪ್ರವೇಶಿಸಿ</translation> <translation id="1601560923496285236">ಅನ್ವಯಿಸು</translation> @@ -513,7 +515,6 @@ <translation id="175772926354468439">ಥೀಮ್ ಸಕ್ರಿಯಗೊಳಿಸು</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Chrome ವೆಬ್ ಸ್ಟೋರ್ನಲ್ಲಿ ವೀಕ್ಷಿಸಿ</translation> -<translation id="1761588866118490543">ಧ್ವನಿ ಮಾದರಿ</translation> <translation id="176193854664720708">ಪವರ್ ಬಟನ್ನಲ್ಲಿ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಇದೆ. ಯಾವುದೇ ಬೆರಳಿನಿಂದ ಅದನ್ನು ಲಘುವಾಗಿ ಸ್ಪರ್ಶಿಸಿ.</translation> <translation id="1763046204212875858">ಅಪ್ಲಿಕೇಶನ್ ಶಾರ್ಟ್ಕಟ್ಗಳನ್ನು ರಚಿಸಿ</translation> <translation id="1763108912552529023">ಅನ್ವೇಷಣೆ ಮುಂದುವರಿಸು</translation> @@ -935,6 +936,7 @@ <translation id="2379281330731083556">ಸಿಸ್ಟಂ ಸಂವಾದವನ್ನು ಬಳಸಿ ಮುದ್ರಿಸಿ... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">ಕಳುಹಿಸುವ ಮೊದಲು ಕೇಳಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation> <translation id="2384436799579181135">ದೋಷ ಸಂಭವಿಸಿದೆ. ನಿಮ್ಮ ಪ್ರಿಂಟರ್ ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation> +<translation id="2386926718981642523">ಯಾವಾಗ ಬೇಕಾದರೂ "Ok Google" ಎಂದು ಹೇಳಿ ನಿಮ್ಮ ಅಸಿಸ್ಟೆಂಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ</translation> <translation id="2387458720915042159">ಪ್ರಾಕ್ಸಿ ಪ್ರಕಾರ ಸಂಪರ್ಕ</translation> <translation id="2391419135980381625">ರೂಢಿಯಲ್ಲಿರುವ ಫಾಂಟ್</translation> <translation id="2391762656119864333">ಹಿಂತೆಗೆದುಕೊ</translation> @@ -1039,6 +1041,7 @@ <translation id="2553340429761841190"><ph name="NETWORK_ID" /> ಅನ್ನು ಸಂಪರ್ಕಿಸಲು <ph name="PRODUCT_NAME" /> ಗೆ ಸಾಧ್ಯವಿಲ್ಲ. ದಯವಿಟ್ಟು ಇನ್ನೊಂದು ನೆಟ್ವರ್ಕ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ ಅಥವಾ ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="2553440850688409052">ಈ ಪ್ಲಗ್ ಇನ್ ಅನ್ನು ಮರೆಮಾಡು</translation> <translation id="2554553592469060349">ಆಯ್ಕೆ ಮಾಡಿರುವ ಫೈಲ್ ತುಂಬಾ ದೊಡ್ಡದಾಗಿದೆ (ಗರಿಷ್ಠ ಗಾತ್ರ: 3mb).</translation> +<translation id="255747371423522804">ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಗುಂಪಿಗೆ ಸೇರಿಸಿ</translation> <translation id="2558896001721082624">ಸಿಸ್ಟಂ ಮೆನುವಿನಲ್ಲಿ ಪ್ರವೇಶದ ಆಯ್ಕೆಗಳನ್ನು ಯಾವಾಗಲೂ ತೋರಿಸಿ</translation> <translation id="2562685439590298522">ಡಾಕ್ಸ್</translation> <translation id="2562743677925229011"><ph name="SHORT_PRODUCT_NAME" /> ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿಲ್ಲ</translation> @@ -1311,6 +1314,7 @@ <translation id="2972581237482394796">&ಮತ್ತೆಮಾಡು</translation> <translation id="2972642118232180842">ಮುಖ್ಯ ವಿಷಯವನ್ನು ಮಾತ್ರ ರನ್ ಮಾಡಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation> <translation id="2973324205039581528">ಸೈಟ್ ಅನ್ನು ಮ್ಯೂಟ್ ಮಾಡಿ</translation> +<translation id="2977480621796371840">ಗುಂಪಿನಿಂದ ತೆಗೆದುಹಾಕಿ</translation> <translation id="2979639724566107830">ಹೊಸ ವಿಂಡೋದಲ್ಲಿ ತೆರೆಯಿರಿ</translation> <translation id="2981113813906970160">ದೊಡ್ಡ ಮೌಸ್ ಕರ್ಸರ್ ತೋರಿಸು</translation> <translation id="2982970937345031">ಅನಾಮಧೇಯವಾಗಿ ವರದಿ ಮಾಡಿ</translation> @@ -1561,6 +1565,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">ವಿಭಾಜಕ</translation> <translation id="3389312115541230716">ಕಾರ್ಯಪಟ್ಟಿಯಲ್ಲಿ <ph name="SMALL_PRODUCT_LOGO" /> ಐಕಾನ್ ಅನ್ನು ರೈಟ್ ಕ್ಲಿಕ್ ಮಾಡಿ</translation> +<translation id="3393352139658145068">ಯಾರಾದರೂ "Ok Google" ಎಂದು ಹೇಳಿದಾಗ ಅಸಿಸ್ಟೆಂಟ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ. ಬ್ಯಾಟರಿ ಬಾಳಿಕೆಯನ್ನು ಉಳಿಸುವುದಕ್ಕಾಗಿ, ನಿಮ್ಮ ಸಾಧನವು ಪವರ್ ಮೂಲಕ್ಕೆ ಸಂಪರ್ಕಿತಗೊಂಡಾಗ ಮಾತ್ರ "Ok Google" ಆನ್ ಆಗಿರುತ್ತದೆ.</translation> <translation id="3396800784455899911">ಈ Google ಸೇವೆಗಳಿಗಾಗಿ "ಸ್ವೀಕರಿಸಿ ಮತ್ತು ಮುಂದುವರೆಸು" ಬಟನ್ ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡುವುದರ ಮೂಲಕ, ನೀವು ಮೇಲೆ ವಿವರಿಸಿರುವ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವಿಕೆಗೆ ಒಪ್ಪುತ್ತೀರಿ.</translation> <translation id="3399432415385675819">ಅಧಿಸೂಚನೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3165,6 +3170,7 @@ <translation id="5816434091619127343">ವಿನಂತಿಸಿದ ಪ್ರಿಂಟರ್ ಬದಲಾವಣೆಗಳು ಪ್ರಿಂಟರ್ ಅನ್ನು ನಿಷ್ಪ್ರಯೋಜಕಗೊಳಿಸಬಹುದು.</translation> <translation id="5817918615728894473">ಜೋಡಿಸು</translation> <translation id="5821565227679781414">ಶಾರ್ಟ್ಕಟ್ ರಚಿಸಿ</translation> +<translation id="5825412242012995131">ಆನ್ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation> <translation id="5826507051599432481">ಸಾಮಾನ್ಯ ಹೆಸರು (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">ಮುದ್ರಿಸಲಾಗುತ್ತಿದೆ...</translation> @@ -3709,6 +3715,11 @@ <translation id="6629841649550503054"><ph name="BEGIN_LINK" />Google ಡ್ರೈವ್<ph name="END_LINK" /> ಗೆ ಎಲ್ಲವನ್ನೂ ಬ್ಯಾಕಪ್ ಮಾಡಲಾಗಿದೆ!</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> ನಿಮ್ಮ ಪರವಾಗಿ ಸ್ವತಃ ಪ್ರಮಾಣೀಕರಿಸಲು ಪ್ರಮಾಣಪತ್ರಕ್ಕೆ ಶಾಶ್ವತ ಪ್ರವೇಶ ಬಯಸುತ್ತದೆ.</translation> <translation id="6635956300022133031">"ಪಠ್ಯದಿಂದ ಧ್ವನಿ" ಧ್ವನಿಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಿ ಮತ್ತು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ</translation> +<translation id="6637585982786704944">ನಿಮ್ಮ ಅನುಮತಿ ಹೊಂದಿರುವ ಆ್ಯಪ್ಗಳು ಮತ್ತು ವೆಬ್ಸೈಟ್ಗಳು, ಸಮರ್ಪಕವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಕ್ಕಾಗಿ ತಮಗೆ ಅವಶ್ಯವಿರುವ ಖಾತೆ ಮಾಹಿತಿಯನ್ನು ಪ್ರವೇಶಿಸಬಹುದು. + + ನೀವು ಖಾತೆಯೊಂದನ್ನು ಸೇರಿಸಲು ಬಯಸದಿದ್ದಲ್ಲಿ, ಓರ್ವ ಅತಿಥಿಯಾಗಿ ಸೈನ್ ಇನ್ ಮಾಡಿ ಅಥವಾ ವೆಬ್ ಬ್ರೌಸಿಂಗ್ ಮಾಡುವುದಕ್ಕಾಗಿ ಅದೃಶ್ಯ ವಿಂಡೋವನ್ನು ತೆರೆಯಿರಿ. + + ನೀವು ಸೆಟ್ಟಿಂಗ್ಗಳು -> Google ಖಾತೆಗಳು ಎಂಬಲ್ಲಿ ಹೋಗಿ, ಎಲ್ಲಾ ಖಾತೆಗಳನ್ನು ವೀಕ್ಷಿಸಬಹುದು ಮತ್ತು ನಿರ್ವಹಿಸಲೂ ಬಹುದು.</translation> <translation id="6639554308659482635">SQLite ಮೆಮೊರಿ</translation> <translation id="6641138807883536517">ರ್ಯಾಂಡಮ್ ಆಗಿ ರಚಿಸಲಾದ, ಸುಭದ್ರ ಮಾಡ್ಯೂಲ್ ಪಾಸ್ವರ್ಡ್ ಲಭ್ಯವಿಲ್ಲ. Powerwash ಬಳಿಕ ಹೀಗಾಗುವುದು ಸಾಮಾನ್ಯವಾಗಿದೆ.</translation> <translation id="6643016212128521049">ತೆರವುಗೊಳಿಸಿ</translation> @@ -3909,6 +3920,7 @@ <translation id="6957231940976260713">ಸೇವೆಯ ಹೆಸರು</translation> <translation id="696203921837389374">ಮೊಬೈಲ್ ಡೇಟಾ ಮೂಲಕ ಸಿಂಕ್ ಮಾಡುವುದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation> <translation id="6964390816189577014">ಹೀರೋ</translation> +<translation id="6964760285928603117">ಗುಂಪಿನಿಂದ ತೆಗೆದುಹಾಕಿ</translation> <translation id="6965382102122355670">ಸರಿ</translation> <translation id="6965648386495488594">ಪೋರ್ಟ್</translation> <translation id="6965978654500191972">ಸಾಧನ</translation> @@ -4019,6 +4031,7 @@ <translation id="7109543803214225826">ಶಾರ್ಟ್ಕಟ್ ಅನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ</translation> <translation id="7113502843173351041">ನಿಮ್ಮ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ತಿಳಿದುಕೊಳ್ಳಿ</translation> <translation id="7114054701490058191">ಪಾಸ್ವರ್ಡ್ಗಳು ಹೊಂದಾಣಿಕೆಯಾಗುವುದಿಲ್ಲ</translation> +<translation id="7114648273807173152">ನಿಮ್ಮ Google ಖಾತೆಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು Smart Lock ಬಳಸುವುದಕ್ಕೆ, ಸೆಟ್ಟಿಂಗ್ಗಳು> ಸಂಪರ್ಕಗೊಂಡಿರುವ ಸಾಧನಗಳು > ನಿಮ್ಮ ಫೋನ್ > Smart Lock ಎಂಬಲ್ಲಿ ಹೋಗಿ.</translation> <translation id="7117228822971127758">ನಂತರ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ</translation> <translation id="7117247127439884114">ಪುನಃ ಸೈನ್ ಇನ್ ಮಾಡಿ...</translation> <translation id="711840821796638741">ನಿರ್ವಹಿಸಲಾದ ಬುಕ್ಮಾರ್ಕ್ಗಳನ್ನು ತೋರಿಸು</translation> @@ -4059,7 +4072,7 @@ <translation id="7171559745792467651">ನಿಮ್ಮ ಇತರ ಸಾಧನಗಳಿಂದ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ</translation> <translation id="7175037578838465313"><ph name="NAME" /> ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ</translation> <translation id="7175353351958621980">ಇದರಿಂದ ಲೋಡ್ ಮಾಡಲಾಗಿದೆ:</translation> -<translation id="7180611975245234373">ರಿಫ್ರೆಶ್ ಮಾಡಿ</translation> +<translation id="7180611975245234373">ರಿಫ್ರೆಶ್</translation> <translation id="7180865173735832675">ಕಸ್ಟಮೈಸ್</translation> <translation id="7182359331070524176">Google ಫೋಟೋಗಳ ಆಲ್ಬಮ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation> <translation id="7186088072322679094">ಪರಿಕರಪಟ್ಟಿಯಲ್ಲಿ ಇರಿಸು</translation> @@ -4174,6 +4187,7 @@ <translation id="7348093485538360975">ಆನ್ ಸ್ಕ್ರೀನ್ ಕೀಬೋರ್ಡ್</translation> <translation id="7352651011704765696">ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ</translation> <translation id="735361434055555355">Linux ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation> +<translation id="7353887511974462734">ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಗುಂಪಿಗೆ ಸೇರಿಸಿ</translation> <translation id="735745346212279324">VPN ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" /> ಐಟಂಗಳನ್ನು ನಕಲಿಸಲಾಗುತ್ತಿದೆ...</translation> <translation id="7359588939039777303">ಜಾಹೀರಾತುಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.</translation> @@ -4236,7 +4250,6 @@ <translation id="7456847797759667638">ಸ್ಥಳವನ್ನು ತೆರೆ...</translation> <translation id="7461924472993315131">ಪಿನ್</translation> <translation id="7463006580194749499">ವ್ಯಕ್ತಿಯನ್ನು ಸೇರಿಸು</translation> -<translation id="7464902436585505072">"ಓಕೆ Google" ಧ್ವನಿ ಮಾದರಿ</translation> <translation id="7465778193084373987">Netscape ಪ್ರಮಾಣಪತ್ರ ಹಿಂತೆಗೆದುಕೊಳ್ಳುವಿಕೆ URL</translation> <translation id="7469894403370665791">ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಈ ನೆಟ್ವರ್ಕ್ಗೆ ಸಂಪರ್ಕಿಸಿ</translation> <translation id="747114903913869239">ದೋಷ: ವಿಸ್ತರಣೆಯನ್ನು ಡಿಕೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</translation> @@ -4797,6 +4810,7 @@ <translation id="827097179112817503">ಮುಖಪುಟ ಬಟನ್ ತೋರಿಸು</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 ಬುಕ್ಮಾರ್ಕ್ ಅಳಿಸಲಾಗಿದೆ}one{# ಬುಕ್ಮಾರ್ಕ್ಗಳನ್ನು ಅಳಿಸಲಾಗಿದೆ}other{# ಬುಕ್ಮಾರ್ಕ್ಗಳನ್ನು ಅಳಿಸಲಾಗಿದೆ}}</translation> <translation id="8272443605911821513">"ಹೆಚ್ಚಿನ ಪರಿಕರಗಳು" ಮೆನುನಲ್ಲಿರುವ ‘ವಿಸ್ತರಣೆಗಳು’ಕ್ಲಿಕ್ ಮಾಡುವ ಮೂಲಕ ನಿಮ್ಮ ವಿಸ್ತರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಿ.</translation> +<translation id="8272966760965438857">ನಿಮ್ಮ Google ಖಾತೆಗಳನ್ನು ಒಂದೇ ಸ್ಥಳದಲ್ಲಿ ನಿರ್ವಹಿಸಿ.</translation> <translation id="8274332263553132018">ಫೈಲ್ ಅನ್ನು ಬಿತ್ತರಿಸಿ</translation> <translation id="8274924778568117936">ಅಪ್ಡೇಟ್ ಮುಕ್ತಾಯಗೊಳ್ಳುವವರೆಗೆ <ph name="DEVICE_TYPE" /> ಅನ್ನು ಆಫ್ ಮಾಡಬೇಡಿ. ಇನ್ಸ್ಟಾಲೇಶನ್ ಪ್ರಕ್ರಿಯೆ ಪೂರ್ಣಗೊಂಡ ನಂತರ ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಮರುಪ್ರಾರಂಭವಾಗುತ್ತದೆ.</translation> <translation id="8275038454117074363">ಆಮದು</translation> @@ -5186,6 +5200,7 @@ <translation id="8883847527783433352">ಇನ್ನೊಂದು ಖಾತೆಗೆ ಸಿಂಕ್ ಮಾಡಿ</translation> <translation id="8885197664446363138">Smart Lock ಲಭ್ಯವಿಲ್ಲ</translation> <translation id="88870264962436283"><ph name="APP_NAME" /> ನೊಂದಿಗೆ ಸ್ಪರ್ಶ ಐಡಿ ಬಳಸಿ</translation> +<translation id="8888253246822647887">ಅಪ್ಗ್ರೇಡ್ ಮಾಡುವುದು ಪೂರ್ಣಗೊಂಡಾಗ ನಿಮ್ಮ ಆ್ಯಪ್ ತೆರೆದುಕೊಳ್ಳುತ್ತದೆ. ಅಪ್ಗ್ರೇಡ್ಗಳನ್ನು ಮಾಡುವುದಕ್ಕೆ ಕೆಲವು ನಿಮಿಷಗಳು ಬೇಕಾಗಬಹುದು.</translation> <translation id="8888432776533519951">ಬಣ್ಣ:</translation> <translation id="8890516388109605451">ಮೂಲಗಳು</translation> <translation id="8892168913673237979">ಎಲ್ಲ ಹೊಂದಿಸಿ!</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb index 518a1c4a..4780c41 100644 --- a/chrome/app/resources/generated_resources_ko.xtb +++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">큰 마우스 커서</translation> <translation id="1538729222189715449">Linux 파일을 여는 중...</translation> <translation id="1540605929960647700">데모 모드 사용</translation> +<translation id="1541396123399225659">새 그룹에 추가</translation> <translation id="1542514202066550870">이 탭에서 헤드셋에 VR 콘텐츠를 전송하는 중입니다.</translation> <translation id="1543284117603151572">Edge에서 가져옴</translation> <translation id="1545177026077493356">자동 키오스크 모드</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">포맷 중...</translation> <translation id="159359590073980872">이미지 캐시</translation> <translation id="1593926297800505364">결제 수단 저장</translation> +<translation id="1595492813686795610">Linux 업그레이드 중</translation> <translation id="1598233202702788831">관리자가 업데이트를 사용 중지했습니다.</translation> <translation id="1600857548979126453">페이지 디버거 백엔드에 액세스</translation> <translation id="1601560923496285236">적용</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">테마 사용</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Chrome 웹 스토어에서 보기</translation> -<translation id="1761588866118490543">음성 모델</translation> <translation id="176193854664720708">지문 센서는 전원 버튼에 있습니다. 손가락으로 가볍게 터치하세요.</translation> <translation id="1763046204212875858">애플리케이션 바로가기 만들기</translation> <translation id="1763108912552529023">계속 살펴보기</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">시스템 대화상자를 사용하여 인쇄... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">보내기 전에 확인(권장)</translation> <translation id="2384436799579181135">오류가 발생했습니다. 프린터를 확인한 후 다시 시도해 주세요.</translation> +<translation id="2386926718981642523">"Ok Google"이라고 말할 때마다 어시스턴트에 액세스합니다.</translation> <translation id="2387458720915042159">프록시 연결 유형</translation> <translation id="2391419135980381625">표준 글꼴</translation> <translation id="2391762656119864333">취소</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" />에서 <ph name="NETWORK_ID" />에 연결할 수 없습니다. 다른 네트워크를 선택하거나 다시 시도하세요.</translation> <translation id="2553440850688409052">이 플러그인 숨기기</translation> <translation id="2554553592469060349">선택한 파일이 너무 큽니다(최대 크기: 3MB).</translation> +<translation id="255747371423522804">기존 그룹에 추가</translation> <translation id="2558896001721082624">시스템 메뉴에 접근성 옵션 항상 표시</translation> <translation id="2562685439590298522">문서도구</translation> <translation id="2562743677925229011"><ph name="SHORT_PRODUCT_NAME" />에 로그인되어 있지 않습니다.</translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">다시 실행(&R)</translation> <translation id="2972642118232180842">중요한 콘텐츠만 실행(권장)</translation> <translation id="2973324205039581528">사이트 음소거</translation> +<translation id="2977480621796371840">그룹에서 삭제</translation> <translation id="2979639724566107830">새 창에서 열기</translation> <translation id="2981113813906970160">큰 마우스 커서 표시</translation> <translation id="2982970937345031">익명으로 신고하기</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">구분자</translation> <translation id="3389312115541230716">작업 표시줄의 <ph name="SMALL_PRODUCT_LOGO" /> 아이콘을 마우스 오른쪽 버튼으로 클릭</translation> +<translation id="3393352139658145068">누군가 “Ok Google”이라고 말하면 어시스턴트를 활성화합니다. 배터리를 절약하기 위하여 기기가 전원에 연결되어 있는 경우에만 “Ok Google” 기능이 켜집니다.</translation> <translation id="3396800784455899911">'동의 및 계속' 버튼을 클릭하면 이러한 Google 서비스와 관련하여 위에 설명된 처리 방식에 동의하는 것으로 간주됩니다.</translation> <translation id="3399432415385675819">알림이 사용 중지됩니다.</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3165,6 +3170,7 @@ <translation id="5816434091619127343">프린터 변경을 요청하면 프린터를 사용할 수 없게 됩니다.</translation> <translation id="5817918615728894473">페어링</translation> <translation id="5821565227679781414">바로가기 만들기</translation> +<translation id="5825412242012995131">사용(권장)</translation> <translation id="5826507051599432481">일반 이름(CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">인쇄 중...</translation> @@ -3709,6 +3715,11 @@ <translation id="6629841649550503054">모두 <ph name="BEGIN_LINK" />Google 드라이브<ph name="END_LINK" />에 백업했습니다.</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" />에서 사용자를 대신하여 인증하기 위해 인증서에 대한 영구적인 액세스 권한을 요청합니다.</translation> <translation id="6635956300022133031">텍스트 음성 변환 기능의 음성을 선택하고 맞춤설정합니다.</translation> +<translation id="6637585982786704944">사용자가 허가한 앱 및 웹사이트는 정상적인 작동을 위해 필요한 계정 정보에 액세스할 수 있습니다. + + 계정을 추가하고 싶지 않다면 게스트로 로그인하거나 시크릿 창을 열어 웹을 탐색하세요. + + 설정 -> Google 계정으로 이동하여 모든 계정을 보고 관리할 수 있습니다.</translation> <translation id="6639554308659482635">SQLite 메모리</translation> <translation id="6641138807883536517">임의로 생성된 보안 모듈 비밀번호는 사용할 수 없습니다. 이는 파워워시 후에는 정상적으로 나타나는 현상입니다.</translation> <translation id="6643016212128521049">삭제</translation> @@ -3910,6 +3921,7 @@ <translation id="6957231940976260713">서비스 이름</translation> <translation id="696203921837389374">모바일 데이터를 이용한 동기화 사용 설정</translation> <translation id="6964390816189577014">영웅</translation> +<translation id="6964760285928603117">그룹에서 삭제</translation> <translation id="6965382102122355670">확인</translation> <translation id="6965648386495488594">포트</translation> <translation id="6965978654500191972">기기</translation> @@ -4019,6 +4031,7 @@ <translation id="7109543803214225826">바로가기 삭제됨</translation> <translation id="7113502843173351041">이메일 주소 조회</translation> <translation id="7114054701490058191">비밀번호가 일치하지 않습니다.</translation> +<translation id="7114648273807173152">Smart Lock을 사용해 Google 계정에 로그인하려면 설정 > 연결된 기기 > 휴대전화 > Smart Lock으로 이동하세요.</translation> <translation id="7117228822971127758">나중에 다시 시도해 주세요</translation> <translation id="7117247127439884114">다시 로그인...</translation> <translation id="711840821796638741">관리 북마크 표시</translation> @@ -4174,6 +4187,7 @@ <translation id="7348093485538360975">터치 키보드</translation> <translation id="7352651011704765696">문제가 발생한 경우</translation> <translation id="735361434055555355">Linux 설치 중...</translation> +<translation id="7353887511974462734">기존 그룹에 추가</translation> <translation id="735745346212279324">VPN 연결 끊김</translation> <translation id="7359359531237882347">항목 <ph name="NUMBER_OF_ITEMS" />개 복사 중...</translation> <translation id="7359588939039777303">광고가 차단되었습니다.</translation> @@ -4236,7 +4250,6 @@ <translation id="7456847797759667638">위치 열기...</translation> <translation id="7461924472993315131">고정</translation> <translation id="7463006580194749499">사용자 추가</translation> -<translation id="7464902436585505072">'Ok Google' 음성 모델</translation> <translation id="7465778193084373987">Netscape Certificate Revocation URL</translation> <translation id="7469894403370665791">네트워크에 자동 연결</translation> <translation id="747114903913869239">오류: 확장 프로그램을 디코딩할 수 없음</translation> @@ -4806,6 +4819,7 @@ <translation id="827097179112817503">홈 버튼 표시</translation> <translation id="8271246892936492311">{COUNT,plural, =1{북마크 1개가 삭제됨}other{북마크 #개가 삭제됨}}</translation> <translation id="8272443605911821513">'추가 도구' 메뉴에서 확장 프로그램을 클릭하여 확장 프로그램을 관리할 수 있습니다.</translation> +<translation id="8272966760965438857">한곳에서 Google 계정을 관리하세요</translation> <translation id="8274332263553132018">파일 전송</translation> <translation id="8274924778568117936">업데이트가 완료될 때까지 <ph name="DEVICE_TYPE" />을(를) 끄거나 닫지 마세요. 설치가 완료되면 <ph name="DEVICE_TYPE" />이(가) 다시 시작됩니다.</translation> <translation id="8275038454117074363">가져오기</translation> @@ -5005,7 +5019,7 @@ <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation> <translation id="8620617069779373398">로밍 상태</translation> <translation id="8620765578342452535">네트워크 연결 구성</translation> -<translation id="8621866727807194849">컴퓨터에 유해한 소프트웨어가 있습니다. Chrome이 유해한 소프트웨어를 삭제하고, 설정을 복원하고, 확장 프로그램을 사용 중지하는 중입니다. 이 작업이 끝나면 브라우저가 다시 정상적으로 작동할 것입니다.</translation> +<translation id="8621866727807194849">컴퓨터에 유해한 소프트웨어가 있습니다. Chrome이 유해한 소프트웨어를 삭제하고, 설정을 복원하고, 확장 프로그램을 사용 중지하는 중입니다. 이 작업이 끝나면 브라우저가 다시 정상적으로 작동합니다.</translation> <translation id="862542460444371744">확장 프로그램(&E)</translation> <translation id="8627151598708688654">소스 선택</translation> <translation id="862727964348362408">일시중지됨</translation> @@ -5192,6 +5206,7 @@ <translation id="8883847527783433352">다른 계정에 동기화</translation> <translation id="8885197664446363138">Smart Lock을 사용할 수 없음</translation> <translation id="88870264962436283"><ph name="APP_NAME" /> 앱에서 Touch ID 사용</translation> +<translation id="8888253246822647887">업그레이드가 종료되면 앱이 열립니다. 업그레이드하는 데 몇 분 정도 걸릴 수 있습니다.</translation> <translation id="8888432776533519951">색상:</translation> <translation id="8890516388109605451">소스</translation> <translation id="8892168913673237979">설정 완료</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb index 481c6ab..c297888b 100644 --- a/chrome/app/resources/generated_resources_lt.xtb +++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -518,7 +518,6 @@ <translation id="175772926354468439">Įgalinti temą</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Žr. „Chrome“ internetinėje parduotuvėje</translation> -<translation id="1761588866118490543">Balso modelis</translation> <translation id="176193854664720708">Piršto antspaudo jutiklis yra maitinimo mygtuko viduje. Lengvai jį palieskite bet kuriuo pirštu.</translation> <translation id="1763046204212875858">Kurti programos sparčiuosius mygtukus</translation> <translation id="1763108912552529023">Toliau tyrinėti</translation> @@ -3168,7 +3167,6 @@ <translation id="5804241973901381774">Leidimai</translation> <translation id="5805697420284793859">Langų tvarkytuvė</translation> <translation id="580571955903695899">Pertvarkyti pagal pavadinimą</translation> -<translation id="5806795763657948556">Daugiau paskirties vietų</translation> <translation id="5811750797187914944">Viskas nustatyta</translation> <translation id="5814126672212206791">Ryšio tipas</translation> <translation id="5815645614496570556">X.400 adresas</translation> @@ -4255,7 +4253,6 @@ <translation id="7456847797759667638">Atidaryti vietą...</translation> <translation id="7461924472993315131">Prisegti</translation> <translation id="7463006580194749499">Pridėti asmenį</translation> -<translation id="7464902436585505072">„Ok Google“ balso modelis</translation> <translation id="7465778193084373987">„Netscape“ sertifikato panaikinimo URL</translation> <translation id="7469894403370665791">Automatiškai prisijungti prie šio tinklo</translation> <translation id="747114903913869239">Klaida: neįmanoma iššifruoti plėtinio</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb index 4d5846a9..72ade1b 100644 --- a/chrome/app/resources/generated_resources_lv.xtb +++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Liels peles kursors</translation> <translation id="1538729222189715449">Notiek Linux failu atvēršana…</translation> <translation id="1540605929960647700">Demonstrācijas režīma iespējošana</translation> +<translation id="1541396123399225659">Pievienot jaunai grupai</translation> <translation id="1542514202066550870">Šajā cilnē skatītājam tiek nodrošināts VR saturs.</translation> <translation id="1543284117603151572">Importētas no pārlūkprogrammas Edge</translation> <translation id="1545177026077493356">Automātiskais kioska režīms</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Notiek formatēšana...</translation> <translation id="159359590073980872">Attēlu kešatmiņa</translation> <translation id="1593926297800505364">Saglabāt maksājuma veidu</translation> +<translation id="1595492813686795610">Notiek Linux jaunināšana</translation> <translation id="1598233202702788831">Administrators ir atspējojis atjauninājumus.</translation> <translation id="1600857548979126453">Piekļūtu lapas atkļūdotāja aizmugursistēmai</translation> <translation id="1601560923496285236">Lietot</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Iespējot motīvu</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Skatīt Chrome interneta veikalā</translation> -<translation id="1761588866118490543">Balss modelis</translation> <translation id="176193854664720708">Pirksta nospieduma sensors atrodas barošanas pogā. Viegli pieskarieties tai ar jebkuru pirkstu.</translation> <translation id="1763046204212875858">Izveidot lietojumprogrammu saīsnes</translation> <translation id="1763108912552529023">Turpināt izpēti</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">Drukāt, izmantojot sistēmas dialoglodziņu... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Jautāt pirms sūtīšanas (ieteicams)</translation> <translation id="2384436799579181135">Radās kļūda. Lūdzu, pārbaudiet printeri un mēģiniet vēlreiz.</translation> +<translation id="2386926718981642523">Piekļūt Asistentam katru reizi, kad sakāt: “Ok Google”</translation> <translation id="2387458720915042159">Starpniekservera savienojuma veids</translation> <translation id="2391419135980381625">Standarta fonts</translation> <translation id="2391762656119864333">Atsaukt</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> nevarēja pievienoties tīklam <ph name="NETWORK_ID" />. Lūdzu, izvēlieties citu tīklu vai mēģiniet vēlreiz.</translation> <translation id="2553440850688409052">Slēpt šo spraudni</translation> <translation id="2554553592469060349">Atlasītais fails ir pārāk liels (maksimālais lielums: 3 MB).</translation> +<translation id="255747371423522804">Pievienošana esošai grupai</translation> <translation id="2558896001721082624">Vienmēr rādīt piekļūstamības opcijas sistēmas izvēlnē</translation> <translation id="2562685439590298522">Dokumenti</translation> <translation id="2562743677925229011">Nav pierakstījies pakalpojumā <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">&Pāratsaukt</translation> <translation id="2972642118232180842">Palaist tikai svarīgu saturu (ieteicams)</translation> <translation id="2973324205039581528">Nerādīt vietni</translation> +<translation id="2977480621796371840">Noņemt no grupas</translation> <translation id="2979639724566107830">Atvērt jaunā logā</translation> <translation id="2981113813906970160">Rādīt lielu peles kursoru</translation> <translation id="2982970937345031">Ziņot anonīmi</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Atdalītājs</translation> <translation id="3389312115541230716">Uzdevumjoslā ar peles labo pogu noklikšķiniet uz ikonas <ph name="SMALL_PRODUCT_LOGO" />.</translation> +<translation id="3393352139658145068">Aktivizēt Asistentu, kad kāds saka: “Ok Google”. Lai paildzinātu akumulatora darbības laiku, komanda “Ok Google” ir iespējota tikai tad, kad ierīce ir pievienota strāvas avotam.</translation> <translation id="3396800784455899911">Noklikšķinot uz pogas “Piekrist un turpināt”, jūs piekrītat iepriekš aprakstītajai apstrādei šajos Google pakalpojumos.</translation> <translation id="3399432415385675819">Paziņojumi tiks atspējoti</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3167,6 +3172,7 @@ <translation id="5816434091619127343">Ja tiktu veiktas pieprasītās printera izmaiņas, printeri nevarētu lietot.</translation> <translation id="5817918615728894473">Savienot pārī</translation> <translation id="5821565227679781414">Izveidot saīsni</translation> +<translation id="5825412242012995131">Ieslēgts (ieteicams)</translation> <translation id="5826507051599432481">Kopējais nosaukums (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Notiek drukāšana...</translation> @@ -3711,6 +3717,11 @@ <translation id="6629841649550503054">Visi faili ir dublēti <ph name="BEGIN_LINK" />Google diskā<ph name="END_LINK" />.</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> vēlas pastāvīgu piekļuvi sertifikātam, lai varētu veikt autentificēšanu jūsu vārdā.</translation> <translation id="6635956300022133031">Atlasiet un pielāgojiet balsis teksta pārvēršanai runā</translation> +<translation id="6637585982786704944">Lietotnes un vietnes, kas ir saņēmušas jūsu atļauju, var piekļūt konta informācijai, kas nepieciešama to pareizai darbībai. + + Ja nevēlaties pievienot kontu, pierakstieties kā viesis vai atveriet inkognito logu tīmekļa pārlūkošanai. + + Lai skatītu un pārvaldītu visus kontus, varat pāriet uz sadaļu Iestatījumi > Google konti.</translation> <translation id="6639554308659482635">SQLite atmiņa</translation> <translation id="6641138807883536517">Pēc nejaušības principa ģenerētā drošības moduļa parole nav pieejama. Tā nereti notiek pēc funkcijas Powerwash izmantošanas.</translation> <translation id="6643016212128521049">Notīrīt</translation> @@ -3912,6 +3923,7 @@ <translation id="6957231940976260713">Pakalpojuma nosaukums</translation> <translation id="696203921837389374">Iespējot mobilo datu sinhronizāciju</translation> <translation id="6964390816189577014">Varonis</translation> +<translation id="6964760285928603117">Noņemt no grupas</translation> <translation id="6965382102122355670">Labi</translation> <translation id="6965648386495488594">Ports</translation> <translation id="6965978654500191972">Ierīce</translation> @@ -4021,6 +4033,7 @@ <translation id="7109543803214225826">Saīsne noņemta</translation> <translation id="7113502843173351041">Piekļūt jūsu e-pasta adresei</translation> <translation id="7114054701490058191">Paroles nav vienādas</translation> +<translation id="7114648273807173152">Lai pierakstītos Google kontā, izmantojot Smart Lock, atveriet sadaļu Iestatījumi > Pievienotās ierīces > Jūsu tālrunis > Smart Lock.</translation> <translation id="7117228822971127758">Lūdzu, vēlāk mēģiniet vēlreiz.</translation> <translation id="7117247127439884114">Pierakstīties vēlreiz...</translation> <translation id="711840821796638741">Pārvaldīto grāmatzīmju rādīšana</translation> @@ -4176,6 +4189,7 @@ <translation id="7348093485538360975">Ekrāntastatūra</translation> <translation id="7352651011704765696">Radās problēma</translation> <translation id="735361434055555355">Notiek Linux instalēšana...</translation> +<translation id="7353887511974462734">Pievienošana esošai grupai</translation> <translation id="735745346212279324">VPN ir atvienots</translation> <translation id="7359359531237882347">Notiek <ph name="NUMBER_OF_ITEMS" /> vienumu kopēšana...</translation> <translation id="7359588939039777303">Reklāmu rādīšana ir bloķēta.</translation> @@ -4238,7 +4252,6 @@ <translation id="7456847797759667638">Atvērt atrašanās vietu...</translation> <translation id="7461924472993315131">Piespraust</translation> <translation id="7463006580194749499">Pievienot personu</translation> -<translation id="7464902436585505072">“Ok Google” balss modelis</translation> <translation id="7465778193084373987">Netscape sertifikāta atsaukšanas URL</translation> <translation id="7469894403370665791">Automātiski pievienoties šim tīklam</translation> <translation id="747114903913869239">Kļūda: nespēj dekodēt paplašinājumu</translation> @@ -4807,6 +4820,7 @@ <translation id="827097179112817503">Rādīt pogu Sākums</translation> <translation id="8271246892936492311">{COUNT,plural, =1{Izdzēsta 1 grāmatzīme}zero{Izdzēstas # grāmatzīmes}one{Izdzēsta # grāmatzīme}other{Izdzēstas # grāmatzīmes}}</translation> <translation id="8272443605911821513">Pārvaldiet savus paplašinājumus, izvēlnē “Citi rīki” noklikšķinot uz Paplašinājumi.</translation> +<translation id="8272966760965438857">Google kontu pārvaldība vienuviet</translation> <translation id="8274332263553132018">Apraidīt failu</translation> <translation id="8274924778568117936">Neizslēdziet un neaizveriet savu <ph name="DEVICE_TYPE" /> ierīci, kamēr notiek atjaunināšana. Pēc instalēšanas pabeigšanas jūsu <ph name="DEVICE_TYPE" /> ierīce tiks restartēta.</translation> <translation id="8275038454117074363">Importēt</translation> @@ -5194,6 +5208,7 @@ <translation id="8883847527783433352">Sinhronizēt ar citu kontu</translation> <translation id="8885197664446363138">Smart Lock nav pieejams</translation> <translation id="88870264962436283">Funkcijas Touch ID lietošana ierīcē <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Lietotne tiks atvērta, kad jaunināšana būs pabeigta. Jaunināšana var ilgt vairākas minūtes.</translation> <translation id="8888432776533519951">Krāsa:</translation> <translation id="8890516388109605451">Avoti</translation> <translation id="8892168913673237979">Gatavs!</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index b289ade5..f5d3c24 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -364,6 +364,7 @@ <translation id="15373452373711364">വലിയ മൗസ് കഴ്സർ</translation> <translation id="1538729222189715449">Linux ഫയലുകൾ തുറക്കുന്നു...</translation> <translation id="1540605929960647700">ഡെമോ മോഡ് പ്രവർത്തനക്ഷമമാക്കുക</translation> +<translation id="1541396123399225659">പുതിയ ഗ്രൂപ്പിൽ ചേർക്കുക</translation> <translation id="1542514202066550870">ഒരു ഹെഡ്സെറ്റിലേക്ക് ഈ ടാബ് VR ഉള്ളടക്കം അവതരിപ്പിക്കുന്നു.</translation> <translation id="1543284117603151572">Edge-ൽ നിന്നും ഇമ്പോർട്ടുചെയ്തത്</translation> <translation id="1545177026077493356">യാന്ത്രിക കിയോസ്ക് മോഡ്</translation> @@ -402,6 +403,7 @@ <translation id="1593594475886691512">ഫോർമാറ്റുചെയ്യുന്നു...</translation> <translation id="159359590073980872">ഇമേജ് കാഷെ</translation> <translation id="1593926297800505364">പേയ്മെന്റ് രീതി സംരക്ഷിക്കുക</translation> +<translation id="1595492813686795610">Linux അപ്ഗ്രേഡ് ചെയ്യുന്നു</translation> <translation id="1598233202702788831">അപ്ഡേറ്റുകളെ നിങ്ങളുടെ അഡ്മിനിസ്ട്രേറ്റര് പ്രവർത്തനരഹിതമാക്കി.</translation> <translation id="1600857548979126453">പേജ് ഡീബഗ്ഗർ ബാക്ക്എൻഡ് ആക്സസ്സുചെയ്യുക</translation> <translation id="1601560923496285236">പ്രയോഗിക്കുക</translation> @@ -513,7 +515,6 @@ <translation id="175772926354468439">തീം പ്രവർത്തനക്ഷമമാക്കുക</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Chrome വെബ് സ്റ്റോറിൽ കാണുക</translation> -<translation id="1761588866118490543">വോയ്സ് മോഡൽ</translation> <translation id="176193854664720708">വിരലടയാള സെന്സര്, പവര് ബട്ടണിലാണ് ഉള്ളത്. ഏതെങ്കിലും വിരലുകൊണ്ട് അത് മൃദുവായി സ്പര്ശിക്കുക.</translation> <translation id="1763046204212875858">അപ്ലിക്കേഷന് കുറുക്കുവഴികള് സൃഷ്ടിക്കുക</translation> <translation id="1763108912552529023">പര്യവേക്ഷണം ചെയ്യുന്നത് തുടരുക</translation> @@ -935,6 +936,7 @@ <translation id="2379281330731083556">സിസ്റ്റം ഡയലോഗ് ഉപയോഗിച്ച് പ്രിന്റ് ചെയ്യുക... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">അയയ്ക്കുന്നതിന് മുമ്പ് ചോദിക്കുക (ശുപാർശചെയ്തത്)</translation> <translation id="2384436799579181135">ഒരു പിശക് സംഭവിച്ചു. നിങ്ങളുടെ പ്രിന്റർ പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക.</translation> +<translation id="2386926718981642523">ഏതുസമയത്തും "Ok Google" എന്ന് പറഞ്ഞ് നിങ്ങളുടെ അസിസ്റ്റന്റ് ആക്സസ് ചെയ്യൂ</translation> <translation id="2387458720915042159">പ്രോക്സി കണക്ഷൻ തരം</translation> <translation id="2391419135980381625">സാധാരണ ഫോണ്ട്</translation> <translation id="2391762656119864333">റദ്ദാക്കുക</translation> @@ -1040,6 +1042,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> ന് <ph name="NETWORK_ID" /> ലേയ്ക്ക് ബന്ധിപ്പിക്കാന് കഴിയുന്നില്ല. ദയവായി മറ്റൊരു നെറ്റ്വര്ക്ക് തിരഞ്ഞെടുക്കുക അല്ലെങ്കില് വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="2553440850688409052">ഈ പ്ലഗിന് മറയ്ക്കുക</translation> <translation id="2554553592469060349">തിരഞ്ഞെടുത്ത ഫയൽ വളരെ വലുതാണ് (പരമാവധി വലുപ്പം: 3mb).</translation> +<translation id="255747371423522804">നിലവിലെ ഗ്രൂപ്പിൽ ചേർക്കുക</translation> <translation id="2558896001721082624">സിസ്റ്റം മെനുവിൽ ഉപയോഗസഹായി ഓപ്ഷനുകൾ എല്ലായ്പ്പോഴും കാണിക്കുക</translation> <translation id="2562685439590298522">ഡോക്സ്</translation> <translation id="2562743677925229011"><ph name="SHORT_PRODUCT_NAME" />-ലേക്ക് പ്രവേശിച്ചിട്ടില്ല</translation> @@ -1312,6 +1315,7 @@ <translation id="2972581237482394796">&വീണ്ടും ചെയ്യുക</translation> <translation id="2972642118232180842">പ്രധാനപ്പെട്ട ഉള്ളടക്കം മാത്രം റൺ ചെയ്യുക (ശുപാർശചെയ്യുന്നത്)</translation> <translation id="2973324205039581528">സൈറ്റ് മ്യൂട്ട് ചെയ്യുക</translation> +<translation id="2977480621796371840">ഗ്രൂപ്പിൽ നിന്ന് നീക്കം ചെയ്യുക</translation> <translation id="2979639724566107830">പുതിയ വിന്ഡോയില് തുറക്കുക</translation> <translation id="2981113813906970160">വലിയ മൗസ് കഴ്സർ കാണിക്കുക</translation> <translation id="2982970937345031">അജ്ഞാതമായി റിപ്പോർട്ടുചെയ്യുക</translation> @@ -1562,6 +1566,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">സെപ്പറേറ്റര്</translation> <translation id="3389312115541230716">ടാസ്ക്ബാറിലെ <ph name="SMALL_PRODUCT_LOGO" /> ഐക്കണിൽ വലത് ക്ലിക്ക് ചെയ്യുക</translation> +<translation id="3393352139658145068">ആരെങ്കിലും “Ok Google” എന്ന് പറയുമ്പോൾ അസിസ്റ്റന്റ് സജീവമാക്കുക. ബാറ്ററി ചാർജ് ലാഭിക്കാൻ, നിങ്ങളുടെ ഉപകരണം ഒരു ഊർജ്ജ സ്രോതസുമായി കണക്റ്റ് ചെയ്യുമ്പോൾ മാത്രം “Ok Google” ഓണാക്കുക.</translation> <translation id="3396800784455899911">"അംഗീകരിച്ച് തുടരുക" ബട്ടൺ ക്ലിക്ക് ചെയ്യുക വഴി, ഈ Google സേവനങ്ങൾക്കായി മുകളിൽ വിവരിച്ചിട്ടുള്ള പ്രോസസിംഗിന് നിങ്ങൾ സമ്മതിക്കുകയാണ്.</translation> <translation id="3399432415385675819">അറിയിപ്പുകൾ പ്രവർത്തനരഹിതമാകും</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -2021,7 +2026,7 @@ <translation id="4037889604535939429">വ്യക്തിയെ എഡിറ്റുചെയ്യുക</translation> <translation id="4042264909745389898">Google Chrome OS നിബന്ധനകൾ</translation> <translation id="4042863763121826131">{NUM_PAGES,plural, =1{പേജിൽ നിന്ന് പുറത്തുകടക്കുക}other{പേജുകളിൽ നിന്ന് പുറത്തുകടക്കുക}}</translation> -<translation id="404299405565920089">ആപ്പുകളിൽ നിന്നും വെബ്സൈറ്റുകളിൽ നിന്നും സൈൻ ഇൻ ചെയ്തിരിക്കുന്ന നിങ്ങളുടെ എല്ലാ Google അക്കൗണ്ടുകളും ഇവിടെ മാനേജ് ചെയ്യാം. നിങ്ങളുടെ അനുമതിയുള്ള ആപ്പുകൾക്കും വെബ്സൈറ്റുകൾക്കും, അവയുടെ ശരിയായ പ്രവർത്തനത്തിന് ആവശ്യമായ അക്കൗണ്ട് വിവരങ്ങൾ ആക്സസ് ചെയ്യാനാവും.</translation> +<translation id="404299405565920089">ആപ്പുകളിൽ നിന്നും വെബ്സൈറ്റുകളിൽ നിന്നും സൈൻ ഇൻ ചെയ്തിരിക്കുന്ന നിങ്ങളുടെ എല്ലാ Google അക്കൗണ്ടുകളും ഇവിടെ മാനേജ് ചെയ്യാം. നിങ്ങളുടെ അനുമതിയുള്ള ആപ്പുകൾക്കും വെബ്സൈറ്റുകൾക്കും അവയുടെ ശരിയായ പ്രവർത്തനത്തിന് ആവശ്യമായ അക്കൗണ്ട് വിവരങ്ങൾ ആക്സസ് ചെയ്യാനാവും.</translation> <translation id="4044612648082411741">നിങ്ങളുടെ സർട്ടിഫിക്കറ്റ് പാസ്വേഡ് നൽകുക</translation> <translation id="404493185430269859">ഡിഫോൾട്ട് തിരയൽ എഞ്ചിൻ</translation> <translation id="4052120076834320548">ചെറുത്</translation> @@ -3164,6 +3169,7 @@ <translation id="5816434091619127343">അഭ്യർത്ഥിച്ച പ്രിന്റർ മാറ്റങ്ങൾ, പ്രിന്ററിനെ ഉപയോഗിക്കാൻ കഴിയാത്ത നിലയിലാക്കും.</translation> <translation id="5817918615728894473">ജോടിയാക്കുക</translation> <translation id="5821565227679781414">കുറുക്കുവഴി സൃഷ്ടിക്കുക</translation> +<translation id="5825412242012995131">ഓണാക്കുക (ശുപാർശചെയ്തത്)</translation> <translation id="5826507051599432481">പൊതുവായ പേര് (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">പ്രിന്റ് ചെയ്യുന്നു...</translation> @@ -3412,7 +3418,7 @@ <translation id="6163363155248589649">&സാധാരണ</translation> <translation id="6163522313638838258">എല്ലാം വികസിപ്പിക്കുക...</translation> <translation id="6164005077879661055">സൂപ്പർവൈസുചെയ്ത ഉപയോക്താവിനെ നീക്കംചെയ്താൽ, സൂപ്പർവൈസുചെയ്ത ഉപയോക്താവുമായി ബന്ധപ്പെടുത്തിയിട്ടുള്ള എല്ലാ ഫയലുകളും പ്രാദേശിക ഡാറ്റയും ശാശ്വതമായി ഇല്ലാതാക്കപ്പെടും. സൂപ്പർവൈസുചെയ്ത ഈ ഉപയോക്താവിനായി സന്ദർശിച്ച വെബ്സൈറ്റുകളും ക്രമീകരണങ്ങളും <ph name="MANAGEMENT_URL" />-ൽ മാനേജർക്ക് തുടർന്നും കാണാനായേക്കും.</translation> -<translation id="6165508094623778733">കൂടുതൽ മനസിലാക്കുക</translation> +<translation id="6165508094623778733">കൂടുതലറിയുക</translation> <translation id="6166185671393271715">Chrome-ലേക്ക് പാസ്വേഡുകൾ ഇമ്പോർട്ടുചെയ്യുക</translation> <translation id="6169040057125497443">നിങ്ങളുടെ മൈക്രോഫോൺ പരിശോധിക്കുക.</translation> <translation id="6169666352732958425">ഡെസ്ക്ടോപ്പ് കാസ്റ്റുചെയ്യാനാകുന്നില്ല.</translation> @@ -3710,6 +3716,11 @@ <translation id="6629841649550503054">എല്ലാം <ph name="BEGIN_LINK" />Google ഡ്രൈവിലേക്ക്<ph name="END_LINK" /> ബാക്കപ്പുചെയ്തു!</translation> <translation id="6630752851777525409">നിങ്ങൾക്കായി പ്രാമാണീകരിക്കുന്നതിന് <ph name="EXTENSION_NAME" /> ഒരു സർട്ടിഫിക്കറ്റിലേക്ക് സ്ഥിര ആക്സസ്സ് ആവശ്യപ്പെടുന്നു.</translation> <translation id="6635956300022133031">ടെക്സ്റ്റ് ടു സ്പീച്ച് ശബ്ദങ്ങൾ തിരഞ്ഞെടുത്ത് ഇഷ്ടാനുസൃതമാക്കുക</translation> +<translation id="6637585982786704944">നിങ്ങളുടെ അനുമതിയുള്ള ആപ്പുകൾക്കും വെബ്സൈറ്റുകൾക്കും, അവയുടെ ശരിയായ പ്രവർത്തനത്തിന് ആവശ്യമായ അക്കൗണ്ട് വിവരങ്ങൾ ആക്സസ് ചെയ്യാനാവും. + + ഒരു അക്കൗണ്ട് ചേർക്കാൻ താൽപ്പര്യമില്ലെങ്കിൽ, അതിഥിയായി സൈൻ ഇൻ ചെയ്യുകയോ വെബ് ബ്രൗസിംഗിനായി അദൃശ്യ വിൻഡോ തുറക്കുകയോ ചെയ്യുക. + + എല്ലാ അക്കൗണ്ടുകളും കാണാനും മാനേജ് ചെയ്യാനും ക്രമീകരണം -> Google അക്കൗണ്ടുകൾ എന്നതിലേക്ക് പോവുക.</translation> <translation id="6639554308659482635">SQLite മെമ്മറി</translation> <translation id="6641138807883536517">ക്രമരഹിതമായി ജനറേറ്റുചെയ്ത സുരക്ഷിത മൊഡ്യൂൾ പാസ്വേഡ് ലഭ്യമല്ല. 'പവർവാഷി'ന് ശേഷം ഇങ്ങനെ സംഭവിക്കുന്നത് സ്വാഭാവികമാണ്.</translation> <translation id="6643016212128521049">മായ്ക്കുക</translation> @@ -3911,6 +3922,7 @@ <translation id="6957231940976260713">സേവനത്തിന്റെ പേര്</translation> <translation id="696203921837389374">മൊബൈൽ ഡാറ്റയിലൂടെയുള്ള സമന്വയം പ്രവർത്തനക്ഷമമാക്കുക</translation> <translation id="6964390816189577014">ഹീറോ</translation> +<translation id="6964760285928603117">ഗ്രൂപ്പിൽ നിന്ന് നീക്കം ചെയ്യുക</translation> <translation id="6965382102122355670">ശരി</translation> <translation id="6965648386495488594">പോര്ട്ട്</translation> <translation id="6965978654500191972">ഉപാധി</translation> @@ -3982,7 +3994,7 @@ <translation id="7059893117020417984">സ്വകാര്യമായി ബ്രൗസ് ചെയ്യാൻ, അദൃശ്യ വിൻഡോ തുറക്കാൻ, ഡോട്ട് ഐക്കൺ മെനുവിൽ ക്ലിക്ക് ചെയ്യുക</translation> <translation id="7062222374113411376">അടുത്തിടെ അടച്ച സൈറ്റുകളെ, ഡാറ്റ അയയ്ക്കുന്നതും സ്വീകരിക്കുന്നതും പൂർത്തിയാക്കാൻ അനുവദിക്കുക (ശുപാർശചെയ്തിരിക്കുന്നു)</translation> <translation id="7063129466199351735">കുറുക്കുവഴികൾ പ്രോസസ്സുചെയ്യുന്നു...</translation> -<translation id="7063311912041006059">തിരയൽ സ്ഥാനത്തെ <ph name="SPECIAL_SYMBOL" /> ഉള്ള URL</translation> +<translation id="7063311912041006059">തിരയൽ സ്ഥാനത്ത് <ph name="SPECIAL_SYMBOL" /> ഉള്ള URL</translation> <translation id="7063957500469387217">Google ക്ലൗഡ് പ്രിന്റിൽ പ്രിന്ററുകൾ സജ്ജമാക്കുക അല്ലെങ്കിൽ മാനേജുചെയ്യുക.</translation> <translation id="7065223852455347715">എന്റർപ്രൈസ് എൻറോൾമെന്റിനെ തടയുന്ന മോഡിൽ ഈ ഉപകരണം ലോക്കുചെയ്തു. നിങ്ങൾക്ക് ഉപകരണം എൻറോൾ ചെയ്യണമെങ്കിൽ, ആദ്യം ഉപകരണ വീണ്ടെടുക്കൽ എന്നതിലൂടെ പോകേണ്ടതുണ്ട്.</translation> <translation id="7065534935986314333">സിസ്റ്റത്തെക്കുറിച്ച്</translation> @@ -4020,6 +4032,7 @@ <translation id="7109543803214225826">കുറുക്കുവഴി നീക്കം ചെയ്തു</translation> <translation id="7113502843173351041">നിങ്ങളുടെ ഇമെയിൽ വിലാസം അറിയുക</translation> <translation id="7114054701490058191">പാസ്വേഡുകൾ പൊരുത്തപ്പെടുന്നില്ല</translation> +<translation id="7114648273807173152">നിങ്ങളുടെ Google അക്കൗണ്ടിലേക്ക് സൈൻ ഇൻ ചെയ്യാൻ Smart Lock ഉപയോഗിക്കുന്നതിന്, ക്രമീകരണം > കണക്റ്റ് ചെയ്ത ഉപകരണങ്ങൾ > നിങ്ങളുടെ ഫോൺ > Smart Lock എന്നിവയിലേക്ക് പോവുക.</translation> <translation id="7117228822971127758">പിന്നീട് വീണ്ടും ശ്രമിക്കുക</translation> <translation id="7117247127439884114">വീണ്ടും പ്രവേശിക്കുക...</translation> <translation id="711840821796638741">നിയന്ത്രിത ബുക്ക്മാർക്കുകൾ കാണിക്കുക</translation> @@ -4175,6 +4188,7 @@ <translation id="7348093485538360975">ഓൺ-സ്ക്രീൻ കീബോർഡ്</translation> <translation id="7352651011704765696">എന്തോ കുഴപ്പം സംഭവിച്ചു</translation> <translation id="735361434055555355">Linux ഇൻസ്റ്റാൾ ചെയ്യുന്നു...</translation> +<translation id="7353887511974462734">നിലവിലെ ഗ്രൂപ്പിൽ ചേർക്കുക</translation> <translation id="735745346212279324">VPN വിച്ഛേദിച്ചു</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" /> ഇനങ്ങൾ പകർത്തുന്നു...</translation> <translation id="7359588939039777303">പരസ്യങ്ങൾ ബ്ലോക്കുചെയ്തു.</translation> @@ -4237,7 +4251,6 @@ <translation id="7456847797759667638">സ്ഥാനം തുറക്കുക...</translation> <translation id="7461924472993315131">പിൻ ചെയ്യുക</translation> <translation id="7463006580194749499">വ്യക്തിയെ ചേർക്കുക</translation> -<translation id="7464902436585505072">"Ok Google" വോയ്സ് മോഡൽ</translation> <translation id="7465778193084373987">നെറ്റ്സ്കേപ്പ് സര്ട്ടിഫിക്കറ്റ് അസാധുവാക്കല് URL</translation> <translation id="7469894403370665791">ഈ നെറ്റ്വര്ക്കിലേക്ക് സ്വപ്രേരിതമായി ബന്ധിപ്പിക്കുന്നു</translation> <translation id="747114903913869239">പിശക്: വിപുലീകരണം ഡീകോഡ് ചെയ്യാനാവില്ല</translation> @@ -4807,6 +4820,7 @@ <translation id="827097179112817503">ഹോം ബട്ടൺ കാണിക്കുക</translation> <translation id="8271246892936492311">{COUNT,plural, =1{ഒരു ബുക്ക്മാർക്ക് ഇല്ലാതാക്കി}other{# ബുക്ക്മാർക്കുകൾ ഇല്ലാതാക്കി}}</translation> <translation id="8272443605911821513">"കൂടുതൽ ഉപകരണങ്ങൾ" മെനുവിലെ വിപുലീകരണങ്ങളിൽ ക്ലിക്കുചെയ്യുന്നതിലൂടെ നിങ്ങളുടെ വിപുലീകരണങ്ങൾ നിയന്ത്രിക്കുക.</translation> +<translation id="8272966760965438857">നിങ്ങളുടെ Google അക്കൗണ്ടുകൾ ഒരിടത്ത് മാനേജ് ചെയ്യുക</translation> <translation id="8274332263553132018">ഫയൽ കാസ്റ്റുചെയ്യുക</translation> <translation id="8274924778568117936">അപ്ഡേറ്റ് പൂർത്തിയാകുന്നതുവരെ നിങ്ങളുടെ <ph name="DEVICE_TYPE" /> ഓഫാക്കുകയോ അടയ്ക്കുകയോ ചെയ്യരുത്. ഇൻസ്റ്റാളേഷൻ പൂർത്തിയായിക്കഴിഞ്ഞാൽ <ph name="DEVICE_TYPE" /> റീസ്റ്റാർട്ട് ആകുന്നതാണ്.</translation> <translation id="8275038454117074363">ഇറക്കുമതിചെയ്യുക</translation> @@ -5192,6 +5206,7 @@ <translation id="8883847527783433352">മറ്റൊരു അക്കൗണ്ടിലേക്ക് സമന്വയിപ്പിക്കുക</translation> <translation id="8885197664446363138">Smart Lock ലഭ്യമല്ല</translation> <translation id="88870264962436283"><ph name="APP_NAME" /> എന്നതിനൊപ്പം ടച്ച് ഐഡി ഉപയോഗിക്കുക</translation> +<translation id="8888253246822647887">അപ്ഗ്രേഡ് ചെയ്യൽ പൂർത്തിയാകുമ്പോൾ ആപ്പ് തുറക്കും. അപ്ഗ്രേഡ് ചെയ്യുന്നതിന് കുറച്ചുസമയമെടുത്തേക്കാം.</translation> <translation id="8888432776533519951">വർണ്ണം:</translation> <translation id="8890516388109605451">ഉറവിടങ്ങള്</translation> <translation id="8892168913673237979">എല്ലാം സജ്ജമായി!</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb index ed57415..9870a3b4 100644 --- a/chrome/app/resources/generated_resources_mr.xtb +++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">मोठा माउस कर्सर</translation> <translation id="1538729222189715449">Linux फायली सुरू करत आहे...</translation> <translation id="1540605929960647700">डेमो मोड सुरू करा</translation> +<translation id="1541396123399225659">नवीन गटामध्ये जोडा</translation> <translation id="1542514202066550870">हा टॅब हेडसेटवर VR आशय सादर करत आहे.</translation> <translation id="1543284117603151572">Edge वरून इंपोर्ट केले</translation> <translation id="1545177026077493356">स्वयंचलित कियोस्क मोड</translation> @@ -404,6 +405,7 @@ <translation id="1593594475886691512">स्वरूपन करत आहे...</translation> <translation id="159359590073980872">इमेज कॅशे</translation> <translation id="1593926297800505364">पेमेंट पद्धत सेव्ह करा</translation> +<translation id="1595492813686795610">Linux अपग्रेड होत आहे</translation> <translation id="1598233202702788831">आपल्या प्रशासकाने अपडेट अक्षम केली आहेत.</translation> <translation id="1600857548979126453">पृष्ठ डीबगर बॅकएंडवर प्रवेश करा</translation> <translation id="1601560923496285236">लागू करा</translation> @@ -515,7 +517,6 @@ <translation id="175772926354468439">थीम सक्षम करा</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Chrome वेब स्टोअरमध्ये पहा</translation> -<translation id="1761588866118490543">व्हॉइस मॉडेल</translation> <translation id="176193854664720708">फिंगरप्रिंट सेन्सर पॉवर बटणात आहे. कोणत्याही बोटाने हळूवारपणे स्पर्श करा.</translation> <translation id="1763046204212875858">अॅप्लिकेशन शॉर्टकट तयार करा</translation> <translation id="1763108912552529023">एक्सप्लोर करत रहा</translation> @@ -937,6 +938,7 @@ <translation id="2379281330731083556">सिस्टम संवाद वापरून प्रिंट करा… <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">पाठविण्यापूर्वी विचारा (शिफारस केलेले)</translation> <translation id="2384436799579181135">एक एरर आली आहे. कृपया तुमचा प्रिंटर तपासा आणि पुन्हा प्रयत्न करा.</translation> +<translation id="2386926718981642523">कधीही "Ok Google" म्हणून तुमचे असिस्टंट अॅक्सेस करा</translation> <translation id="2387458720915042159">प्रॉक्सी कनेक्शन प्रकार</translation> <translation id="2391419135980381625">मानक फॉन्ट</translation> <translation id="2391762656119864333">मागे घ्या</translation> @@ -1042,6 +1044,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> <ph name="NETWORK_ID" /> शी कनेक्ट करण्यात अक्षम आहे. कृपया दुसरे नेटवर्क निवडा किंवा पुन्हा प्रयत्न करा. </translation> <translation id="2553440850688409052">हे प्लगिन लपवा</translation> <translation id="2554553592469060349">निवडलेली फाईल खूप मोठी आहे (कमाल आकार: 3mb).</translation> +<translation id="255747371423522804">सद्य गटामध्ये जोडा</translation> <translation id="2558896001721082624">सिस्टम मेनूमध्ये नेहमी अॅक्सेसिबिलिटी पर्याय दाखवा</translation> <translation id="2562685439590298522">दस्तऐवज</translation> <translation id="2562743677925229011"><ph name="SHORT_PRODUCT_NAME" /> मध्ये साइन इन नाही</translation> @@ -1314,6 +1317,7 @@ <translation id="2972581237482394796">&पुन्हा करा</translation> <translation id="2972642118232180842">फक्त महत्त्वाचा आशय रन करा (शिफारस केलेले)</translation> <translation id="2973324205039581528">साइट निःशब्द करा</translation> +<translation id="2977480621796371840">गटामधून काढून टाका</translation> <translation id="2979639724566107830">नवीन विंडोमध्ये उघडा</translation> <translation id="2981113813906970160">मोठा माउस कर्सर दर्शवा</translation> <translation id="2982970937345031">अज्ञातरित्या तक्रार करा</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">विभाजक</translation> <translation id="3389312115541230716">टास्कबार मधील <ph name="SMALL_PRODUCT_LOGO" /> आयकनवर राइट क्लिक करा</translation> +<translation id="3393352139658145068">कोणीही “Ok Google” म्हटल्यावर असिस्टंटला अॅक्टिव्हेट करा. बॅटरी सेव्ह करण्यासाठी, तुमचे डिव्हाइस एखाद्या पॉवर स्रोताशी कनेक्ट केलेले असेल तेव्हाच “Ok Google” सुरू असेल.</translation> <translation id="3396800784455899911">"स्वीकारा आणि सुरू ठेवा" या बटणावर क्लिक करून तुम्ही या Google सेवांसाठी वर वर्णन केलेल्या प्रक्रियांना सहमती दर्शवता.</translation> <translation id="3399432415385675819">सूचना बंद केल्या जातील</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -2111,7 +2116,7 @@ <translation id="4193154014135846272">Google दस्तऐवज</translation> <translation id="4194570336751258953">टॅप-टू-क्लिक सक्षम करा</translation> <translation id="4195249722193633765">Linux (बीटा) सह ॲप इंस्टॉल करा</translation> -<translation id="4195643157523330669">नवीन विंडोमध्ये उघडा</translation> +<translation id="4195643157523330669">नवीन टॅबमध्ये उघडा</translation> <translation id="4195814663415092787">तुम्ही सोडले होते तिथून पुढे सुरु करा</translation> <translation id="4197674956721858839">झिप निवड</translation> <translation id="4198146608511578238">तुमच्या Google असिस्टंटशी बोलण्यासाठी फक्त लाँचर आयकन दाबून ठेवा.</translation> @@ -3166,6 +3171,7 @@ <translation id="5816434091619127343">विनंती केलेले प्रिंटर बदल प्रिंटरला वापरता न येण्याजोगा बनवतील.</translation> <translation id="5817918615728894473">जोडा</translation> <translation id="5821565227679781414">शॉर्टकट तयार करा</translation> +<translation id="5825412242012995131">सुरू आहे (शिफारस केलेले)</translation> <translation id="5826507051599432481">सामान्य नाव (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">प्रिंट करत आहे...</translation> @@ -3711,6 +3717,11 @@ <translation id="6629841649550503054"><ph name="BEGIN_LINK" />Google ड्राइव्ह!<ph name="END_LINK" /> वर सर्व बॅकअप घेतला</translation> <translation id="6630752851777525409">आपल्यावतीने स्वत:स प्रमाणित करण्यासाठी सर्टिफिकेटमध्ये <ph name="EXTENSION_NAME" /> कायमचा अॅक्सेस इच्छितो.</translation> <translation id="6635956300022133031">टेक्स्ट टू स्पीच व्हॉइस निवडा आणि कस्टमाइझ करा</translation> +<translation id="6637585982786704944">तुमची परवानगी असलेली अॅप्स आणि वेबसाइट त्यांना योग्यरीत्या काम करण्यासाठी आवश्यक असलेली खाते माहिती अॅक्सेस करू शकतात. + + तुम्हाला खाते जोडायचे नसल्यास, अतिथी म्हणून साइन इन करायचे किंवा वेब ब्राउझ करण्यासाठी एखादी गुप्त विंडो. + + सर्व खाती व्यवस्थापित करण्यास आणि पाहाण्यासाठी तुम्ही सेटिंग्ज -> Google खातेवर जाऊ शकता.</translation> <translation id="6639554308659482635">SQLite मेमरी</translation> <translation id="6641138807883536517">यादृच्छिकपणे तयार केलेला सुरक्षित मॉड्यूल पासवर्ड उपलब्ध नाही. पॉवरवॉशनंतर असे होणे स्वाभाविक आहे.</translation> <translation id="6643016212128521049">साफ करा</translation> @@ -3912,6 +3923,7 @@ <translation id="6957231940976260713">सेवेचे नाव</translation> <translation id="696203921837389374">मोबाईल डेटावर संकालन सक्षम करा</translation> <translation id="6964390816189577014">नायक</translation> +<translation id="6964760285928603117">गटामधून काढून टाका</translation> <translation id="6965382102122355670">ठीक आहे</translation> <translation id="6965648386495488594">पोर्ट</translation> <translation id="6965978654500191972">डिव्हाइस</translation> @@ -4021,6 +4033,7 @@ <translation id="7109543803214225826">शॉर्टकट काढला</translation> <translation id="7113502843173351041">तुमचा ईमेल अॅड्रेस माहिती करून घ्या</translation> <translation id="7114054701490058191">पासवर्ड जुळत नाहीत</translation> +<translation id="7114648273807173152">तुमच्या Google खात्यामध्ये साइन इन करण्यासाठी Smart Lock वापरण्याकरिता, सेटिंग्ज > कनेक्ट केलेली डिव्हाइस > तुमचा फोन > Smart Lock वर जा.</translation> <translation id="7117228822971127758">कृपया नंतर पुन्हा प्रयत्न करा</translation> <translation id="7117247127439884114">पुन्हा साइन इन करा...</translation> <translation id="711840821796638741">व्यवस्थापित बुकमार्क दर्शवा</translation> @@ -4176,6 +4189,7 @@ <translation id="7348093485538360975">ऑन-स्क्रीन कीबोर्ड</translation> <translation id="7352651011704765696">काहीतरी चूक झाली</translation> <translation id="735361434055555355">Linux इन्स्टॉल करत आहे...</translation> +<translation id="7353887511974462734">सद्य गटामध्ये जोडा</translation> <translation id="735745346212279324">VPN डिस्कनेक्ट केले</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" /> आयटम कॉपी करत आहे...</translation> <translation id="7359588939039777303">जाहिराती ब्लॉक केल्या.</translation> @@ -4238,7 +4252,6 @@ <translation id="7456847797759667638">स्थान उघडा...</translation> <translation id="7461924472993315131">पिन</translation> <translation id="7463006580194749499">व्यक्ती जोडा</translation> -<translation id="7464902436585505072">"Ok Google" व्हॉइस मॉडेल</translation> <translation id="7465778193084373987">Netscape सर्टिफिकेट रिव्होकीकरण URL</translation> <translation id="7469894403370665791">या नेटवर्कशी स्वयंचलितपणे कनेक्ट व्हा</translation> <translation id="747114903913869239">एरर: विस्तार डीकोड करण्यात अक्षम</translation> @@ -4806,6 +4819,7 @@ <translation id="827097179112817503">मुख्यपृष्ठ बटण दर्शवा</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 बुकमार्क हटवला}one{# बुकमार्क हटवला}other{# बुकमार्क हटवले}}</translation> <translation id="8272443605911821513">"अधिक साधने" मेनूमधील विस्तार क्लिक करून तुमचे विस्तार व्यवस्थापित करा.</translation> +<translation id="8272966760965438857">तुमची Google खाती एका ठिकाणी व्यवस्थापित करा</translation> <translation id="8274332263553132018">फाइल कास्ट करा</translation> <translation id="8274924778568117936">अपडेट पूर्ण होईपर्यंत तुमचे <ph name="DEVICE_TYPE" /> बंद करू नका. इंस्टॉलेशन पूर्ण झाल्यानंतर तुमचे <ph name="DEVICE_TYPE" /> पुन्हा सुरू हाेईल .</translation> <translation id="8275038454117074363">इंपोर्ट</translation> @@ -5193,6 +5207,7 @@ <translation id="8883847527783433352">दुसऱ्या खात्याशी सिंक करा</translation> <translation id="8885197664446363138">Smart Lock अनुपलब्ध आहे</translation> <translation id="88870264962436283"><ph name="APP_NAME" /> सह टच आयडी वापरा</translation> +<translation id="8888253246822647887">अपग्रेड करणे पूर्ण झाल्यावर तुमचे अॅप उघडेल. अपग्रेड करण्यास काही मिनिटे लागू शकतात.</translation> <translation id="8888432776533519951">रंग:</translation> <translation id="8890516388109605451">स्रोत</translation> <translation id="8892168913673237979">सर्व सेट झाले!</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb index 63282be..d20cdf2c 100644 --- a/chrome/app/resources/generated_resources_ms.xtb +++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -518,7 +518,6 @@ <translation id="175772926354468439">Dayakan tema</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Lihat di Gedung Web Chrome</translation> -<translation id="1761588866118490543">Model suara</translation> <translation id="176193854664720708">Penderia cap jari terletak di dalam butang kuasa. Sentuh dengan lembut menggunakan mana-mana jari.</translation> <translation id="1763046204212875858">Cipta pintasan aplikasi</translation> <translation id="1763108912552529023">Teruskan meneroka</translation> @@ -3168,7 +3167,6 @@ <translation id="5804241973901381774">Kebenaran</translation> <translation id="5805697420284793859">Pengurus tetingkap</translation> <translation id="580571955903695899">Aturkan semula mengikut Tajuk</translation> -<translation id="5806795763657948556">Lagi destinasi</translation> <translation id="5811750797187914944">Selesai</translation> <translation id="5814126672212206791">Jenis sambungan</translation> <translation id="5815645614496570556">Alamat X.400</translation> @@ -4255,7 +4253,6 @@ <translation id="7456847797759667638">Buka Lokasi...</translation> <translation id="7461924472993315131">Pin</translation> <translation id="7463006580194749499">Tambah orang</translation> -<translation id="7464902436585505072">Model suara "Ok Google"</translation> <translation id="7465778193084373987">URL Pembatalan Sijil Netscape</translation> <translation id="7469894403370665791">Menyambung ke rangkaian ini secara automatik</translation> <translation id="747114903913869239">Ralat: Tidak dapat menyahkod sambungan</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index fb1ef590..5152ef83 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -367,7 +367,8 @@ <translation id="15373452373711364">Grote muisaanwijzer</translation> <translation id="1538729222189715449">Linux-bestanden openen…</translation> <translation id="1540605929960647700">Demomodus inschakelen</translation> -<translation id="1542514202066550870">Dit tabblad presenteert VR-content op een headset.</translation> +<translation id="1541396123399225659">Toevoegen aan nieuwe groep</translation> +<translation id="1542514202066550870">Op dit tabblad wordt VR-content voor een headset getoond.</translation> <translation id="1543284117603151572">Geïmporteerd uit Edge</translation> <translation id="1545177026077493356">Automatische kioskmodus</translation> <translation id="1545775234664667895">Geïnstalleerd thema: '<ph name="THEME_NAME" />'</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Formatteren...</translation> <translation id="159359590073980872">Cache met afbeeldingen</translation> <translation id="1593926297800505364">Betaalmethode opslaan</translation> +<translation id="1595492813686795610">Linux wordt geüpgraded</translation> <translation id="1598233202702788831">Updates zijn uitgeschakeld door je beheerder.</translation> <translation id="1600857548979126453">Back-end voor foutopsporing van pagina openen</translation> <translation id="1601560923496285236">Toepassen</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Thema inschakelen</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Bekijken in de Chrome Web Store</translation> -<translation id="1761588866118490543">Spraakmodel</translation> <translation id="176193854664720708">De vingerafdruksensor bevindt zich in de aan/uit-knop. Raak deze kort aan met een vinger.</translation> <translation id="1763046204212875858">Applicatiesnelkoppelingen maken</translation> <translation id="1763108912552529023">Blijf ontdekken</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">Afdrukken via systeemdialoogvenster... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Vragen vóór verzenden (aanbevolen)</translation> <translation id="2384436799579181135">Er is een fout opgetreden. Controleer je printer en probeer het opnieuw.</translation> +<translation id="2386926718981642523">Open je Assistent door 'Oké Google' te zeggen</translation> <translation id="2387458720915042159">Proxyverbindingstype</translation> <translation id="2391419135980381625">Standaard lettertype</translation> <translation id="2391762656119864333">Intrekken</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> kan geen verbinding maken met <ph name="NETWORK_ID" />. Probeer een ander netwerk of probeer het opnieuw.</translation> <translation id="2553440850688409052">Deze plugin verbergen</translation> <translation id="2554553592469060349">Het geselecteerde bestand is te groot (max. grootte: 3 MB).</translation> +<translation id="255747371423522804">Toevoegen aan bestaande groep</translation> <translation id="2558896001721082624">Toegankelijkheidsopties altijd weergeven in het systeemmenu</translation> <translation id="2562685439590298522">Documenten</translation> <translation id="2562743677925229011">Niet ingelogd bij <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">&Opnieuw</translation> <translation id="2972642118232180842">Alleen belangrijke content uitvoeren (aanbevolen)</translation> <translation id="2973324205039581528">Geluid van site dempen</translation> +<translation id="2977480621796371840">Uit groep verwijderen</translation> <translation id="2979639724566107830">Openen in nieuw venster</translation> <translation id="2981113813906970160">Grote muisaanwijzer weergeven</translation> <translation id="2982970937345031">Anoniem melden</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Separator</translation> <translation id="3389312115541230716">Klik met de rechtermuisknop op het pictogram <ph name="SMALL_PRODUCT_LOGO" /> in de taakbalk</translation> +<translation id="3393352139658145068">Activeer de Assistent wanneer iemand 'Oké Google' zegt. 'Oké Google' is alleen ingeschakeld wanneer je apparaat op een voedingsbron is aangesloten om de batterij te sparen.</translation> <translation id="3396800784455899911">Door op de knop 'Accepteren en doorgaan' te klikken, ga je akkoord met de bovengenoemde verwerking voor deze Google-services.</translation> <translation id="3399432415385675819">Meldingen worden uitgeschakeld</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3168,6 +3173,7 @@ <translation id="5816434091619127343">Met de aangevraagde printerwijzigingen wordt de printer wordt onbruikbaar.</translation> <translation id="5817918615728894473">Koppelen</translation> <translation id="5821565227679781414">Snelle link maken</translation> +<translation id="5825412242012995131">Aan (aanbevolen)</translation> <translation id="5826507051599432481">Algemene naam (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Bezig met afdrukken....</translation> @@ -3712,6 +3718,11 @@ <translation id="6629841649550503054">Er is een back-up van alles gemaakt in <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> wil permanente toegang tot een certificaat om zichzelf names jou te verifiëren.</translation> <translation id="6635956300022133031">Stemmen voor tekst-naar-spraak selecteren en aanpassen</translation> +<translation id="6637585982786704944">Apps en websites die je daarvoor toestemming hebt gegeven, hebben toegang tot de accountgegevens die ze nodig hebben om goed te kunnen werken. + + Als je geen account wilt toevoegen, log je in als gast of open je een incognitovenster om te browsen op internet. + + Ga naar Instellingen -> Google-accounts om alle accounts te bekijken en beheren.</translation> <translation id="6639554308659482635">SQLite-geheugen</translation> <translation id="6641138807883536517">Het willekeurig gegenereerde wachtwoord voor de beveiligde module is niet beschikbaar. Dit is normaal nadat de Powerwash-functie is uitgevoerd.</translation> <translation id="6643016212128521049">Wissen</translation> @@ -3913,6 +3924,7 @@ <translation id="6957231940976260713">Servicenaam</translation> <translation id="696203921837389374">Synchroniseren via mobiele data inschakelen</translation> <translation id="6964390816189577014">Held</translation> +<translation id="6964760285928603117">Uit groep verwijderen</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Poort</translation> <translation id="6965978654500191972">Apparaat</translation> @@ -4022,6 +4034,7 @@ <translation id="7109543803214225826">Snelkoppeling verwijderd</translation> <translation id="7113502843173351041">Toegang krijgen tot je e-mailadres</translation> <translation id="7114054701490058191">Wachtwoorden komen niet overeen</translation> +<translation id="7114648273807173152">Als je Smart Lock wilt gebruiken om in te loggen op je Google-account, ga je naar Instellingen > Verbonden apparaten > Je telefoon > Smart Lock.</translation> <translation id="7117228822971127758">Probeer het later opnieuw</translation> <translation id="7117247127439884114">Opnieuw inloggen...</translation> <translation id="711840821796638741">Beheerde bladwijzers weergeven</translation> @@ -4177,6 +4190,7 @@ <translation id="7348093485538360975">Schermtoetsenbord</translation> <translation id="7352651011704765696">Er is iets misgegaan</translation> <translation id="735361434055555355">Linux installeren...</translation> +<translation id="7353887511974462734">Toevoegen aan bestaande groep</translation> <translation id="735745346212279324">Verbinding met VPN verbroken</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" /> items kopiëren...</translation> <translation id="7359588939039777303">Advertenties geblokkeerd.</translation> @@ -4239,7 +4253,6 @@ <translation id="7456847797759667638">Open locatie...</translation> <translation id="7461924472993315131">Vastzetten</translation> <translation id="7463006580194749499">Persoon toevoegen</translation> -<translation id="7464902436585505072">'Oké Google'-spraakmodel</translation> <translation id="7465778193084373987">URL voor intrekken van Netscape-certificaat</translation> <translation id="7469894403370665791">Automatisch verbinding maken met dit netwerk</translation> <translation id="747114903913869239">Fout: kan extensie niet decoderen</translation> @@ -4808,6 +4821,7 @@ <translation id="827097179112817503">Knop 'Homepage' weergeven</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 bladwijzer verwijderd}other{# bladwijzers verwijderd}}</translation> <translation id="8272443605911821513">Beheer je extensies door op 'Extensies' te klikken in het menu 'Meer tools'.</translation> +<translation id="8272966760965438857">Je Google-accounts op één plaats beheren</translation> <translation id="8274332263553132018">Bestand casten</translation> <translation id="8274924778568117936">Je moet je <ph name="DEVICE_TYPE" /> niet uitschakelen of sluiten totdat de update is voltooid. Je <ph name="DEVICE_TYPE" /> wordt opnieuw opgestart nadat de installatie is voltooid.</translation> <translation id="8275038454117074363">Importeren</translation> @@ -5195,6 +5209,7 @@ <translation id="8883847527783433352">Synchroniseren met een ander account</translation> <translation id="8885197664446363138">Smart Lock is niet beschikbaar</translation> <translation id="88870264962436283">Touch ID gebruiken voor <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Je app wordt geopend wanneer de upgrade is voltooid. Upgrades kunnen enkele minuten duren.</translation> <translation id="8888432776533519951">Kleur:</translation> <translation id="8890516388109605451">Bronnen</translation> <translation id="8892168913673237979">Helemaal klaar!</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index dbcb6f7..0af7e42 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -364,6 +364,7 @@ <translation id="15373452373711364">Stor markør</translation> <translation id="1538729222189715449">Åpner Linux-filer …</translation> <translation id="1540605929960647700">Slå på demomodus</translation> +<translation id="1541396123399225659">Legg til i en ny gruppe</translation> <translation id="1542514202066550870">Denne fanen sender VR-innhold til VR-briller.</translation> <translation id="1543284117603151572">Importert fra Edge</translation> <translation id="1545177026077493356">Automatisk kioskmodus</translation> @@ -402,6 +403,7 @@ <translation id="1593594475886691512">Formaterer …</translation> <translation id="159359590073980872">Bildebuffer</translation> <translation id="1593926297800505364">Lagre betalingsmåten</translation> +<translation id="1595492813686795610">Linux oppgraderes</translation> <translation id="1598233202702788831">Administratoren din har slått av oppdateringer.</translation> <translation id="1600857548979126453">få tilgang til bakdata for sidefeilsøkingsprogrammet</translation> <translation id="1601560923496285236">Bruk</translation> @@ -513,7 +515,6 @@ <translation id="175772926354468439">Aktiver temaet</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Se i Chrome Nettmarked</translation> -<translation id="1761588866118490543">Stemmemodell</translation> <translation id="176193854664720708">Fingeravtrykkssensoren er i av/på-knappen. Trykk på den forsiktig.</translation> <translation id="1763046204212875858">Opprett snarveier</translation> <translation id="1763108912552529023">Fortsett å utforske</translation> @@ -935,6 +936,7 @@ <translation id="2379281330731083556">Skriv ut med systemdialogen <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Spør før noe sendes (anbefales).</translation> <translation id="2384436799579181135">Det har oppstått en feil. Sjekk skriveren og prøv på nytt.</translation> +<translation id="2386926718981642523">Du kan når som helst snakke til assistenten ved å si «Ok Google»</translation> <translation id="2387458720915042159">Tilkoblingstype for proxy-tjener</translation> <translation id="2391419135980381625">Standardskrift</translation> <translation id="2391762656119864333">Opphev</translation> @@ -1040,6 +1042,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> kan ikke koble til <ph name="NETWORK_ID" />. Velg et annet nettverk eller prøv på nytt senere.</translation> <translation id="2553440850688409052">Skjul dette programtillegget</translation> <translation id="2554553592469060349">Den valgte filen er for stor (maksimal størrelse: 3 MB).</translation> +<translation id="255747371423522804">Legg til i en eksisterende gruppe</translation> <translation id="2558896001721082624">Vis alltid alternativene for tilgjengelighet i systemmenyen</translation> <translation id="2562685439590298522">Google Dokumenter</translation> <translation id="2562743677925229011">Ikke logget på <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1311,6 +1314,7 @@ <translation id="2972581237482394796">Gjø&r om</translation> <translation id="2972642118232180842">Kjør bare viktig innhold (anbefales)</translation> <translation id="2973324205039581528">Kutt lyden for nettsted</translation> +<translation id="2977480621796371840">Fjern fra gruppen</translation> <translation id="2979639724566107830">Åpne i nytt vindu</translation> <translation id="2981113813906970160">Vis stor musepeker</translation> <translation id="2982970937345031">Rapporér anonymt</translation> @@ -1560,6 +1564,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" /> %</translation> <translation id="338583716107319301">Skillelinje</translation> <translation id="3389312115541230716">Høyreklikk på <ph name="SMALL_PRODUCT_LOGO" />-ikonet på oppgavelinjen</translation> +<translation id="3393352139658145068">Aktivér assistenten når noen sier «Ok Google». For å spare batteri er «Ok Google» bare på når enheten er koblet til en ekstern strømkilde.</translation> <translation id="3396800784455899911">Ved å klikke på «Godta og fortsett»-knappen godtar du behandlingen som beskrives ovenfor, for disse Google-tjenestene.</translation> <translation id="3399432415385675819">Varsler slås av</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3160,6 +3165,7 @@ <translation id="5816434091619127343">De forespurte skriverendringene gjør at du ikke kan bruke skriveren.</translation> <translation id="5817918615728894473">Koble sammen</translation> <translation id="5821565227679781414">Opprett snarvei</translation> +<translation id="5825412242012995131">På (anbefales)</translation> <translation id="5826507051599432481">Vanlig navn (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Skriver ut …</translation> @@ -3407,7 +3413,7 @@ <translation id="6163363155248589649">&Normal</translation> <translation id="6163522313638838258">Utvid alle</translation> <translation id="6164005077879661055">Alle filer og lokale data tilknyttet den administrerte brukeren slettes permanent når den administrerte brukeren fjernes. Besøkte nettsteder og innstillinger for denne administrerte brukeren kan fortsatt ses av administratoren på <ph name="MANAGEMENT_URL" />.</translation> -<translation id="6165508094623778733">Les mer</translation> +<translation id="6165508094623778733">Finn ut mer</translation> <translation id="6166185671393271715">Importér passord i Chrome</translation> <translation id="6169040057125497443">Sjekk mikrofonen din.</translation> <translation id="6169666352732958425">Kan ikke caste skrivebordet.</translation> @@ -3704,6 +3710,11 @@ <translation id="6629841649550503054">Alt er sikkerhetskopiert til <ph name="BEGIN_LINK" />Google Disk<ph name="END_LINK" /></translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> vil ha permanent tilgang til et sertifikat for å autentisere seg på dine vegne.</translation> <translation id="6635956300022133031">Velg og tilpass tekst til tale-stemmer</translation> +<translation id="6637585982786704944">Apper og nettsteder du gir tillatelse, får tilgang til kontoinformasjonen de trenger for å fungere som de skal. + + Hvis du ikke vil legge til noen konto, kan du logge på som gjest eller åpne et inkognitovindu. + + Du kan gå til Innstillinger -> Google-kontoer for å se og administrere alle kontoer.</translation> <translation id="6639554308659482635">SQLite-minne</translation> <translation id="6641138807883536517">Det tilfeldig genererte sikker modul-passordet er ikke tilgjengelig. Dette er vanlig etter en Powerwash.</translation> <translation id="6643016212128521049">Tøm</translation> @@ -3905,6 +3916,7 @@ <translation id="6957231940976260713">Tjenestenavn</translation> <translation id="696203921837389374">Aktivér synkronisering via mobildata</translation> <translation id="6964390816189577014">Helt</translation> +<translation id="6964760285928603117">Fjern fra gruppen</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Port</translation> <translation id="6965978654500191972">Enhet</translation> @@ -4014,6 +4026,7 @@ <translation id="7109543803214225826">Snarveien er fjernet</translation> <translation id="7113502843173351041">se e-postadressen din</translation> <translation id="7114054701490058191">Passordene samsvarer ikke</translation> +<translation id="7114648273807173152">For å bruke Smart Lock til å logge på Google-kontoen din, gå til Innstillinger > Tilkoblede enheter > Telefonen din > Smart Lock.</translation> <translation id="7117228822971127758">Prøv igjen senere</translation> <translation id="7117247127439884114">Logg på igjen</translation> <translation id="711840821796638741">Vis administrerte bokmerker</translation> @@ -4169,6 +4182,7 @@ <translation id="7348093485538360975">Skjermtastatur</translation> <translation id="7352651011704765696">Noe gikk galt</translation> <translation id="735361434055555355">Installerer Linux ...</translation> +<translation id="7353887511974462734">Legg til i en eksisterende gruppe</translation> <translation id="735745346212279324">VPN frakoblet</translation> <translation id="7359359531237882347">Kopierer <ph name="NUMBER_OF_ITEMS" /> elementer …</translation> <translation id="7359588939039777303">Annonser er blokkert.</translation> @@ -4231,7 +4245,6 @@ <translation id="7456847797759667638">Åpne sted</translation> <translation id="7461924472993315131">Fest</translation> <translation id="7463006580194749499">Legg til person</translation> -<translation id="7464902436585505072">Stemmemodell for «Ok Google»</translation> <translation id="7465778193084373987">Nettadresse for tilbakekalling av Netscape-sertifikat</translation> <translation id="7469894403370665791">Koble til dette nettverket automatisk</translation> <translation id="747114903913869239">Feil: Kan ikke avkode etternavnet</translation> @@ -4799,6 +4812,7 @@ <translation id="827097179112817503">Vis startsideknapp</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 bokmerke er slettet}other{# bokmerker er slettet}}</translation> <translation id="8272443605911821513">Administrer utvidelsene dine ved å klikke på Utvidelser i Flere verktøy-menyen.</translation> +<translation id="8272966760965438857">Administrer Google-kontoene dine på ett sted</translation> <translation id="8274332263553132018">Cast en fil</translation> <translation id="8274924778568117936">Du må ikke slå av eller lukke <ph name="DEVICE_TYPE" />-enheten din før oppdateringen er ferdig. <ph name="DEVICE_TYPE" />-enheten starter på nytt når installasjonen er ferdig.</translation> <translation id="8275038454117074363">Importer</translation> @@ -5185,6 +5199,7 @@ <translation id="8883847527783433352">Synkroniser til en annen konto</translation> <translation id="8885197664446363138">Smart Lock er utilgjengelig</translation> <translation id="88870264962436283">Bruk Touch ID med <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Appen åpnes når oppgraderingen er ferdig. Oppgraderinger kan ta noen minutter.</translation> <translation id="8888432776533519951">Farge:</translation> <translation id="8890516388109605451">Kilder</translation> <translation id="8892168913673237979">Alt er klart!</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb index 9561b56..152e856 100644 --- a/chrome/app/resources/generated_resources_pl.xtb +++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -518,7 +518,6 @@ <translation id="175772926354468439">Włącz motyw</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Wyświetl w Chrome Web Store</translation> -<translation id="1761588866118490543">Model głosu</translation> <translation id="176193854664720708">Czytnik linii papilarnych znajduje się na przycisku zasilania. Przyłóż do niego dowolny palec.</translation> <translation id="1763046204212875858">Utwórz skróty do aplikacji</translation> <translation id="1763108912552529023">Odkrywaj dalej</translation> @@ -3167,7 +3166,6 @@ <translation id="5804241973901381774">Uprawnienia</translation> <translation id="5805697420284793859">Menedżer okien</translation> <translation id="580571955903695899">Uporządkuj według tytułu</translation> -<translation id="5806795763657948556">Więcej celów podróży</translation> <translation id="5811750797187914944">Wszystko gotowe</translation> <translation id="5814126672212206791">Typ połączenia</translation> <translation id="5815645614496570556">Adres X.400</translation> @@ -4254,7 +4252,6 @@ <translation id="7456847797759667638">Otwórz lokalizację...</translation> <translation id="7461924472993315131">Przypnij</translation> <translation id="7463006580194749499">Dodaj osobę</translation> -<translation id="7464902436585505072">Model głosu „OK Google”</translation> <translation id="7465778193084373987">Adres URL odwołania certyfikatu firmy Netscape</translation> <translation id="7469894403370665791">Automatycznie łącz się z tą siecią</translation> <translation id="747114903913869239">Błąd: nie można zdekodować rozszerzenia</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb index afaa206..c31c924 100644 --- a/chrome/app/resources/generated_resources_pt-BR.xtb +++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Cursor grande do mouse</translation> <translation id="1538729222189715449">Abrindo arquivos do Linux…</translation> <translation id="1540605929960647700">Ativar modo de demonstração</translation> +<translation id="1541396123399225659">Adicionar a um novo grupo</translation> <translation id="1542514202066550870">Esta guia está apresentando conteúdo de RV em um headset.</translation> <translation id="1543284117603151572">Importados do Edge</translation> <translation id="1545177026077493356">Modo de quiosque automático</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Formatando...</translation> <translation id="159359590073980872">Cache de imagem</translation> <translation id="1593926297800505364">Salvar forma de pagamento</translation> +<translation id="1595492813686795610">O Linux está sendo atualizado</translation> <translation id="1598233202702788831">As atualizações foram desativadas pelo seu administrador.</translation> <translation id="1600857548979126453">Acessar back-end do depurador de página</translation> <translation id="1601560923496285236">Aplicar</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Ativar tema</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Ver na Chrome Web Store</translation> -<translation id="1761588866118490543">Modelo de voz</translation> <translation id="176193854664720708">O sensor de impressão digital fica no botão liga/desliga. Toque levemente com qualquer dedo.</translation> <translation id="1763046204212875858">Criar atalhos para aplicativos</translation> <translation id="1763108912552529023">Continuar explorando</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">Imprimir utilizando caixa de diálogo de sistema... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Perguntar antes de enviar (recomendado)</translation> <translation id="2384436799579181135">Ocorreu um erro. Verifique sua impressora e tente novamente.</translation> +<translation id="2386926718981642523">Acessar seu Assistente sempre que você disser "Ok Google"</translation> <translation id="2387458720915042159">Tipo de conexão proxy</translation> <translation id="2391419135980381625">Fonte padrão</translation> <translation id="2391762656119864333">Revogar</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> não pôde se conectar a <ph name="NETWORK_ID" />. Selecione outra rede ou tente novamente.</translation> <translation id="2553440850688409052">Ocultar este plug-in</translation> <translation id="2554553592469060349">O arquivo selecionado é muito grande (tamanho máximo: 3 MB).</translation> +<translation id="255747371423522804">Adicionar a um grupo existente</translation> <translation id="2558896001721082624">Sempre mostrar as opções de acessibilidade no menu do sistema</translation> <translation id="2562685439590298522">Docs</translation> <translation id="2562743677925229011">Não conectado a <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">&Refazer</translation> <translation id="2972642118232180842">Executar apenas conteúdos importantes (recomendado)</translation> <translation id="2973324205039581528">Desativar som do site</translation> +<translation id="2977480621796371840">Remover do grupo</translation> <translation id="2979639724566107830">Abrir em uma nova janela</translation> <translation id="2981113813906970160">Mostrar cursor grande do mouse</translation> <translation id="2982970937345031">Enviar feedback anonimamente</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Separador</translation> <translation id="3389312115541230716">Clique com o botão direito do mouse no ícone <ph name="SMALL_PRODUCT_LOGO" /> na barra de tarefas</translation> +<translation id="3393352139658145068">Ativar o Assistente quando alguém disser “Ok Google”. Para economizar bateria, a hotword “Ok Google” só é ativada quando o dispositivo está conectado a uma fonte de energia.</translation> <translation id="3396800784455899911">Ao clicar no botão "Aceitar e concluir", você aceita o processo descrito acima para esses serviços do Google.</translation> <translation id="3399432415385675819">As notificações serão desativadas</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3168,6 +3173,7 @@ <translation id="5816434091619127343">As alterações solicitadas inutilizariam a impressora.</translation> <translation id="5817918615728894473">Parear</translation> <translation id="5821565227679781414">Criar atalho</translation> +<translation id="5825412242012995131">Ativado (recomendado)</translation> <translation id="5826507051599432481">Nome comum (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Imprimindo...</translation> @@ -3713,6 +3719,11 @@ <translation id="6629841649550503054">Backup completo para o <ph name="BEGIN_LINK" />Google Drive!<ph name="END_LINK" /></translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> deseja acesso permanente a um certificado para autenticar-se no seu nome.</translation> <translation id="6635956300022133031">Selecionar e personalizar as vozes da conversão de texto em voz</translation> +<translation id="6637585982786704944">Apps e sites que têm sua permissão podem acessar as informações da conta necessárias para o funcionamento adequado. + + Se você não quiser adicionar uma conta, faça login como convidado ou abra uma janela anônima para navegar na Web. + + Acesse Configurações -> Contas do Google para ver e gerenciar todas as contas.</translation> <translation id="6639554308659482635">Memória SQLite</translation> <translation id="6641138807883536517">A senha do módulo de segurança gerada aleatoriamente não está disponível. Isso é normal após um Powerwash.</translation> <translation id="6643016212128521049">Limpar</translation> @@ -3914,6 +3925,7 @@ <translation id="6957231940976260713">Nome do serviço</translation> <translation id="696203921837389374">Ativar a sincronização de dados móveis</translation> <translation id="6964390816189577014">Hero</translation> +<translation id="6964760285928603117">Remover do grupo</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Porta</translation> <translation id="6965978654500191972">Dispositivo</translation> @@ -4023,6 +4035,7 @@ <translation id="7109543803214225826">Atalho removido</translation> <translation id="7113502843173351041">Saiba seu endereço de e-mail</translation> <translation id="7114054701490058191">As senhas não correspondem</translation> +<translation id="7114648273807173152">Para usar o Smart Lock para fazer login na sua Conta do Google, acesse Config. > Dispositivos conectados > Seu smartphone > Smart Lock.</translation> <translation id="7117228822971127758">Tente novamente mais tarde</translation> <translation id="7117247127439884114">Fazer login novamente...</translation> <translation id="711840821796638741">Mostrar favoritos gerenciados</translation> @@ -4178,6 +4191,7 @@ <translation id="7348093485538360975">Teclado virtual</translation> <translation id="7352651011704765696">Algo deu errado</translation> <translation id="735361434055555355">Instalando o Linux…</translation> +<translation id="7353887511974462734">Adicionar a um grupo existente</translation> <translation id="735745346212279324">VPN desconectada</translation> <translation id="7359359531237882347">Copiando <ph name="NUMBER_OF_ITEMS" /> itens…</translation> <translation id="7359588939039777303">Anúncios bloqueados.</translation> @@ -4240,7 +4254,6 @@ <translation id="7456847797759667638">Abrir local...</translation> <translation id="7461924472993315131">Fixar</translation> <translation id="7463006580194749499">Adicionar pessoa</translation> -<translation id="7464902436585505072">Modelo de voz "Ok Google"</translation> <translation id="7465778193084373987">URL da revogação do certificado do Netscape</translation> <translation id="7469894403370665791">Conectar-se automaticamente a esta rede</translation> <translation id="747114903913869239">Erro: Não foi possível decodificar a extensão</translation> @@ -4810,6 +4823,7 @@ <translation id="827097179112817503">Mostrar botão "Página inicial"</translation> <translation id="8271246892936492311">{COUNT,plural, =1{ favorito excluído}one{# favorito excluído}other{# favoritos excluídos}}</translation> <translation id="8272443605911821513">Gerencie suas extensões clicando em "Extensões" no menu "Mais ferramentas".</translation> +<translation id="8272966760965438857">Gerencie suas Contas do Google em um só lugar</translation> <translation id="8274332263553132018">Transmitir arquivo</translation> <translation id="8274924778568117936">Não desligue ou feche seu <ph name="DEVICE_TYPE" /> até que a atualização termine. O <ph name="DEVICE_TYPE" /> será reiniciado depois que a instalação for concluída.</translation> <translation id="8275038454117074363">Importar</translation> @@ -5197,6 +5211,7 @@ <translation id="8883847527783433352">Sincronizar com outra conta</translation> <translation id="8885197664446363138">O Smart Lock não está disponível</translation> <translation id="88870264962436283">Usar Touch ID com <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">O app será aberto após a conclusão do upgrade. Os upgrades podem levar alguns minutos.</translation> <translation id="8888432776533519951">Cor:</translation> <translation id="8890516388109605451">Fontes</translation> <translation id="8892168913673237979">Tudo pronto!</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb index fa7f0af..48b964e 100644 --- a/chrome/app/resources/generated_resources_pt-PT.xtb +++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -518,7 +518,6 @@ <translation id="175772926354468439">Ativar tema</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Ver na Web Store do Chrome</translation> -<translation id="1761588866118490543">Modelo de voz</translation> <translation id="176193854664720708">O sensor de impressões digitais está no botão ligar/desligar. Toque levemente no mesmo com qualquer dedo.</translation> <translation id="1763046204212875858">Criar atalhos da aplicação</translation> <translation id="1763108912552529023">Continuar a explorar</translation> @@ -3168,7 +3167,6 @@ <translation id="5804241973901381774">Permissões</translation> <translation id="5805697420284793859">Gestor de janelas</translation> <translation id="580571955903695899">Reordenar por título</translation> -<translation id="5806795763657948556">Mais destinos</translation> <translation id="5811750797187914944">Pronto</translation> <translation id="5814126672212206791">Tipo de ligação</translation> <translation id="5815645614496570556">Endereço X.400</translation> @@ -4255,7 +4253,6 @@ <translation id="7456847797759667638">Abrir localização...</translation> <translation id="7461924472993315131">Fixar</translation> <translation id="7463006580194749499">Adicionar pessoa</translation> -<translation id="7464902436585505072">Modelo de voz "Ok Google"</translation> <translation id="7465778193084373987">URL de revogação do certificado Netscape</translation> <translation id="7469894403370665791">Ligar automaticamente a esta rede</translation> <translation id="747114903913869239">Erro: não foi possível descodificar a extensão</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index 94ddaa6..0cdd6a21 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Cursor de mouse mare</translation> <translation id="1538729222189715449">Se deschid fișierele Linux...</translation> <translation id="1540605929960647700">Activează modul demonstrativ</translation> +<translation id="1541396123399225659">Adaugă într-un grup nou</translation> <translation id="1542514202066550870">Această filă prezintă conținut RV unui vizualizator.</translation> <translation id="1543284117603151572">Importate din Edge</translation> <translation id="1545177026077493356">Mod chioșc automat</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Se formatează...</translation> <translation id="159359590073980872">Memorie cache de imagini</translation> <translation id="1593926297800505364">Salvează metoda de plată</translation> +<translation id="1595492813686795610">Linux trece la versiunea superioară</translation> <translation id="1598233202702788831">Actualizările sunt dezactivate de administrator.</translation> <translation id="1600857548979126453">Accesează procesul de fundal al depanatorului de pagină</translation> <translation id="1601560923496285236">Aplicați</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Activați tema</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Vezi în Magazinul web Chrome</translation> -<translation id="1761588866118490543">Model vocal</translation> <translation id="176193854664720708">Senzorul de amprentă digitală se află în butonul de pornire. Atinge-l ușor cu oricare deget.</translation> <translation id="1763046204212875858">Creează comenzi rapide pentru aplicație</translation> <translation id="1763108912552529023">Explorați în continuare</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">Printați utilizând caseta de dialog a sistemului... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Solicită permisiunea înainte de trimitere (recomandat)</translation> <translation id="2384436799579181135">A apărut o eroare. Verifică imprimanta și încearcă din nou.</translation> +<translation id="2386926718981642523">Accesează Asistentul oricând rostești „Ok Google”</translation> <translation id="2387458720915042159">Tip de conexiune prin proxy</translation> <translation id="2391419135980381625">Font standard</translation> <translation id="2391762656119864333">Revocați</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> nu s-a putut conecta la <ph name="NETWORK_ID" />. Selectează altă rețea sau încearcă din nou.</translation> <translation id="2553440850688409052">Ascunde acest plugin</translation> <translation id="2554553592469060349">Fișierul selectat este prea mare (dimensiune maximă: 3 MB).</translation> +<translation id="255747371423522804">Adaugă în grupul existent</translation> <translation id="2558896001721082624">Afișează mereu opțiunile de accesibilitate în meniul de sistem</translation> <translation id="2562685439590298522">Documente</translation> <translation id="2562743677925229011">Nu sunteți conectat(ă) la <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">&Repetă</translation> <translation id="2972642118232180842">Rulează numai conținutul important (recomandat)</translation> <translation id="2973324205039581528">Dezactivează sunetul pentru site</translation> +<translation id="2977480621796371840">Elimină din grup</translation> <translation id="2979639724566107830">Deschide într-o fereastră nouă</translation> <translation id="2981113813906970160">Afișați cursorul de mouse mare</translation> <translation id="2982970937345031">Raportează anonim</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Separator</translation> <translation id="3389312115541230716">Dă clic dreapta pe pictograma <ph name="SMALL_PRODUCT_LOGO" /> din bara de activități</translation> +<translation id="3393352139658145068">Activează Asistentul când cineva spune „Ok Google”. Pentru a economisi bateria, „Ok Google” este activat doar când dispozitivul este conectat la o sursă de alimentare.</translation> <translation id="3396800784455899911">Dacă dai clic pe butonul „Acceptă și continuă” înseamnă că ești de acord cu procesarea descrisă mai sus pentru aceste servicii Google.</translation> <translation id="3399432415385675819">Notificările vor fi dezactivate</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3167,6 +3172,7 @@ <translation id="5816434091619127343">Modificările solicitate ar face imprimanta inutilizabilă.</translation> <translation id="5817918615728894473">Asociază</translation> <translation id="5821565227679781414">Creați o comandă rapidă</translation> +<translation id="5825412242012995131">Activat (recomandat)</translation> <translation id="5826507051599432481">Nume comun (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Se printează...</translation> @@ -3711,6 +3717,11 @@ <translation id="6629841649550503054">Toate fișierele cu backup pe <ph name="BEGIN_LINK" />Google Drive!<ph name="END_LINK" /></translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> dorește acces permanent la un certificat pentru a se autentifica în numele tău.</translation> <translation id="6635956300022133031">Selectează și personalizează vocile pentru redarea vocală a textului</translation> +<translation id="6637585982786704944">Aplicațiile și site-urile care au permisiunea ta pot accesa informațiile despre cont de care au nevoie pentru a funcționa corect. + + Dacă nu dorești să adaugi un cont, conectează-te ca invitat sau deschide o fereastră incognito pentru a naviga pe web. + + Poți accesa Setări -> Conturi Google ca să vezi și să gestionezi toate conturile.</translation> <translation id="6639554308659482635">Memorie SQLite</translation> <translation id="6641138807883536517">Parola generată aleatoriu pentru modulul securizat nu este disponibilă. Acest lucru este normal după utilizarea Powerwash.</translation> <translation id="6643016212128521049">Ștergeți</translation> @@ -3912,6 +3923,7 @@ <translation id="6957231940976260713">Nume serviciu</translation> <translation id="696203921837389374">Activează sincronizarea prin date mobile</translation> <translation id="6964390816189577014">Erou</translation> +<translation id="6964760285928603117">Elimină din grup</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Port</translation> <translation id="6965978654500191972">Dispozitiv</translation> @@ -4021,6 +4033,7 @@ <translation id="7109543803214225826">Comanda rapidă a fost eliminată</translation> <translation id="7113502843173351041">Vede adresa dvs. de e-mail</translation> <translation id="7114054701490058191">Parolele nu corespund</translation> +<translation id="7114648273807173152">Pentru a folosi Smart Lock ca să te conectezi la Contul Google, accesează Setări > Dispozitive conectate > Telefon > Smart Lock.</translation> <translation id="7117228822971127758">Încearcă din nou mai târziu</translation> <translation id="7117247127439884114">Conectați-vă din nou...</translation> <translation id="711840821796638741">Vezi marcajele gestionate</translation> @@ -4176,6 +4189,7 @@ <translation id="7348093485538360975">Tastatură pe ecran</translation> <translation id="7352651011704765696">A apărut o eroare</translation> <translation id="735361434055555355">Se instalează Linux...</translation> +<translation id="7353887511974462734">Adaugă în grupul existent</translation> <translation id="735745346212279324">Rețea VPN deconectată</translation> <translation id="7359359531237882347">Se copiază <ph name="NUMBER_OF_ITEMS" /> elemente.</translation> <translation id="7359588939039777303">Anunțurile au fost blocate.</translation> @@ -4238,7 +4252,6 @@ <translation id="7456847797759667638">Deschide o locație...</translation> <translation id="7461924472993315131">PIN</translation> <translation id="7463006580194749499">Adăugați o persoană</translation> -<translation id="7464902436585505072">Model vocal „OK Google”</translation> <translation id="7465778193084373987">Adresă URL de revocare a certificatului Netscape</translation> <translation id="7469894403370665791">Conectează-te automat la această rețea</translation> <translation id="747114903913869239">Eroare: extensia nu poate fi decodificată</translation> @@ -4808,6 +4821,7 @@ <translation id="827097179112817503">Afișează butonul Pagina principală</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 marcaj șters}few{# marcaje șterse}other{# de marcaje șterse}}</translation> <translation id="8272443605911821513">Gestionați extensiile dând clic pe Extensii în meniul „Mai multe instrumente”.</translation> +<translation id="8272966760965438857">Gestionează Conturile Google într-un singur loc</translation> <translation id="8274332263553132018">Proiectează fișierul</translation> <translation id="8274924778568117936">Nu închide și nu opri dispozitivul <ph name="DEVICE_TYPE" /> înainte să se finalizeze actualizarea. Dispozitivul <ph name="DEVICE_TYPE" /> va reporni după ce se finalizează instalarea.</translation> <translation id="8275038454117074363">Importă</translation> @@ -5194,6 +5208,7 @@ <translation id="8883847527783433352">Sincronizează cu alt cont</translation> <translation id="8885197664446363138">Funcția Smart Lock nu este disponibilă</translation> <translation id="88870264962436283">Folosește Touch ID cu <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Aplicația ta se va deschide când se încheie upgrade-ul. Upgrade-urile pot dura câteva minute.</translation> <translation id="8888432776533519951">Culoare:</translation> <translation id="8890516388109605451">Surse</translation> <translation id="8892168913673237979">Totul este pregătit!</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb index a66eeee..411a765 100644 --- a/chrome/app/resources/generated_resources_ru.xtb +++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -366,6 +366,7 @@ <translation id="15373452373711364">Большой курсор мыши</translation> <translation id="1538729222189715449">Файлы Linux открываются…</translation> <translation id="1540605929960647700">Демонстрационный режим</translation> +<translation id="1541396123399225659">Добавить в новую группу</translation> <translation id="1542514202066550870">VR-контент с этой вкладки сейчас транслируется на очки.</translation> <translation id="1543284117603151572">Импортированные из Microsoft Edge</translation> <translation id="1545177026077493356">Автоматическое включение режима киоска</translation> @@ -404,6 +405,7 @@ <translation id="1593594475886691512">Форматирование...</translation> <translation id="159359590073980872">Кеш изображений</translation> <translation id="1593926297800505364">Сохранить способ оплаты</translation> +<translation id="1595492813686795610">Обновление Linux…</translation> <translation id="1598233202702788831">Функция обновления отключена администратором.</translation> <translation id="1600857548979126453">Доступ к работе отладчика страниц</translation> <translation id="1601560923496285236">Применить</translation> @@ -515,7 +517,6 @@ <translation id="175772926354468439">Включить тему</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Перейти в Интернет-магазин Chrome</translation> -<translation id="1761588866118490543">Образец голоса</translation> <translation id="176193854664720708">Сканер отпечатков пальцев встроен в кнопку питания. Несильно нажмите на нее любым пальцем.</translation> <translation id="1763046204212875858">Создание ярлыков приложений</translation> <translation id="1763108912552529023">Дополнительные сведения</translation> @@ -937,6 +938,7 @@ <translation id="2379281330731083556">Печатать с помощью системного диалогового окна <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Спрашивать разрешение перед отправкой (рекомендуется)</translation> <translation id="2384436799579181135">Произошла ошибка. Проверьте принтер и повторите попытку.</translation> +<translation id="2386926718981642523">Чтобы обратиться к Ассистенту, скажите "Окей, Google"</translation> <translation id="2387458720915042159">Тип подключения через прокси-сервер</translation> <translation id="2391419135980381625">Стандартный шрифт</translation> <translation id="2391762656119864333">Отменить</translation> @@ -1041,6 +1043,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> не удалось подключиться к <ph name="NETWORK_ID" />. Выберите другую сеть или повторите попытку.</translation> <translation id="2553440850688409052">Скрыть подключаемый модуль</translation> <translation id="2554553592469060349">Выбранный файл слишком большой (максимальный размер: 3 МБ).</translation> +<translation id="255747371423522804">Добавить в существующую группу</translation> <translation id="2558896001721082624">Показывать специальные возможности в системном меню</translation> <translation id="2562685439590298522">Документы</translation> <translation id="2562743677925229011">Не выполнен вход в <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">&Повторить</translation> <translation id="2972642118232180842">Запускать только важный контент (рекомендуется)</translation> <translation id="2973324205039581528">Отключить звук на сайте</translation> +<translation id="2977480621796371840">Удалить из группы</translation> <translation id="2979639724566107830">Открыть в новом окне</translation> <translation id="2981113813906970160">Показывать большой курсор мыши</translation> <translation id="2982970937345031">Отправить анонимный отзыв</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" /> %</translation> <translation id="338583716107319301">Разделитель</translation> <translation id="3389312115541230716">Правой кнопкой мыши выберите <ph name="SMALL_PRODUCT_LOGO" /> на панели задач</translation> +<translation id="3393352139658145068">Запускать Ассистента, когда кто-то произносит фразу "Окей, Google". Для экономии заряда батареи эта функция будет активна, только когда устройство подключено к источнику питания.</translation> <translation id="3396800784455899911">Нажимая кнопку "Принять условия и продолжить", вы соглашаетесь с Условиями использования сервисов Google, описанными выше.</translation> <translation id="3399432415385675819">Уведомления будут отключены</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3167,6 +3172,7 @@ <translation id="5816434091619127343">Если применить запрошенные изменения, принтер станет непригодным для использования.</translation> <translation id="5817918615728894473">Подключить</translation> <translation id="5821565227679781414">Создать ярлык</translation> +<translation id="5825412242012995131">Вкл. (рекомендуется)</translation> <translation id="5826507051599432481">Общее имя (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Печать...</translation> @@ -3711,6 +3717,11 @@ <translation id="6629841649550503054">Данные сохранены на <ph name="BEGIN_LINK" />Google Диске<ph name="END_LINK" /></translation> <translation id="6630752851777525409">Расширение "<ph name="EXTENSION_NAME" />" запрашивает постоянный доступ к сертификату для прохождения аутентификации от вашего имени.</translation> <translation id="6635956300022133031">Выбор и настройка голоса</translation> +<translation id="6637585982786704944">Приложения и сайты, которым вы предоставили соответствующие разрешения, могут получать доступ к данным аккаунта, необходимым для корректной работы. + + Если вы не хотите добавлять аккаунт, используйте для просмотра веб-страниц гостевой режим или окно в режиме инкогнито. + + Чтобы посмотреть список аккаунтов и управлять ими, нажмите "Настройки > Аккаунты Google".</translation> <translation id="6639554308659482635">Память SQLite</translation> <translation id="6641138807883536517">Случайно сгенерированный пароль безопасного модуля недоступен после выполнения функции Powerwash.</translation> <translation id="6643016212128521049">Очистить</translation> @@ -3912,6 +3923,7 @@ <translation id="6957231940976260713">Название службы</translation> <translation id="696203921837389374">Синхронизировать по мобильной сети</translation> <translation id="6964390816189577014">Герой</translation> +<translation id="6964760285928603117">Удалить из группы</translation> <translation id="6965382102122355670">ОК</translation> <translation id="6965648386495488594">Порт</translation> <translation id="6965978654500191972">Устройство</translation> @@ -4021,6 +4033,7 @@ <translation id="7109543803214225826">Ярлык удален</translation> <translation id="7113502843173351041">Доступ к вашему адресу электронной почты</translation> <translation id="7114054701490058191">Пароли не совпадают</translation> +<translation id="7114648273807173152">Чтобы использовать Smart Lock для входа в аккаунт Google, нажмите "Настройки > Подключенные устройства > Телефон > Smart Lock".</translation> <translation id="7117228822971127758">Повторите попытку позже.</translation> <translation id="7117247127439884114">Войти снова</translation> <translation id="711840821796638741">Показать управляемые закладки</translation> @@ -4176,6 +4189,7 @@ <translation id="7348093485538360975">Экранная клавиатура</translation> <translation id="7352651011704765696">Ошибка</translation> <translation id="735361434055555355">Установка Linux...</translation> +<translation id="7353887511974462734">Добавить в существующую группу</translation> <translation id="735745346212279324">VPN-соединение прервано</translation> <translation id="7359359531237882347">Копирование объектов (<ph name="NUMBER_OF_ITEMS" />)…</translation> <translation id="7359588939039777303">Реклама заблокирована.</translation> @@ -4238,7 +4252,6 @@ <translation id="7456847797759667638">Открыть адрес...</translation> <translation id="7461924472993315131">Закрепить</translation> <translation id="7463006580194749499">Добавить пользователя</translation> -<translation id="7464902436585505072">Образец голоса с командой "Окей, Google"</translation> <translation id="7465778193084373987">URL отзыва сертификатов Netscape</translation> <translation id="7469894403370665791">Автоматически подключаться к этой сети</translation> <translation id="747114903913869239">Ошибка: не удается расшифровать расширение</translation> @@ -4807,6 +4820,7 @@ <translation id="827097179112817503">Показывать кнопку "Главная страница"</translation> <translation id="8271246892936492311">{COUNT,plural, =1{Удалена 1 закладка}one{Удалена # закладка}few{Удалено # закладки}many{Удалено # закладок}other{Удалено # закладки}}</translation> <translation id="8272443605911821513">Управляйте расширениями в соответствующем разделе в меню дополнительных инструментов.</translation> +<translation id="8272966760965438857">Централизованно управляйте своими аккаунтами Google</translation> <translation id="8274332263553132018">Файл для трансляции</translation> <translation id="8274924778568117936">Не выключайте и не закрывайте <ph name="DEVICE_TYPE" />, выполняется обновление. После завершения установки <ph name="DEVICE_TYPE" /> перезагрузится.</translation> <translation id="8275038454117074363">Импорт</translation> @@ -5193,6 +5207,7 @@ <translation id="8883847527783433352">Синхронизировать с другим аккаунтом</translation> <translation id="8885197664446363138">Функция Smart Lock недоступна</translation> <translation id="88870264962436283"><ph name="APP_NAME" />: вход с помощью Touch ID</translation> +<translation id="8888253246822647887">Приложение откроется, когда завершится обновление. Это может занять несколько минут.</translation> <translation id="8888432776533519951">Цвет:</translation> <translation id="8890516388109605451">Источники</translation> <translation id="8892168913673237979">Все готово!</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb index 0045881..0489810 100644 --- a/chrome/app/resources/generated_resources_sk.xtb +++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -518,7 +518,6 @@ <translation id="175772926354468439">Povoliť motív</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Zobraziť v Internetovom obchode Chrome</translation> -<translation id="1761588866118490543">Hlasový model</translation> <translation id="176193854664720708">Senzor odtlačkov prstov je vo vypínači. Dotknite sa ho ľubovoľným prstom.</translation> <translation id="1763046204212875858">Vytvoriť odkazy na aplikáciu</translation> <translation id="1763108912552529023">Skúmať</translation> @@ -3165,7 +3164,6 @@ <translation id="5804241973901381774">Povolenia</translation> <translation id="5805697420284793859">Správca okien</translation> <translation id="580571955903695899">Zoradiť podľa názvu</translation> -<translation id="5806795763657948556">Ďalšie cieľové tlačiarne</translation> <translation id="5811750797187914944">Hotovo</translation> <translation id="5814126672212206791">Typ pripojenia</translation> <translation id="5815645614496570556">Adresa X.400</translation> @@ -4252,7 +4250,6 @@ <translation id="7456847797759667638">Otvoriť umiestnenie...</translation> <translation id="7461924472993315131">Pripnúť</translation> <translation id="7463006580194749499">Pridať osobu</translation> -<translation id="7464902436585505072">Hlasový model „Ok Google“</translation> <translation id="7465778193084373987">Netscape – webová adresa pre zrušenie certifikátu</translation> <translation id="7469894403370665791">Automaticky sa pripojiť k tejto sieti</translation> <translation id="747114903913869239">Chyba: Nepodarilo sa dekódovať rozšírenie</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index 2b7f052..531471b 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Velik miškin kazalec</translation> <translation id="1538729222189715449">Odpiranje datotek za Linux ...</translation> <translation id="1540605929960647700">Omogočanje predstavitvenega načina</translation> +<translation id="1541396123399225659">Dodajanje novi skupini</translation> <translation id="1542514202066550870">Ta zavihek predvaja vsebino VR v slušalkah z mikrofonom.</translation> <translation id="1543284117603151572">Uvoženo iz brskalnika Edge</translation> <translation id="1545177026077493356">Samodejni način kiosk</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Formatiranje ...</translation> <translation id="159359590073980872">Predpomnilnik za slike</translation> <translation id="1593926297800505364">Shranjevanje plačilnega sredstva</translation> +<translation id="1595492813686795610">Poteka nadgradnja Linuxa</translation> <translation id="1598233202702788831">Skrbnik je onemogočil posodobitve.</translation> <translation id="1600857548979126453">Dostopajte do podsistema iskalnika napak na strani</translation> <translation id="1601560923496285236">Uporabi</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Omogoči temo</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Prikaži v Spletni trgovini Chrome</translation> -<translation id="1761588866118490543">Glasovni model</translation> <translation id="176193854664720708">Tipalo prstnih odtisov je v gumbu za vklop. Rahlo se ga dotaknite s poljubnim prstom.</translation> <translation id="1763046204212875858">Ustvari bližnjice do &programov ...</translation> <translation id="1763108912552529023">Nadaljujte raziskovanje</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">Tiskanje v pogovornem oknu sistema ... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Vprašaj pred pošiljanjem (priporočljivo)</translation> <translation id="2384436799579181135">Prišlo je do napake. Preverite tiskalnik in poskusite znova.</translation> +<translation id="2386926718981642523">Dostopajte do Pomočnika, kadar koli izgovorite »Ok Google«</translation> <translation id="2387458720915042159">Vrsta povezave strežnika proxy</translation> <translation id="2391419135980381625">Standardna pisava</translation> <translation id="2391762656119864333">Prekliči</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> ni uspel vzpostaviti povezave z omrežjem <ph name="NETWORK_ID" />. Izberite drugo omrežje ali poskusite znova.</translation> <translation id="2553440850688409052">Skrij ta vtičnik</translation> <translation id="2554553592469060349">Izbrana datoteka je prevelika (največja velikost: 3 MB).</translation> +<translation id="255747371423522804">Dodaj obstoječi skupini</translation> <translation id="2558896001721082624">Vedno pokaži možnosti funkcij za ljudi s posebnimi potrebami v sistemskem meniju</translation> <translation id="2562685439590298522">Google Dokumenti</translation> <translation id="2562743677925229011">Niste prijavljeni v <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">&Uveljavi</translation> <translation id="2972642118232180842">Zaženi samo pomembno vsebino (priporočeno)</translation> <translation id="2973324205039581528">Izklopi zvok spletnega mesta</translation> +<translation id="2977480621796371840">Odstrani iz skupine</translation> <translation id="2979639724566107830">Odpri v novem oknu</translation> <translation id="2981113813906970160">Pokaži velik miškin kazalec</translation> <translation id="2982970937345031">Anonimna prijava</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" /> %</translation> <translation id="338583716107319301">Ločilo</translation> <translation id="3389312115541230716">Z desnim miškinim gumbom kliknite ikono za <ph name="SMALL_PRODUCT_LOGO" /> v opravilni vrstici</translation> +<translation id="3393352139658145068">Aktiviranje Pomočnika, ko kdor koli izgovori »Ok Google«. Zaradi varčevanja z energijo akumulatorja je sprožilna beseda »Ok Google« vklopljena samo, ko je naprava priklopljena v vir napajanja.</translation> <translation id="3396800784455899911">Če kliknete gumb »Sprejmi in nadaljuj«, se strinjate z obdelavo, ki je opisana zgoraj za te Googlove storitve.</translation> <translation id="3399432415385675819">Obvestila bodo onemogočena</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3169,6 +3174,7 @@ <translation id="5816434091619127343">Če uveljavite zahtevane spremembe tiskalnika, bo ta neuporaben.</translation> <translation id="5817918615728894473">Seznani</translation> <translation id="5821565227679781414">Ustvari bližnjico</translation> +<translation id="5825412242012995131">Vklop (priporočeno)</translation> <translation id="5826507051599432481">Običajno ime (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Tiskanje ...</translation> @@ -3713,6 +3719,11 @@ <translation id="6629841649550503054">Vse varnostno kopirano v <ph name="BEGIN_LINK" />Google Drive!<ph name="END_LINK" /></translation> <translation id="6630752851777525409">Razširitev <ph name="EXTENSION_NAME" /> želi trajen dostop do potrdila za preverjanje svoje pristnosti v vašem imenu.</translation> <translation id="6635956300022133031">Izbira in prilagajanje glasov za pretvorbo besedila v govor</translation> +<translation id="6637585982786704944">Aplikacije in spletna mesta, ki imajo vaše dovoljenje, lahko dostopajo do podatkov o računu, ki jih potrebujejo za pravilno delovanje. + + Če ne želite dodati računa, se prijavite kot gost ali odprite okno za brskanje po spletu brez beleženja zgodovine. + + Vse računa si lahko ogledate in jih upravljate v »Nastavitve -> Računi za Google«.</translation> <translation id="6639554308659482635">Pomnilnik SQLite</translation> <translation id="6641138807883536517">Naključno ustvarjeno geslo za varni modul ni na voljo. To je običajno po izvedbi funkcije Powerwash.</translation> <translation id="6643016212128521049">Počisti</translation> @@ -3914,6 +3925,7 @@ <translation id="6957231940976260713">Ime storitve</translation> <translation id="696203921837389374">Omogoči sinhronizacijo prek prenosa podatkov v mobilnih omrežjih</translation> <translation id="6964390816189577014">Junak</translation> +<translation id="6964760285928603117">Odstranitev iz skupine</translation> <translation id="6965382102122355670">V redu</translation> <translation id="6965648386495488594">Vrata</translation> <translation id="6965978654500191972">Naprava</translation> @@ -4023,6 +4035,7 @@ <translation id="7109543803214225826">Bližnjica je bila odstranjena</translation> <translation id="7113502843173351041">Poznati morate svoj e-poštni naslov</translation> <translation id="7114054701490058191">Gesli se ne ujemata</translation> +<translation id="7114648273807173152">Če se želite v račun za Google prijaviti s funkcijo Smart Lock, odprite »Nastavitve > Povezane naprave > Vaš telefon > Smart Lock«.</translation> <translation id="7117228822971127758">Poskusite znova pozneje</translation> <translation id="7117247127439884114">Prijavite se znova ...</translation> <translation id="711840821796638741">Prikaz upravljanih zaznamkov</translation> @@ -4178,6 +4191,7 @@ <translation id="7348093485538360975">Zaslonska tipkovnica</translation> <translation id="7352651011704765696">Prišlo je do neznane težave</translation> <translation id="735361434055555355">Nameščanje Linuxa ...</translation> +<translation id="7353887511974462734">Dodajanje obstoječi skupini</translation> <translation id="735745346212279324">Povezava z navideznim zasebnim omrežjem je prekinjena</translation> <translation id="7359359531237882347">Kopiranje toliko elementov: <ph name="NUMBER_OF_ITEMS" /> …</translation> <translation id="7359588939039777303">Oglasi blokirani.</translation> @@ -4240,7 +4254,6 @@ <translation id="7456847797759667638">Odpri mesto ...</translation> <translation id="7461924472993315131">Pripni</translation> <translation id="7463006580194749499">Dodaj osebo</translation> -<translation id="7464902436585505072">Glasovni model »OK Google«</translation> <translation id="7465778193084373987">Spletni naslov ukinjenega Netscapeovega potrdila</translation> <translation id="7469894403370665791">Samodejno vzpostavi povezavo s tem omrežjem</translation> <translation id="747114903913869239">Napaka: Razširitve ni bilo mogoče dekodirati</translation> @@ -4810,6 +4823,7 @@ <translation id="827097179112817503">Pokaži gumb za domačo stran</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 zaznamek izbrisan}one{# zaznamek izbrisan}two{# zaznamka izbrisana}few{# zaznamki izbrisani}other{# zaznamkov izbrisanih}}</translation> <translation id="8272443605911821513">Razširitve lahko upravljate tako, da v meniju »Več orodij« kliknete »Razširitve«.</translation> +<translation id="8272966760965438857">Upravljanje računov za Google na enem mestu</translation> <translation id="8274332263553132018">Predvajanje datoteke</translation> <translation id="8274924778568117936">Ne izklopite ali zaprite naprave <ph name="DEVICE_TYPE" />, dokler se posodobitev ne konča. Naprava <ph name="DEVICE_TYPE" /> se bo po končani namestitvi znova zagnala.</translation> <translation id="8275038454117074363">Uvozi</translation> @@ -5196,6 +5210,7 @@ <translation id="8883847527783433352">Sinhroniziraj z drugim računom</translation> <translation id="8885197664446363138">Smart Lock ni na voljo</translation> <translation id="88870264962436283">Uporaba funkcije Touch ID v aplikaciji <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Aplikacija se bo odprla, ko bo nadgradnja dokončana. Nadgradnje lahko trajajo nekaj minut.</translation> <translation id="8888432776533519951">Barva:</translation> <translation id="8890516388109605451">Viri</translation> <translation id="8892168913673237979">Pripravljeni ste.</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index 522d00e..46baf884 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -364,6 +364,7 @@ <translation id="15373452373711364">Велики курсор</translation> <translation id="1538729222189715449">Отварају се Linux датотеке…</translation> <translation id="1540605929960647700">Омогућите режим демонстрације</translation> +<translation id="1541396123399225659">Додај у нову групу</translation> <translation id="1542514202066550870">ВР садржај ове картице приказује се преко хедсета.</translation> <translation id="1543284117603151572">Увезени из Edge-а</translation> <translation id="1545177026077493356">Аутоматски режим киоска</translation> @@ -402,6 +403,7 @@ <translation id="1593594475886691512">Форматирање...</translation> <translation id="159359590073980872">Кеш слике</translation> <translation id="1593926297800505364">Сачувајте начин плаћања</translation> +<translation id="1595492813686795610">Linux се надограђује</translation> <translation id="1598233202702788831">Администратор је онемогућио ажурирања.</translation> <translation id="1600857548979126453">Приступ позадинском механизму програма за отклањање грешака на страници</translation> <translation id="1601560923496285236">Примени</translation> @@ -513,7 +515,6 @@ <translation id="175772926354468439">Омогући тему</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Прикажи у Chrome веб-продавници</translation> -<translation id="1761588866118490543">Гласовни модел</translation> <translation id="176193854664720708">Сензор за отисак прста је у дугмету за напајање. Лагано га додирните било којим прстом.</translation> <translation id="1763046204212875858">Направите пречице за апликације</translation> <translation id="1763108912552529023">Настави са истраживањем</translation> @@ -935,6 +936,7 @@ <translation id="2379281330731083556">Штампај помоћу системског дијалога... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Питај пре слања (препоручује се)</translation> <translation id="2384436799579181135">Дошло је до грешке. Проверите штампач и пробајте поново.</translation> +<translation id="2386926718981642523">Приступајте Помоћнику сваки пут када кажете „Ок Google“</translation> <translation id="2387458720915042159">Тип везе са проксијем</translation> <translation id="2391419135980381625">Стандардни фонт</translation> <translation id="2391762656119864333">Опозови</translation> @@ -1040,6 +1042,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> није успео да се повеже са мрежом <ph name="NETWORK_ID" />. Изаберите другу мрежу или покушајте поново.</translation> <translation id="2553440850688409052">Сакриј овај додатак</translation> <translation id="2554553592469060349">Изабрана датотека је превелика (максимална величина: 3 MB).</translation> +<translation id="255747371423522804">Додајте у постојећу групу</translation> <translation id="2558896001721082624">Увек приказуј опције приступачности у системском менију</translation> <translation id="2562685439590298522">Документи</translation> <translation id="2562743677925229011">Нисте пријављени на <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1311,6 +1314,7 @@ <translation id="2972581237482394796">&Понови радњу</translation> <translation id="2972642118232180842">Покрећи само важан садржај (препоручено)</translation> <translation id="2973324205039581528">Искључи звук сајта</translation> +<translation id="2977480621796371840">Уклони из групе</translation> <translation id="2979639724566107830">Отворите у новом прозору</translation> <translation id="2981113813906970160">Прикажи велики курсор</translation> <translation id="2982970937345031">Пошаљи извештај анонимно</translation> @@ -1561,6 +1565,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Разделник</translation> <translation id="3389312115541230716">Кликните десним тастером на икону <ph name="SMALL_PRODUCT_LOGO" /> на траци задатака</translation> +<translation id="3393352139658145068">Помоћник се активира када неко каже „Ок Google“. Да бисте уштедели батерију, функција „Ок Google“ је укључена само када је уређај повезан са извором напајања.</translation> <translation id="3396800784455899911">Ако кликнете на дугме „Прихвати и настави“, прихватате горенаведену обраду за ове Google услуге.</translation> <translation id="3399432415385675819">Обавештења ће бити онемогућена</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3165,6 +3170,7 @@ <translation id="5816434091619127343">Тражене измене ће учинити штампач неупотребљивим.</translation> <translation id="5817918615728894473">Упари</translation> <translation id="5821565227679781414">Направи пречицу</translation> +<translation id="5825412242012995131">Укључено (препоручено)</translation> <translation id="5826507051599432481">Опште име (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Штампање...</translation> @@ -3709,6 +3715,11 @@ <translation id="6629841649550503054">Резервне копије свих датотека су направљене на <ph name="BEGIN_LINK" />Google диску!<ph name="END_LINK" /></translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> жели трајни приступ сертификату да би потврдио сопствену аутентичност у ваше име.</translation> <translation id="6635956300022133031">Изаберите и прилагодите гласове за претварање текста у говор</translation> +<translation id="6637585982786704944">Апликације и веб-сајтови који имају вашу дозволу могу да приступају информацијама о налогу које су им потребне за исправан рад. + + Ако не желите да додате налог, пријавите се као гост или отворите прозор без архивирања ради прегледања веба. + + Можете да одете на Подешавања -> Google налози да бисте видели све налоге и управљали њима.</translation> <translation id="6639554308659482635">SQLite меморија</translation> <translation id="6641138807883536517">Насумично генерисана лозинка за безбедносни модул није доступна. То је нормално после Powerwash-а.</translation> <translation id="6643016212128521049">Обриши</translation> @@ -3910,6 +3921,7 @@ <translation id="6957231940976260713">Назив услуге</translation> <translation id="696203921837389374">Омогући синхронизацију преко мобилне везе за пренос података</translation> <translation id="6964390816189577014">Херој</translation> +<translation id="6964760285928603117">Уклони из групе</translation> <translation id="6965382102122355670">Потврди</translation> <translation id="6965648386495488594">Порт</translation> <translation id="6965978654500191972">Уређај</translation> @@ -4019,6 +4031,7 @@ <translation id="7109543803214225826">Пречица је уклоњена</translation> <translation id="7113502843173351041">Откривање ваше имејл адресе</translation> <translation id="7114054701490058191">Лозинке се не подударају</translation> +<translation id="7114648273807173152">Да бисте користили Smart Lock за пријављивање на Google налог, идите на Подешавања > Повезани уређаји > Телефон > Smart Lock.</translation> <translation id="7117228822971127758">Пробајте поново касније</translation> <translation id="7117247127439884114">Пријави ме поново...</translation> <translation id="711840821796638741">Прикажи управљане обележиваче</translation> @@ -4174,6 +4187,7 @@ <translation id="7348093485538360975">Тастатура на екрану</translation> <translation id="7352651011704765696">Нешто није у реду</translation> <translation id="735361434055555355">Инсталира се Linux...</translation> +<translation id="7353887511974462734">Додајте у постојећу групу</translation> <translation id="735745346212279324">Веза са VPN-ом је прекинута</translation> <translation id="7359359531237882347">Копирају се ставке (<ph name="NUMBER_OF_ITEMS" />)...</translation> <translation id="7359588939039777303">Огласи су блокирани.</translation> @@ -4236,7 +4250,6 @@ <translation id="7456847797759667638">Отвори локацију...</translation> <translation id="7461924472993315131">Закачи</translation> <translation id="7463006580194749499">Додај особу</translation> -<translation id="7464902436585505072">Гласовни модел „Ок Google“</translation> <translation id="7465778193084373987">URL за опозив Netscape сертификата</translation> <translation id="7469894403370665791">Аутоматски се повезуј са овом мрежом</translation> <translation id="747114903913869239">Грешка: Није могуће дешифровати додатак</translation> @@ -4806,6 +4819,7 @@ <translation id="827097179112817503">Прикажи дугме за почетну страницу</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 обележивач је избрисан}one{# обележивач је избрисан}few{# обележивача су избрисана}other{# обележивача је избрисано}}</translation> <translation id="8272443605911821513">Управљајте додацима кликом на Додаци у менију „Још алатки“.</translation> +<translation id="8272966760965438857">Управљајте Google налозима на једном месту</translation> <translation id="8274332263553132018">Пребаците датотеку</translation> <translation id="8274924778568117936">Не искључујте и не затварајте <ph name="DEVICE_TYPE" /> док се ажурирање не заврши. <ph name="DEVICE_TYPE" /> ће се поново покренути када се инсталација заврши.</translation> <translation id="8275038454117074363">Увези</translation> @@ -5192,6 +5206,7 @@ <translation id="8883847527783433352">Синхронизујте са другим налогом</translation> <translation id="8885197664446363138">Smart Lock није доступно</translation> <translation id="88870264962436283">Користите Touch ID за апликацију <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Апликација ће се отворити када се надоградња заврши. Надоградње могу да трају неколико минута.</translation> <translation id="8888432776533519951">Боја:</translation> <translation id="8890516388109605451">Извори</translation> <translation id="8892168913673237979">Спремни сте!</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb index ae8f464..6653307 100644 --- a/chrome/app/resources/generated_resources_sv.xtb +++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Stor muspekare</translation> <translation id="1538729222189715449">Linux-filerna öppnas …</translation> <translation id="1540605929960647700">Aktivera demoläge</translation> +<translation id="1541396123399225659">Lägg till i ny grupp</translation> <translation id="1542514202066550870">På den här fliken visas VR-innehåll avsett för en VR-kikare.</translation> <translation id="1543284117603151572">Importerade från Edge</translation> <translation id="1545177026077493356">Automatiskt kioskläge</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Formaterar ...</translation> <translation id="159359590073980872">Cacheminne för bilder</translation> <translation id="1593926297800505364">Spara betalningsmetod</translation> +<translation id="1595492813686795610">Linux uppgraderas</translation> <translation id="1598233202702788831">Uppdateringar har inaktiverats av administratören.</translation> <translation id="1600857548979126453">Få åtkomst till serverdelen för felsökning av sida</translation> <translation id="1601560923496285236">Verkställ</translation> @@ -515,7 +517,6 @@ <translation id="175772926354468439">Aktivera tema</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Visa i Chrome Web Store</translation> -<translation id="1761588866118490543">Röstmodell</translation> <translation id="176193854664720708">Fingeravtryckssensorn sitter på strömbrytaren. Tryck lätt på den med ett finger.</translation> <translation id="1763046204212875858">Skapa programgenvägar</translation> <translation id="1763108912552529023">Fortsätt att utforska</translation> @@ -937,6 +938,7 @@ <translation id="2379281330731083556">Skriv ut via systemets dialogruta ... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Fråga innan något skickas (rekommenderas)</translation> <translation id="2384436799579181135">Ett fel uppstod. Kontrollera skrivaren och försök igen.</translation> +<translation id="2386926718981642523">Starta assistenten när du säger ”Ok Google”</translation> <translation id="2387458720915042159">Proxyanslutningstyp</translation> <translation id="2391419135980381625">Standardteckensnitt</translation> <translation id="2391762656119864333">Återkalla</translation> @@ -1042,6 +1044,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> kunde inte ansluta till <ph name="NETWORK_ID" />. Välj ett annat nätverk eller försök igen.</translation> <translation id="2553440850688409052">Dölj det här plugin-programmet</translation> <translation id="2554553592469060349">Den valda filen är för stor (största storlek: 3 MB).</translation> +<translation id="255747371423522804">Lägg till i befintlig grupp</translation> <translation id="2558896001721082624">Visa alltid tillgänglighetsalternativ i systemmenyn</translation> <translation id="2562685439590298522">Dokument</translation> <translation id="2562743677925229011">Inte inloggad i <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1314,6 +1317,7 @@ <translation id="2972581237482394796">&Upprepa</translation> <translation id="2972642118232180842">Kör bara viktigt innehåll (rekommenderas)</translation> <translation id="2973324205039581528">Stäng av webbplatsens ljud</translation> +<translation id="2977480621796371840">Ta bort från gruppen</translation> <translation id="2979639724566107830">Öppna i nytt fönster</translation> <translation id="2981113813906970160">Visa stor muspekare</translation> <translation id="2982970937345031">Rapportera anonymt</translation> @@ -1564,6 +1568,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" /> %</translation> <translation id="338583716107319301">Avgränsare</translation> <translation id="3389312115541230716">Högerklicka på ikonen för <ph name="SMALL_PRODUCT_LOGO" /> i aktivitetsfältet</translation> +<translation id="3393352139658145068">Aktivera assistenten när någon säger ”Ok Google”. För att spara batteri är ”Ok Google” bara aktiverat när enheten är ansluten till en extern strömkälla.</translation> <translation id="3396800784455899911">När du klickar på Godkänn och fortsätt samtycker du till att dessa tjänster från Google får bearbeta data enligt beskrivningen ovan.</translation> <translation id="3399432415385675819">Aviseringar inaktiveras</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3166,6 +3171,7 @@ <translation id="5816434091619127343">De begärda ändringarna av skrivaren innebär att skrivaren inte kan användas.</translation> <translation id="5817918615728894473">Koppla</translation> <translation id="5821565227679781414">Skapa genväg</translation> +<translation id="5825412242012995131">På (rekommenderas)</translation> <translation id="5826507051599432481">Vanligt namn (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Skriver ut...</translation> @@ -3710,6 +3716,11 @@ <translation id="6629841649550503054">Allt har säkerhetskopierats på <ph name="BEGIN_LINK" />Google Drive!<ph name="END_LINK" /></translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> vill få permanent tillgång till ett certifikat för att autentisera sig själv för din räkning.</translation> <translation id="6635956300022133031">Välj och anpassa röster för text till tal</translation> +<translation id="6637585982786704944">Appar och webbplatser som du har gett behörighet kan använda den kontoinformation de behöver för att fungera som de ska. + + Om du inte vill lägga till något konto loggar du in som gäst eller öppnar ett inkognitofönster. + + Alla konton visas och kan hanteras under Inställningar -> Google-konton.</translation> <translation id="6639554308659482635">SQLite-minne</translation> <translation id="6641138807883536517">Det slumpmässigt genererade lösenordet för den säkra modulen är inte tillgängligt. Det här är normalt efter en powerwash.</translation> <translation id="6643016212128521049">Rensa</translation> @@ -3911,6 +3922,7 @@ <translation id="6957231940976260713">Namn på tjänsten</translation> <translation id="696203921837389374">Aktivera synkronisering via mobildata</translation> <translation id="6964390816189577014">Hjälte</translation> +<translation id="6964760285928603117">Ta bort från gruppen</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Port</translation> <translation id="6965978654500191972">Enhet</translation> @@ -4020,6 +4032,7 @@ <translation id="7109543803214225826">Genvägen har tagits bort</translation> <translation id="7113502843173351041">Känn till din e-postadress</translation> <translation id="7114054701490058191">Lösenorden matchar inte</translation> +<translation id="7114648273807173152">Öppna Inställningar > Anslutna enheter > Din mobil > Smart Lock om du vill kunna logga in på Google-kontot med Smart Lock.</translation> <translation id="7117228822971127758">Försök igen senare</translation> <translation id="7117247127439884114">Logga in igen ...</translation> <translation id="711840821796638741">Visa hanterade bokmärken</translation> @@ -4175,6 +4188,7 @@ <translation id="7348093485538360975">Skärmtangentbord</translation> <translation id="7352651011704765696">Något gick fel</translation> <translation id="735361434055555355">Linux installeras …</translation> +<translation id="7353887511974462734">Lägg till i befintlig grupp</translation> <translation id="735745346212279324">VPN frånkopplat</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" /> objekt kopieras ...</translation> <translation id="7359588939039777303">Annonser blockeras.</translation> @@ -4237,7 +4251,6 @@ <translation id="7456847797759667638">Öppna plats...</translation> <translation id="7461924472993315131">Fäst</translation> <translation id="7463006580194749499">Lägg till person</translation> -<translation id="7464902436585505072">Röstmodell för Ok Google</translation> <translation id="7465778193084373987">Återkallandeadress för Netscape-certifikat</translation> <translation id="7469894403370665791">Anslut automatiskt till det här nätverket.</translation> <translation id="747114903913869239">Fel: det går inte att avkoda tillägget</translation> @@ -4807,6 +4820,7 @@ <translation id="827097179112817503">Visa hemknappen</translation> <translation id="8271246892936492311">{COUNT,plural, =1{Bokmärket har raderats}other{# bokmärken har raderats}}</translation> <translation id="8272443605911821513">Hantera dina tillägg genom att klicka på Tillägg i menyn Fler verktyg.</translation> +<translation id="8272966760965438857">Hantera dina Google-konton på ett enda ställe</translation> <translation id="8274332263553132018">Casta fil</translation> <translation id="8274924778568117936">Stäng inte av eller stäng <ph name="DEVICE_TYPE" /> förrän uppdateringen har slutförts. <ph name="DEVICE_TYPE" /> startas om när installationen är slutförd.</translation> <translation id="8275038454117074363">Importera</translation> @@ -5193,6 +5207,7 @@ <translation id="8883847527783433352">Synkronisera med ett annat konto</translation> <translation id="8885197664446363138">Smart Lock är inte tillgängligt</translation> <translation id="88870264962436283">Använd Touch ID med <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Appen öppnas när uppgraderingen är klar. Uppgraderingen kan ta några minuter.</translation> <translation id="8888432776533519951">Färg:</translation> <translation id="8890516388109605451">Källor</translation> <translation id="8892168913673237979">Klart!</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index 1a92a4a..3fa488b 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -364,6 +364,7 @@ <translation id="15373452373711364">Kishale kikubwa cha kipanya</translation> <translation id="1538729222189715449">Inafungua faili za Linux...</translation> <translation id="1540605929960647700">Washa hali ya onyesho</translation> +<translation id="1541396123399225659">Ongeza kwenye Kikundi Kipya</translation> <translation id="1542514202066550870">Kichupo hiki kinawasilisha maudhui ya VR kwenye kifaa cha kutazama uhalisia pepe.</translation> <translation id="1543284117603151572">Zilizoletwa Kutoka Kivinjari cha Edge</translation> <translation id="1545177026077493356">Skrini Nzima Kiotomatiki</translation> @@ -402,6 +403,7 @@ <translation id="1593594475886691512">Inaumbiza...</translation> <translation id="159359590073980872">Akiba ya Picha</translation> <translation id="1593926297800505364">Hifadhi njia ya kulipa</translation> +<translation id="1595492813686795610">Inaweka toleo jipya la Linux.</translation> <translation id="1598233202702788831">Sasisho zimezimwa na msimamizi wako.</translation> <translation id="1600857548979126453">Fikia sehemu ya nyuma ya kitatuzi ukurasa</translation> <translation id="1601560923496285236">Tekeleza</translation> @@ -513,7 +515,6 @@ <translation id="175772926354468439">Washa mandhari</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Angalia katika Duka la Chrome kwenye Wavuti</translation> -<translation id="1761588866118490543">Muundo wa sauti</translation> <translation id="176193854664720708">Kitambua alama ya kidole kiko kwenye kitufe cha kuwasha/kuzima. Kiguse taratibu ukitumia kidole chako.</translation> <translation id="1763046204212875858">Unda mikato ya programu</translation> <translation id="1763108912552529023">Endelea kugundua</translation> @@ -935,6 +936,7 @@ <translation id="2379281330731083556">Chapisha kwa kutumia kidadisi cha mfumo... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Uliza kabla ya kutuma (imependekezwa)</translation> <translation id="2384436799579181135">Hitilafu imetokea. Tafadhali angalia printa yako kisha ujaribu tena.</translation> +<translation id="2386926718981642523">Fikia programu ya Mratibu wakati wowote unaposema "Ok Google"</translation> <translation id="2387458720915042159">Aina ya muunganisho wa seva mbadala</translation> <translation id="2391419135980381625">Fonti wastani</translation> <translation id="2391762656119864333">Kufuta</translation> @@ -1040,6 +1042,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> haikuweza kuunganisha kwenye <ph name="NETWORK_ID" />. Tafadhali chagua mtandao mwingine au ujaribu tena.</translation> <translation id="2553440850688409052">Ficha Programu jalizi Hii</translation> <translation id="2554553592469060349">Faili iliyochaguliwa ni kubwa mno (Upeo wa juu wa ukubwa: MB 3).</translation> +<translation id="255747371423522804">Ongeza kwenye kikundi kilichopo</translation> <translation id="2558896001721082624">Onyesha chaguo za zana za walio na matatizo ya kuona au kusikia katika menyu ya mfumo</translation> <translation id="2562685439590298522">Hati za Google</translation> <translation id="2562743677925229011">Hajaingia kwenye <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1311,6 +1314,7 @@ <translation id="2972581237482394796">&Rudia</translation> <translation id="2972642118232180842">Tumia maudhui muhimu pekee (inapendekezwa)</translation> <translation id="2973324205039581528">Zima Sauti ya Tovuti</translation> +<translation id="2977480621796371840">Ondoa kwenye kikundi</translation> <translation id="2979639724566107830">Fungua katika dirisha jipya</translation> <translation id="2981113813906970160">Onyesha kiteuzi kikubwa cha kipanya</translation> <translation id="2982970937345031">Ripoti bila kujitambulisha</translation> @@ -1558,6 +1562,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Kitenganishi</translation> <translation id="3389312115541230716">Bofya kitufe cha kulia cha kipanya chako katika aikoni ya <ph name="SMALL_PRODUCT_LOGO" /> kilicho kwenye upau wakazi</translation> +<translation id="3393352139658145068">Washa programu ya Mratibu mtu yeyote anaposema “Ok Google”. Ili kuokoa chaji ya betri “Ok Google” inawaka tu wakati kifaa chako kimeunganishwa kwenye chanzo cha umeme.</translation> <translation id="3396800784455899911">Kwa kubofya kitufe cha "Kubali na uendelee", unakubali uchakataji uliobainishwa hapo juu katika huduma hizi za Google.</translation> <translation id="3399432415385675819">Arifa zitazimwa</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3158,6 +3163,7 @@ <translation id="5816434091619127343">Mabadiliko ya printa yaliyoombwa yatafanya printa isitumike.</translation> <translation id="5817918615728894473">Oanisha</translation> <translation id="5821565227679781414">Unda Njia Mkato</translation> +<translation id="5825412242012995131">Imewashwa (Inapendekezwa)</translation> <translation id="5826507051599432481">Jina la Kawaida (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Inachapisha...</translation> @@ -3702,6 +3708,11 @@ <translation id="6629841649550503054">Zote zimehifadhiwa nakala kwenye <ph name="BEGIN_LINK" />Hifadhi ya Google!<ph name="END_LINK" /></translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> inataka idhini ya kudumu ya kufikia cheti ili kujithibitisha kwa niaba yako.</translation> <translation id="6635956300022133031">Chagua na ubadilishe upendavyo sauti za ubadilishaji wa maandishi kwenda usemi</translation> +<translation id="6637585982786704944">Programu na tovuti ambazo umeruhusu zinaweza kufikia maelezo ya akaunti ambayo zinahitaji ili kufanya kazi vizuri. + + Kama hutaki kuongeza akaunti, ingia ukitumia akaunti ya mgeni au ufungue dirisha fiche ili uvinjari kwenye wavuti. + + Unaweza kwenda kwenye Mipangilio -> Akaunti za Google, ili uone na udhibiti akaunti zote.</translation> <translation id="6639554308659482635">Kumbukumbu ya SQLite</translation> <translation id="6641138807883536517">Nenosiri la sehemu lililozalishwa bila mpangilio halipatikani. Hii ni kawadia baada ya Powerwash.</translation> <translation id="6643016212128521049">Futa</translation> @@ -3903,6 +3914,7 @@ <translation id="6957231940976260713">Jina la huduma</translation> <translation id="696203921837389374">Washa inasawazisha kwenye data ya kifaa cha mkononi</translation> <translation id="6964390816189577014">Shujaa</translation> +<translation id="6964760285928603117">Ondoa Kwenye Kikundi</translation> <translation id="6965382102122355670">Sawa</translation> <translation id="6965648386495488594">Lango</translation> <translation id="6965978654500191972">Kifaa</translation> @@ -4012,6 +4024,7 @@ <translation id="7109543803214225826">Umeondoa njia ya mkato</translation> <translation id="7113502843173351041">Kujua anwani yako ya barua pepe</translation> <translation id="7114054701490058191">Nenosiri halilingani</translation> +<translation id="7114648273807173152">Ili utumie Smart Lock kuingia katika Akaunti yako ya Google, nenda kwenye Mipangilio > Vifaa vilivyounganishwa > Simu yako > Smart Lock.</translation> <translation id="7117228822971127758">Tafadhali jaribu tena baadaye</translation> <translation id="7117247127439884114">Ingia Tena...</translation> <translation id="711840821796638741">Onyesha Alamisho Zinazosimamiwa</translation> @@ -4167,6 +4180,7 @@ <translation id="7348093485538360975">Kibodi ya skrini</translation> <translation id="7352651011704765696">Hitilafu fulani imetokea</translation> <translation id="735361434055555355">Inasakinisha Linux...</translation> +<translation id="7353887511974462734">Ongeza kwenye Kikundi Kilichopo</translation> <translation id="735745346212279324">VPN imekatwa muunganisho</translation> <translation id="7359359531237882347">Inanakili vipengee <ph name="NUMBER_OF_ITEMS" />...</translation> <translation id="7359588939039777303">Matangazo yamezuiwa.</translation> @@ -4229,7 +4243,6 @@ <translation id="7456847797759667638">Fungua Mahali...</translation> <translation id="7461924472993315131">Bana</translation> <translation id="7463006580194749499">Ongeza mtumiaji mwingine</translation> -<translation id="7464902436585505072">Muundo wa sauti ya "Ok Google"</translation> <translation id="7465778193084373987">URL ya Kughairi Cheti cha Netscape</translation> <translation id="7469894403370665791">Unganisha otomatiki kwenye mtandao huu</translation> <translation id="747114903913869239">Hitilafu: Haikuweza kufumbua kiendelezi</translation> @@ -4801,6 +4814,7 @@ <translation id="827097179112817503">Onyesha kitufe cha mwanzo</translation> <translation id="8271246892936492311">{COUNT,plural, =1{Alamisho 1 imefutwa}other{Alamisho # zimefutwa}}</translation> <translation id="8272443605911821513">Dhibiti viendelezi vyako kwa kubofya Viendelezi katika menyu ya "Zana zaidi".</translation> +<translation id="8272966760965438857">Dhibiti Akaunti zako za Google katika sehemu moja</translation> <translation id="8274332263553132018">Tuma faili</translation> <translation id="8274924778568117936">Usizime wala kufunga kifaa chako cha <ph name="DEVICE_TYPE" /> hadi sasisho likamilike. Kifaa chako cha <ph name="DEVICE_TYPE" /> kitazimika na kuwaka baada ya sasisho kukamilika.</translation> <translation id="8275038454117074363">Leta</translation> @@ -5188,6 +5202,7 @@ <translation id="8883847527783433352">Sawazisha katika Akaunti Nyingine</translation> <translation id="8885197664446363138">Smart Lock haipatikani</translation> <translation id="88870264962436283">Tumia Touch ID kwenye <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Programu yako itafunguka baada ya kukamilisha kuweka toleo jipya. Matoleo mapya yanaweza kuchukua dakika kadhaa.</translation> <translation id="8888432776533519951">Rangi:</translation> <translation id="8890516388109605451">Vyanzo</translation> <translation id="8892168913673237979">Zote zimesanidiwa!</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb index fc4593e..8651b99 100644 --- a/chrome/app/resources/generated_resources_ta.xtb +++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">பெரிய மவுஸ் இடஞ்சுட்டி</translation> <translation id="1538729222189715449">Linux கோப்புகளைத் திறக்கிறது...</translation> <translation id="1540605929960647700">டெமோ பயன்முறையை இயக்கவும்</translation> +<translation id="1541396123399225659">புதிய குழுவில் சேர்</translation> <translation id="1542514202066550870">இந்தத் தாவல், VR உள்ளடக்கத்தை ஒரு ஹெட்செட்டுடன் பகிர்கிறது.</translation> <translation id="1543284117603151572">Edge இலிருந்து இறக்கப்பட்டது</translation> <translation id="1545177026077493356">தானியங்கு கியோஸ்க் பயன்முறை</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">வடிவமைக்கிறது...</translation> <translation id="159359590073980872">படத்தின் தற்காலிக சேமிப்பு</translation> <translation id="1593926297800505364">கட்டண முறையைச் சேமிக்கும்</translation> +<translation id="1595492813686795610">Linux மேம்படுத்தப்படுகிறது</translation> <translation id="1598233202702788831">உங்கள் நிர்வாகியால் புதுப்பிப்புகள் முடக்கப்பட்டுள்ளன.</translation> <translation id="1600857548979126453">பக்கப் பிழைத் திருத்தியின் பின்தளத்தை அணுகலாம்</translation> <translation id="1601560923496285236">பயன்படுத்து</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">தீம் ஐ இயக்கு</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Chrome இணைய அங்காடியில் காட்டு</translation> -<translation id="1761588866118490543">குரல் மாதிரி</translation> <translation id="176193854664720708">கைரேகை சென்சார் பவர் பட்டனில் உள்ளது. அதை ஏதேனும் ஒரு விரலால் மெதுவாகத் தொடவும்.</translation> <translation id="1763046204212875858">பயன்பாட்டு குறுக்குவழிகளை உருவாக்குக</translation> <translation id="1763108912552529023">தொடர்ந்து அறிக</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">கணினி உரையாடலைப் பயன்படுத்தி அச்சிடுக…<ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">அனுப்பும் முன் கேள் (பரிந்துரைக்கப்படுகிறது)</translation> <translation id="2384436799579181135">பிழை ஏற்பட்டது. உங்கள் பிரிண்டரைச் சரிபார்த்து, மீண்டும் முயலவும்.</translation> +<translation id="2386926718981642523">"Ok Google" என்று சொல்லி எந்த நேரத்திலும் அசிஸ்டண்ட்டை அணுகலாம்</translation> <translation id="2387458720915042159">ப்ராக்ஸி இணைப்பு வகை</translation> <translation id="2391419135980381625">நிலையான எழுத்துரு</translation> <translation id="2391762656119864333">திரும்பப்பெறு</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> ஆல் <ph name="NETWORK_ID" /> உடன் இணைய முடியவில்லை. மற்றொரு நெட்வொர்க்கைத் தேர்ந்தெடுங்கள் அல்லது மீண்டும் முயற்சி செய்யுங்கள்.</translation> <translation id="2553440850688409052">இந்தச் செருகுநிரலை மறை</translation> <translation id="2554553592469060349">தேர்ந்தெடுத்தக் கோப்பு மிகப் பெரியதாகும் (அதிகபட்ச அளவு: 3மெ.பை.).</translation> +<translation id="255747371423522804">ஏற்கனவே உள்ள குழுவில் சேர்</translation> <translation id="2558896001721082624">சாதன மெனுவில் அணுகல்தன்மை விருப்பத்தேர்வுகளை எப்போதும் காட்டு</translation> <translation id="2562685439590298522">டாக்ஸ்</translation> <translation id="2562743677925229011"><ph name="SHORT_PRODUCT_NAME" /> இல் உள்நுழைந்திருக்கவில்லை</translation> @@ -1316,6 +1319,7 @@ <translation id="2972581237482394796">&மீண்டும் செய்</translation> <translation id="2972642118232180842">முக்கியமான உள்ளடக்கத்தை மட்டும் இயக்கு (பரிந்துரைக்கப்படுவது)</translation> <translation id="2973324205039581528">தளத்தில் ஒலி இயக்கு</translation> +<translation id="2977480621796371840">குழுவிலிருந்து அகற்று</translation> <translation id="2979639724566107830">புதிய சாளரத்தில் திற</translation> <translation id="2981113813906970160">பெரிய மவுஸ் இடஞ்சுட்டியைக் காட்டு</translation> <translation id="2982970937345031">பெயரில்லாமல் புகாரளி</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">பிரிப்பான்</translation> <translation id="3389312115541230716">பணிப்பட்டியில் உள்ள <ph name="SMALL_PRODUCT_LOGO" /> ஐகானை வலது கிளிக் செய்யவும்</translation> +<translation id="3393352139658145068">எவரேனும் “Ok Google” என்று சொல்லும்போது அசிஸ்டண்ட் செயல்படத் தொடங்கும். பேட்டரியைச் சேமிக்க, சாதனம் சார்ஜ் செய்யப்படும்போது மட்டும் “Ok Google” வசதி இயக்கப்பட்டிருக்கும்.</translation> <translation id="3396800784455899911">"ஏற்றுக்கொண்டு, தொடர்க" பட்டனைக் கிளிக் செய்வதன் மூலம், இந்த Google சேவைகளுக்காக மேலே விவரிக்கப்பட்டுள்ள செயலாக்க நடைமுறைகளை ஏற்கிறீர்கள்.</translation> <translation id="3399432415385675819">அறிவிப்புகள் முடக்கப்படும்</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3168,6 +3173,7 @@ <translation id="5816434091619127343">கோரிய பிரிண்டர் மாற்றங்கள், அதைப் பயன்படுத்த முடியாததாக மாற்றும்.</translation> <translation id="5817918615728894473">இணை</translation> <translation id="5821565227679781414">குறுக்குவழி உருவாக்கு</translation> +<translation id="5825412242012995131">ஆன் (பரிந்துரைக்கப்படுவது)</translation> <translation id="5826507051599432481">பொதுவான பெயர் (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">அச்சிடுகிறது...</translation> @@ -3712,6 +3718,11 @@ <translation id="6629841649550503054">எல்லாம் <ph name="BEGIN_LINK" />Google இயக்ககத்தில்<ph name="END_LINK" /> காப்புப் பிரதி எடுக்கப்பட்டன</translation> <translation id="6630752851777525409">உங்கள் சார்பாக தன்னை அங்கீகரித்துக் கொள்ள, ஒரு சான்றிதழுக்கான நிரந்தர அணுகலை <ph name="EXTENSION_NAME" /> கோருகிறது.</translation> <translation id="6635956300022133031">உரையிலிருந்து பேச்சுக்கான குரல்களைத் தேர்ந்தெடுக்கலாம், தனிப்பயனாக்கலாம்</translation> +<translation id="6637585982786704944">உங்களிடம் அனுமதி பெற்றுள்ள ஆப்ஸும் இணையதளங்களும் அவை சரியாக வேலை செய்வதற்குத் தேவையான கணக்குத் தகவலை அணுகலாம். + + கணக்கைச் சேர்க்க விரும்பவில்லை எனில், இணையத்தில் உலாவ விருந்தினராக உள்நுழையவும் அல்லது மறைநிலைச் சாளரத்தைத் திறக்கவும். + + அனைத்துக் கணக்குகளையும் பார்க்கவும் நிர்வகிக்கவும் ‘அமைப்புகள்’ -> ‘Google கணக்குகள்’ என்பதற்குச் செல்லவும்.</translation> <translation id="6639554308659482635">SQLite நினைவகம்</translation> <translation id="6641138807883536517">பாதுகாப்பு மாட்யூலின் கடவுச்சொல் (தற்போக்காக உருவாக்கியது) இல்லை. பவர்வாஷிற்குப் பிறகு இப்படி நடப்பது இயல்பு.</translation> <translation id="6643016212128521049">அழி</translation> @@ -3913,6 +3924,7 @@ <translation id="6957231940976260713">சேவைப் பெயர்</translation> <translation id="696203921837389374">மொபைல் டேட்டாவுடன் ஒத்திசை</translation> <translation id="6964390816189577014">நாயகன்</translation> +<translation id="6964760285928603117">குழுவிலிருந்து அகற்று</translation> <translation id="6965382102122355670">சரி</translation> <translation id="6965648386495488594">போர்ட்</translation> <translation id="6965978654500191972">சாதனம்</translation> @@ -4022,6 +4034,7 @@ <translation id="7109543803214225826">ஷார்ட்கட் அகற்றப்பட்டது</translation> <translation id="7113502843173351041">உங்கள் மின்னஞ்சல் முகவரியை அணுகுதல்</translation> <translation id="7114054701490058191">கடவுச்சொற்கள் பொருந்தவில்லை</translation> +<translation id="7114648273807173152">உங்கள் Google கணக்கில் உள்நுழைவதற்கு Smart Lockகைப் பயன்படுத்த, ‘அமைப்புகள்’ > ’இணைக்கப்பட்டுள்ள சாதனங்கள்’ > ’உங்கள் ஃபோன்’ > 'Smart Lock' என்பதற்குச் செல்லவும்.</translation> <translation id="7117228822971127758">பிறகு முயலவும்</translation> <translation id="7117247127439884114">மீண்டும் உள்நுழைக...</translation> <translation id="711840821796638741">நிர்வகிக்கப்பட்ட புக்மார்க்குகளைக் காட்டு</translation> @@ -4177,6 +4190,7 @@ <translation id="7348093485538360975">ஆன்-ஸ்கிரீன் விசைப்பலகை</translation> <translation id="7352651011704765696">ஏதோ தவறு ஏற்பட்டது</translation> <translation id="735361434055555355">Linuxஸை நிறுவுகிறது...</translation> +<translation id="7353887511974462734">ஏற்கனவே உள்ள குழுவில் சேர்</translation> <translation id="735745346212279324">VPN துண்டிக்கப்பட்டது</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" /> உள்ளடக்கங்களை நகலெடுக்கிறது...</translation> <translation id="7359588939039777303">விளம்பரங்கள் தடுக்கப்பட்டன.</translation> @@ -4239,7 +4253,6 @@ <translation id="7456847797759667638">இருப்பிடத்தைத் திற...</translation> <translation id="7461924472993315131">நிலையாக வை</translation> <translation id="7463006580194749499">நபரைச் சேர்</translation> -<translation id="7464902436585505072">"Ok Google" குரல் மாதிரி</translation> <translation id="7465778193084373987">Netscape சான்றிதழ் தளர்த்தல் URL</translation> <translation id="7469894403370665791">இந்த நெட்வொர்க்குடன் தானாகவே இணைக்கவும்</translation> <translation id="747114903913869239">பிழை: நீட்டிப்பை குறி இறக்கம் செய்ய முடியவில்லை</translation> @@ -4811,6 +4824,7 @@ <translation id="827097179112817503">முகப்பு பொத்தானைக் காட்டு</translation> <translation id="8271246892936492311">{COUNT,plural, =1{ஒரு புத்தகக்குறி நீக்கப்பட்டது}other{# புத்தகக்குறிகள் நீக்கப்பட்டன}}</translation> <translation id="8272443605911821513">"கூடுதல் கருவிகள்" மெனுவில் நீட்டிப்புகள் என்பதைக் கிளிக் செய்து நீட்டிப்புகளை நிர்வகிக்கவும்.</translation> +<translation id="8272966760965438857">உங்கள் Google கணக்குகளை ஒரே இடத்திலிருந்து நிர்வகிக்கலாம்</translation> <translation id="8274332263553132018">கோப்பை அலைபரப்பு</translation> <translation id="8274924778568117936">புதுப்பிப்பு முடியும் வரை <ph name="DEVICE_TYPE" /> சாதனத்தை முடக்கவோ அல்லது மூடவோ வேண்டாம். நிறுவியதும், <ph name="DEVICE_TYPE" /> மீண்டும் தொடங்கும்.</translation> <translation id="8275038454117074363">இறக்குமதி செய்</translation> @@ -5197,6 +5211,7 @@ <translation id="8883847527783433352">வேறொரு கணக்குடன் ஒத்திசை</translation> <translation id="8885197664446363138">Smart Lock இல்லை</translation> <translation id="88870264962436283"><ph name="APP_NAME" /> இல் Touch IDயைப் பயன்படுத்துதல்</translation> +<translation id="8888253246822647887">மேம்படுத்தப்பட்டதும் உங்கள் ஆப்ஸ் திறக்கும். மேம்படுத்துவதற்குச் சில நிமிடங்கள் ஆகலாம்.</translation> <translation id="8888432776533519951">வண்ணம்:</translation> <translation id="8890516388109605451">மூலங்கள்</translation> <translation id="8892168913673237979">எல்லாவற்றையும் அமைத்துவிட்டீர்கள்!</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb index febebfd4..ae5fe89 100644 --- a/chrome/app/resources/generated_resources_te.xtb +++ b/chrome/app/resources/generated_resources_te.xtb
@@ -31,7 +31,7 @@ <translation id="1036982837258183574">పూర్తి స్క్రీన్ నుండి నిష్క్రమించడానికి |<ph name="ACCELERATOR" />| నొక్కండి</translation> <translation id="1038168778161626396">కోడ్ మాత్రమే</translation> <translation id="1039337018183941703">ఫైల్ చెల్లదు లేదా పాడైంది</translation> -<translation id="1042174272890264476">మీ కంప్యూటర్లో కూడా <ph name="SHORT_PRODUCT_NAME" /> యొక్క RLZ లైబ్రరీ అంతర్నిర్మితంగా ఉంటుంది. RLZ శోధనలను మరియు నిర్దిష్ట ప్రమోషనల్ ప్రచారం ద్వారా ఉపయోగించబడిన <ph name="SHORT_PRODUCT_NAME" /> వినియోగాన్ని లెక్కించడానికి ప్రత్యేకం కాని, వ్యక్తిగతంగా గుర్తించలేని ట్యాగ్ను సమర్పిస్తుంది. ఈ లేబుల్లు కొన్నిసార్లు <ph name="PRODUCT_NAME" />లోని Google శోధన ప్రశ్నల్లో కనిపిస్తాయి.</translation> +<translation id="1042174272890264476">మీ కంప్యూటర్లో కూడా <ph name="SHORT_PRODUCT_NAME" /> యొక్క అంతర్గత RLZ లైబ్రరీ ఉంటుంది. RLZ శోధనలను మరియు నిర్దిష్ట ప్రమోషనల్ ప్రచారం ద్వారా ఉపయోగించబడిన <ph name="SHORT_PRODUCT_NAME" /> వినియోగాన్ని లెక్కించడానికి, ప్రత్యేకం కానటువంటి, వ్యక్తిగతంగా గుర్తించలేని ట్యాగ్ను సమర్పిస్తుంది. ఈ లేబుల్లు కొన్నిసార్లు <ph name="PRODUCT_NAME" />లోని Google శోధన ప్రశ్నలలో కనిపిస్తాయి.</translation> <translation id="1046059554679513793">అయ్యో, ఈ పేరు ఇప్పటికే వినియోగంలో ఉంది!</translation> <translation id="1046635659603195359">మీరు ఇప్పటికే మరో పరికరంలో మీ Google అసిస్టెంట్ని ఉపయోగించి Voice Matchని సెటప్ చేసినట్టున్నారు. ఈ పరికరంలో వాయిస్ నమూనాని రూపొందించడం కోసం ఈ మునుపటి రికార్డింగ్లు ఉపయోగించబడతాయి. ఇందుకు నిమిషం కంటే తక్కువ సమయం పడుతుంది.</translation> <translation id="1047431265488717055">లింక్ వచ&నం కాపీ చేయి</translation> @@ -60,7 +60,7 @@ <translation id="1076698951459398590">థీమ్ను ప్రారంభించు</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1079766198702302550">ఎల్లప్పుడూ కెమెరా ప్రాప్యతను బ్లాక్ చేయి</translation> -<translation id="1082398631555931481"><ph name="THIRD_PARTY_TOOL_NAME" /> మీ Chrome సెట్టింగ్లను వాటి అసలు డిఫాల్ట్లకు పునరుద్ధరించాలనుకుంటోంది. ఇది మీ హోమ్ పేజీని, కొత్త ట్యాబ్ పేజీని, శోధన ఇంజిన్ని రీసెట్ చేస్తుంది. మీ ఎక్స్టెన్షన్లను నిలిపివేస్తుంది. ట్యాబ్లు అన్నింటినీ అన్పిన్ చేస్తుంది. ఇది కుక్కీలు, కంటెంట్, సైట్ డేటా వంటి ఇతర తాత్కాలిక మరియు కాష్ చేసిన డేటాను కూడా తీసివేస్తుంది.</translation> +<translation id="1082398631555931481"><ph name="THIRD_PARTY_TOOL_NAME" /> మీ Chrome సెట్టింగ్లను వాటి అసలు డిఫాల్ట్లకు పునరుద్ధరించాలనుకుంటోంది. ఇది మీ హోమ్ పేజీని, కొత్త ట్యాబ్ పేజీని మరియు శోధన ఇంజిన్ను రీసెట్ చేస్తుంది, మీ ఎక్స్టెన్షన్లను నిలిపివేస్తుంది మరియు ట్యాబ్లు అన్నింటినీ అన్పిన్ చేస్తుంది. ఇది కుక్కీలు, కంటెంట్ మరియు సైట్ డేటా వంటి ఇతర తాత్కాలిక మరియు కాష్ చేసిన డేటాను కూడా తీసివేస్తుంది.</translation> <translation id="1082725763867769612">ఆఫ్లైన్ ఫైల్లు</translation> <translation id="1084824384139382525">లింక్ చిరు&నామాను కాపీ చెయ్యి</translation> <translation id="1085697365578766383">వర్చువల్ మెషిన్ను ప్రారంభించడంలో ఎర్రర్ ఏర్పడింది. దయచేసి మళ్లీ ప్రయత్నించండి.</translation> @@ -93,7 +93,7 @@ <translation id="1125550662859510761"><ph name="WIDTH" /> x <ph name="HEIGHT" /> ఉన్నట్టుంది (అసలైనది)</translation> <translation id="1128109161498068552">MIDI పరికరాలను ప్రాప్యత చేయడం కోసం సిస్టమ్ విశిష్ట సందేశాలను ఉపయోగించడానికి ఏ సైట్లను అనుమతించవద్దు</translation> <translation id="1128128132059598906">EAP-TTLS</translation> -<translation id="1128591060186966949">శోధన ఇంజిన్ని సవరించండి</translation> +<translation id="1128591060186966949">శోధన ఇంజిన్ను సవరించండి</translation> <translation id="1134009406053225289">అజ్ఞాత విండోలో తెరువు</translation> <translation id="1137673463384776352">లింక్ను <ph name="APP" />లో తెరువు</translation> <translation id="1140351953533677694">మీ బ్లూటూత్ మరియు క్రమానుసార పరికరాలను ప్రాప్యత చేయడం</translation> @@ -101,7 +101,7 @@ <translation id="1140746652461896221">మీరు సందర్శించే ఏ పేజీలో అయినా కంటెంట్ని బ్లాక్ చేయండి</translation> <translation id="1143142264369994168">సర్టిఫికెట్ సంతకందారు</translation> <translation id="1145292499998999162">ప్లగిన్ బ్లాక్ చేయబడింది</translation> -<translation id="1145532888383813076">మీ పరికరం, యాప్లు మరియు వెబ్ని శోధించండి.</translation> +<translation id="1145532888383813076">మీ పరికరం, యాప్లు మరియు వెబ్ను వెతకండి.</translation> <translation id="1146204723345436916">HTML ఫైల్ నుండి బుక్మార్క్లను దిగుమతి చేయి...</translation> <translation id="114721135501989771">Chromeలో Google స్మార్ట్లను పొందండి</translation> <translation id="1148097584170732637"><ph name="FILE_COUNT" /> కనుగొనబడ్డాయి. @@ -135,7 +135,7 @@ <translation id="1183237619868651138">స్థానిక కాష్లో <ph name="EXTERNAL_CRX_FILE" />ను ఇన్స్టాల్ చేయడం సాధ్యపడదు.</translation> <translation id="1185924365081634987">మీరు ఈ నెట్వర్క్ ఎర్రర్ను పరిష్కరించడానికి <ph name="GUEST_SIGNIN_LINK_START" />అతిథిగా బ్రౌజ్ చేయడం<ph name="GUEST_SIGNIN_LINK_END" /> కూడా ప్రయత్నించవచ్చు.</translation> <translation id="1186771945450942097">హానికరమైన సాఫ్ట్వేర్ని తీసివేయండి</translation> -<translation id="1187722533808055681">నిష్క్రియ మేల్కొలుపులు</translation> +<translation id="1187722533808055681">ఇన్యాక్టివ్ మేల్కొలుపులు</translation> <translation id="1188807932851744811">లాగ్ అప్లోడ్ చేయబడలేదు.</translation> <translation id="1189418886587279221">మీ పరికరాన్ని సులభంగా ఉపయోగించడానికి యాక్సెస్ సౌలభ్య ఫీచర్లను ప్రారంభించండి.</translation> <translation id="1190144681599273207">ఈ ఫైల్ను పొందడానికి మొబైల్ డేటాలో సుమారుగా <ph name="FILE_SIZE" /> ఉపయోగించబడుతుంది.</translation> @@ -235,7 +235,7 @@ <translation id="1338776410427958681"><ph name="FOLDER_NAME" />ని కుదించండి</translation> <translation id="1338950911836659113">తొలగిస్తోంది...</translation> <translation id="1340527397989195812">ఫైల్ల యాప్ను ఉపయోగించి పరికరం నుండి మీడియాను బ్యాకప్ చేయండి.</translation> -<translation id="1341988552785875222">ప్రస్తుత వాల్పేపర్ '<ph name="APP_NAME" />' ద్వారా సెట్ చేయబడింది. మీరు వేరొక వాల్పేపర్ను ఎంచుకోవడానికి ముందు '<ph name="APP_NAME" />'ని అన్ఇన్స్టాల్ చేయాల్సి రావచ్చు.</translation> +<translation id="1341988552785875222">ప్రస్తుత వాల్పేపర్ను '<ph name="APP_NAME" />' సెట్ చేసింది. మీరు వేరొక వాల్పేపర్ను ఎంచుకోవడానికి ముందు '<ph name="APP_NAME" />'ను అన్ఇన్స్టాల్ చేయాల్సి రావచ్చు.</translation> <translation id="1346748346194534595">కుడి</translation> <translation id="1347256498747320987">అప్డేట్లు & యాప్లను ఇన్స్టాల్ చేయండి. కొనసాగించడం ద్వారా, ఈ పరికరం Google, మీ క్యారియర్ మరియు మీ పరికర తయారీదారు నుండి అప్డేట్లు మరియు యాప్లను ఆటోమేటిక్గా కూడా డౌన్లోడ్ మరియు ఇన్స్టాల్ చేయవచ్చని మీరు అంగీకరిస్తున్నారు, బహుశా సెల్యులార్ డేటా ఉపయోగించబడవచ్చు. ఈ యాప్లలో కొన్ని యాప్లో కొనుగోళ్లను అందించవచ్చు. <ph name="BEGIN_LINK1" />మరింత తెలుసుకోండి<ph name="END_LINK1" /></translation> <translation id="1347975661240122359">బ్యాటరీ స్థాయి <ph name="BATTERY_LEVEL" />% చేరుకున్నప్పుడు అప్డేట్ ప్రారంభమవుతుంది.</translation> @@ -262,7 +262,7 @@ <translation id="1378727793141957596">Google డిస్క్కు స్వాగతం!</translation> <translation id="1380436189840894976">ఏదేమైనా అజ్ఞాత మోడ్ నుండి నిష్క్రమించాలా?</translation> <translation id="1383861834909034572">పూర్తి అయిన తర్వాత తెరవబడుతుంది</translation> -<translation id="1383876407941801731">శోధించు</translation> +<translation id="1383876407941801731">వెతుకు</translation> <translation id="1386387014181100145">హాయ్.</translation> <translation id="138784436342154190">డిఫాల్ట్ ప్రారంభ పేజీని పునరుద్ధరించాలా?</translation> <translation id="1390548061267426325">సాధారణ ట్యాబ్ లాగా తెరువు</translation> @@ -297,7 +297,7 @@ <translation id="1430915738399379752">ముద్రించు</translation> <translation id="1432581352905426595">శోధన ఇంజిన్లను నిర్వహించండి</translation> <translation id="1433811987160647649">ప్రాప్యత చేసే ముందు అడగాలి</translation> -<translation id="1434696352799406980">దీని వలన మీ ప్రారంభ పేజీ, కొత్త ట్యాబ్ పేజీ, శోధన ఇంజిన్ మరియు పిన్ చేసిన ట్యాబ్లు రీసెట్ చేయబడతాయి. ఇది అన్ని ఎక్స్టెన్షన్లను కూడా నిలిపివేస్తుంది. కుక్కీల వంటి తాత్కాలిక డేటాను తీసివేస్తుంది. మీ బుక్మార్క్లు, చరిత్ర, సేవ్ చేసిన పాస్వర్డ్లు తీసివేయబడవు.</translation> +<translation id="1434696352799406980">దీని వలన మీ ప్రారంభ పేజీ, కొత్త ట్యాబ్ పేజీ, శోధన ఇంజిన్ మరియు పిన్ చేసిన ట్యాబ్లు రీసెట్ చేయబడతాయి. ఇది ఎక్స్టెన్షన్లన్నింటినీ నిలిపివేసి, కుక్కీల వంటి తాత్కాలిక డేటాను తీసివేస్తుంది. మీ బుక్మార్క్లు, చరిత్ర మరియు సేవ్ చేసిన పాస్వర్డ్లు తీసివేయబడవు.</translation> <translation id="1434886155212424586">హోమ్పేజీ అనేది కొత్త ట్యాబ్ పేజీ</translation> <translation id="1436671784520050284">సెటప్ని కొనసాగించు</translation> <translation id="1436784010935106834">తీసివేయబడింది</translation> @@ -308,7 +308,7 @@ <translation id="1451375123200651445">వెబ్ పేజీ, ఒకే ఫైల్</translation> <translation id="1451917004835509682">పర్యవేక్షించబడే వ్యక్తిని జోడించు</translation> <translation id="1454223536435069390">స్క్రీన్షాట్ తీ&యి</translation> -<translation id="1459967076783105826">పొడిగింపుల ద్వారా జోడించబడిన శోధన ఇంజిన్లు</translation> +<translation id="1459967076783105826">ఎక్స్టెన్షన్లు జోడించిన శోధన ఇంజిన్లు</translation> <translation id="146000042969587795">ఈ ఫ్రేమ్లో అసురక్షిత కంటెంట్ ఉండటం వల్ల, అది బ్లాక్ చేయబడింది.</translation> <translation id="146219525117638703">ONC స్థితి</translation> <translation id="146220085323579959">ఇంటర్నెట్ డిస్కనెక్ట్ చేయబడింది. దయచేసి మీ ఇంటర్నెట్ కనెక్షన్ని తనిఖీ చేసి, మళ్లీ ప్రయత్నించండి.</translation> @@ -329,7 +329,7 @@ <translation id="1483493594462132177">పంపు</translation> <translation id="1485015260175968628">ఇప్పుడు ఇది వీటిని చేయగలదు:</translation> <translation id="1485141095922496924">సంస్కరణ <ph name="PRODUCT_VERSION" /> (<ph name="PRODUCT_CHANNEL" />) <ph name="PRODUCT_MODIFIER" /> <ph name="PRODUCT_VERSION_BITS" /></translation> -<translation id="1486096554574027028">పాస్వర్డ్లను శోధించు</translation> +<translation id="1486096554574027028">పాస్వర్డ్లను వెతుకు</translation> <translation id="1487335504823219454">ఆన్ - అనుకూల సెట్టింగ్లు</translation> <translation id="1489664337021920575">మరొక ఎంపికను ఎంచుకోండి</translation> <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" /> కోసం వేచి ఉంది...</translation> @@ -367,6 +367,7 @@ <translation id="15373452373711364">పెద్ద మౌస్ కర్సర్</translation> <translation id="1538729222189715449">Linux ఫైల్లను తెరుస్తోంది...</translation> <translation id="1540605929960647700">డెమో మోడ్ని ప్రారంభించండి</translation> +<translation id="1541396123399225659">కొత్త గుంపునకు జోడించు</translation> <translation id="1542514202066550870">ఈ ట్యాబ్ హెడ్సెట్ ద్వారా VR కంటెంట్ని ప్రదర్శిస్తోంది.</translation> <translation id="1543284117603151572">Edge నుండి దిగుమతి చేసినవి</translation> <translation id="1545177026077493356">స్వయంచాలక కియోస్క్ మోడ్</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">ఆకృతీకరిస్తోంది...</translation> <translation id="159359590073980872">చిత్రం కాష్</translation> <translation id="1593926297800505364">చెల్లింపు పద్దతిని సేవ్ చేయండి</translation> +<translation id="1595492813686795610">Linux అప్గ్రేడ్ అవుతోంది</translation> <translation id="1598233202702788831">నవీకరణలను మీ నిర్వాహకులు నిలిపివేసారు.</translation> <translation id="1600857548979126453">పేజీ డీబగ్గర్ బ్యాకెండ్ను ప్రాప్యత చేయండి</translation> <translation id="1601560923496285236">వర్తించు</translation> @@ -485,7 +487,7 @@ <translation id="1712349894969001173">మీ iPhoneలో ఈ పాస్వర్డ్ను పొందండి</translation> <translation id="1712552549805331520">మీ స్థానిక కంప్యూటర్లో <ph name="URL" /> శాశ్వతంగా డేటాను నిల్వ చేయాలనుకుంటోంది</translation> <translation id="1718835860248848330">చివరి గంట</translation> -<translation id="1719312230114180055">గమనిక: మీ వేలిముద్ర శక్తివంతమైన పాస్వర్డ్ లేదా PIN కంటే తక్కువ సురక్షితంగా ఉండవచ్చు.</translation> +<translation id="1719312230114180055">గమనిక: శక్తివంతమైన పాస్వర్డ్ లేదా PIN కంటే మీ వేలిముద్ర తక్కువ సురక్షితంగా ఉండవచ్చు.</translation> <translation id="1720318856472900922">TLS WWW సర్వర్ ప్రామాణీకరణ</translation> <translation id="1720421759229874">మీరు ఈ సెట్టింగ్లను ఎప్పుడైనా అనుకూలీకరించవచ్చు</translation> <translation id="1721937473331968728">మీరు మీ కంప్యూటర్కు కనెక్ట్ చేయబడిన క్లాసిక్ ప్రింటర్లను <ph name="CLOUD_PRINT_NAME" />కి జోడించవచ్చు.</translation> @@ -493,7 +495,7 @@ <translation id="1723824996674794290">&క్రొత్త విండో</translation> <translation id="1725149567830788547">&నియంత్రణలను చూపించు</translation> <translation id="1726100011689679555">పేరు సర్వర్లు</translation> -<translation id="1729533290416704613">ఇది ఓమ్నిపెట్టె నుండి శోధించేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation> +<translation id="1729533290416704613">ఓమ్నిబాక్స్ నుండి వెతికేటప్పుడు చూపబడే పేజీని కూడా ఇది నియంత్రిస్తుంది.</translation> <translation id="1730917990259790240"><ph name="BEGIN_PARAGRAPH1" />యాప్లను తీసివేయడానికి, సెట్టింగ్లు > Google Play స్టోర్ > Android ప్రాధాన్యతలను నిర్వహించు > యాప్లు లేదా అప్లికేషన్ మేనేజర్కి వెళ్లండి. ఆ తర్వాత, మీరు అన్ఇన్స్టాల్ చేయాలనుకుంటున్న యాప్ని నొక్కండి (మీరు యాప్ని కనుగొనడం కోసం ఎడమ లేదా కుడి వైపునకు స్వైప్ చేయాల్సి రావచ్చు). ఆపై, అన్ఇన్స్టాల్ చేయి లేదా నిలిపివేయి ఎంపికను నొక్కండి.<ph name="END_PARAGRAPH1" /></translation> <translation id="1731911755844941020">అభ్యర్థనను పంపుతోంది...</translation> <translation id="1733383495376208985">సమకాలీకరించిన డేటాని మీ స్వంత <ph name="BEGIN_LINK" />సమకాలీకరణ రహస్య పదబంధం<ph name="END_LINK" />తో ఎన్క్రిప్ట్ చేయండి. Google Payకి చెందిన చెల్లింపు పద్ధతులు మరియు చిరునామాలు ఇందులో ఉండవు.</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">థీమ్ను ప్రారంభించు</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Chrome వెబ్ స్టోర్లో చూడండి</translation> -<translation id="1761588866118490543">వాయిస్ నమూనా (మోడల్)</translation> <translation id="176193854664720708">వేలిముద్ర సెన్సార్ పవర్ బటన్లో ఉంది. ఏదైనా వేలితో మెల్లిగా దానిని తాకండి.</translation> <translation id="1763046204212875858">అప్లికేషన్ షార్ట్కట్లను సృష్టించు</translation> <translation id="1763108912552529023">విశ్లేషణ కొనసాగించండి</translation> @@ -699,12 +700,12 @@ <translation id="2040460856718599782">అయ్యో! మిమ్మల్ని ప్రామాణీకరించడానికి ప్రయత్నిస్తున్నప్పుడు ఏదో తప్పు జరిగింది. దయచేసి మీ సైన్-ఇన్ ప్రమాణాలను ఒకటికి రెండుసార్లు తనిఖీ చేసుకుని మళ్లీ ప్రయత్నించండి.</translation> <translation id="2043818754674261542">ఈ <ph name="DEVICE_TYPE" />ని అన్లాక్ చేయడానికి ఫోన్ను ఉంచాల్సిన దూరం</translation> <translation id="204497730941176055">Microsoft సర్టిఫికెట్ టెంప్లేట్ పేరు</translation> -<translation id="2045117674524495717">కీబోర్డ్ షార్ట్కట్ హెల్పర్</translation> +<translation id="2045117674524495717">కీబోర్డ్ షార్ట్కట్ సహాయం</translation> <translation id="2045969484888636535">కుకీలను నిరోధించడాన్ని కొనసాగించండి</translation> <translation id="204622017488417136">మీ పరికరం మునుపు ఇన్స్టాల్ చేసిన Chrome సంస్కరణకు తిరిగి మార్చబడింది. అన్ని వినియోగదారు ఖాతాలు మరియు స్థానిక డేటా తీసివేయబడుతుంది. దీన్ని రద్దు చేయడం సాధ్యపడదు.</translation> <translation id="2048182445208425546">మీ నెట్వర్క్ ట్రాఫిక్ను యాక్సెస్ చేయండి</translation> <translation id="2048653237708779538">చర్య అందుబాటులో లేదు</translation> -<translation id="204914487372604757">సత్వరమార్గాన్ని సృష్టించు</translation> +<translation id="204914487372604757">షార్ట్కట్ను సృష్టించు</translation> <translation id="2050339315714019657">పోర్ట్రెయిట్</translation> <translation id="2053312383184521053">నిష్క్రియ స్థితి డేటా</translation> <translation id="205560151218727633">Google సహాయకం లోగో</translation> @@ -767,7 +768,7 @@ <translation id="2148219725039824548">షేర్ను మౌంట్ చేయడంలో ఎర్రర్ ఏర్పడింది. పేర్కొన్న షేర్ నెట్వర్క్లో కనుగొనబడలేదు.</translation> <translation id="2148756636027685713">ఆకృతీకరణ పూర్తి అయ్యింది</translation> <translation id="2148892889047469596">ట్యాబ్ను ప్రసారం చేయండి</translation> -<translation id="2150139952286079145">శోధించాల్సిన గమ్యస్థానాలు</translation> +<translation id="2150139952286079145">గమ్యస్థానాలను వెతకండి</translation> <translation id="2150661552845026580">"<ph name="EXTENSION_NAME" />"ను జోడించాలా?</translation> <translation id="2151576029659734873">చెల్లని టాబ్ సూచిక ఎంటర్ చేయబడింది.</translation> <translation id="2154484045852737596">కార్డ్ను సవరించండి</translation> @@ -808,7 +809,7 @@ <translation id="2200603218210188859">USB పరికర ప్రాధాన్యతలు</translation> <translation id="220138918934036434">బటన్ను దాచిపెట్టు</translation> <translation id="2202898655984161076">ముద్రణలను జాబితా చెయ్యడంలో సమస్య ఉంది. <ph name="CLOUD_PRINT_NAME" />తో మీ ముద్రణలలో కొన్ని విజయవంతంగా నమోదు చెయ్యబడకపోయి ఉండవచ్చు.</translation> -<translation id="2203682048752833055"><ph name="BEGIN_LINK" />చిరునామా పట్టీ<ph name="END_LINK" />లో ఉపయోగించాల్సిన శోధన ఇంజిన్</translation> +<translation id="2203682048752833055"><ph name="BEGIN_LINK" />చిరునామా బార్<ph name="END_LINK" />లో ఉపయోగించాల్సిన శోధన ఇంజిన్</translation> <translation id="2204034823255629767">మీరు టైప్ చేసేదాన్ని చదవడం మరియు మార్చడం</translation> <translation id="220792432208469595">వినియోగం & విశ్లేషణల డేటాను పంపండి. ఈ పరికరం ప్రస్తుతం సమస్య విశ్లేషణ, అలాగే పరికర, యాప్ వినియోగ డేటాను ఆటోమేటిక్గా Googleకి పంపుతుంది. ఇది సిస్టమ్, యాప్ స్థిరత్వానికి, అలాగే ఇతర మెరుగుదలలకు సహాయపడుతుంది. కొంత సముదాయ డేటా కూడా Google యాప్లకు, అలాగే Android డెవలపర్ల లాంటి భాగస్వాములకు సహాయపడుతుంది. ఈ సెట్టింగ్ని యజమాని అమలు చేసారు. మీ అదనపు వెబ్ & యాప్ కార్యకలాపం సెట్టింగ్ను ఆన్ చేసినట్లయితే, ఈ డేటా మీ Google ఖాతాలో సేవ్ చేయబడవచ్చు. <ph name="BEGIN_LINK1" />మరింత తెలుసుకోండి<ph name="END_LINK1" /></translation> <translation id="2208158072373999562">జిప్ ఆర్కైవ్</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">సిస్టమ్ డైలాగ్ ఉపయోగించి ముద్రించు ...<ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">పంపడానికి ముందు అడుగుతుంది (సిఫార్సు చేయబడింది)</translation> <translation id="2384436799579181135">ఎర్రర్ ఏర్పడింది. దయచేసి మీ ప్రింటర్ని తనిఖీ చేసి మళ్లీ ప్రయత్నించండి.</translation> +<translation id="2386926718981642523">మీరు "Ok Google" అని చెప్పి ఎప్పుడైనా మీ అసిస్టెంట్ని యాక్సెస్ చేయండి</translation> <translation id="2387458720915042159">ప్రాక్సీ కనెక్షన్ రకం</translation> <translation id="2391419135980381625">ప్రామాణిక ఫాంట్</translation> <translation id="2391762656119864333">ఉపసంహరించు</translation> @@ -995,7 +997,7 @@ <translation id="2480868415629598489">మీరు కాపీ చేసి, అతికించే డేటాను సవరించడం</translation> <translation id="2482878487686419369">ప్రకటనలు</translation> <translation id="2484959914739448251">మీ అన్ని సమకాలీకరించబడుతున్న పరికరాలతో సహా, మీ Google ఖాతా నుండి బ్రౌజింగ్ డేటాను తీసివేయడానికి, <ph name="BEGIN_LINK" />మీ రహస్య పదబంధాన్ని నమోదు చేయండి<ph name="END_LINK" />.</translation> -<translation id="2485422356828889247">వ్యవస్థాపనను తీసివెయ్యి</translation> +<translation id="2485422356828889247">అన్ఇన్స్టాల్ చేయి</translation> <translation id="2487067538648443797">కొత్త బుక్మార్క్ను జోడించు</translation> <translation id="2489918096470125693">&ఫోల్డర్ను జోడించు...</translation> <translation id="249113932447298600">క్షమించండి, ఈ సమయంలో <ph name="DEVICE_LABEL" /> పరికరానికి మద్దతు లేదు.</translation> @@ -1010,7 +1012,7 @@ <translation id="2499747912851752301">పాస్వర్డ్లను ఎగుమతి చేస్తోంది...</translation> <translation id="2500471369733289700">మీ గోప్యతను రక్షించడానికి బ్లాక్ చేయబడింది</translation> <translation id="2501173422421700905">సర్టిఫికెట్ హోల్డ్లో ఉంది</translation> -<translation id="2501797496290880632">సత్వరమార్గాన్ని టైప్ చేయండి</translation> +<translation id="2501797496290880632">షార్ట్కట్ను టైప్ చేయండి</translation> <translation id="2502441965851148920">స్వయంచాలక నవీకరణలు ప్రారంభించబడ్డాయి. స్వయంగా చేసే నవీకరణలను మాత్రం మీ నిర్వాహకులు నిలిపివేసారు.</translation> <translation id="2505324914378689427">{SCREEN_INDEX,plural, =1{స్క్రీన్ #}other{స్క్రీన్ #}}</translation> <translation id="2505402373176859469"><ph name="TOTAL_SIZE" />లో <ph name="RECEIVED_AMOUNT" /></translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="NETWORK_ID" />కు కనెక్ట్ చెయ్యడానికి <ph name="PRODUCT_NAME" />కి సాధ్యం కాలేదు. దయచేసి మరొక నెట్వర్క్ని ఎంచుకోండి లేదా మళ్ళీ ప్రయత్నిచండి.</translation> <translation id="2553440850688409052">ఈ ప్లగ్ఇన్ని దాచిపెట్టు</translation> <translation id="2554553592469060349">ఎంచుకోబడిన ఫైల్ చాలా పెద్దదిగా ఉంది (గరిష్ట పరిమాణం: 3mb).</translation> +<translation id="255747371423522804">ఇప్పటికే ఉన్న గుంపునకు జోడించు</translation> <translation id="2558896001721082624">సిస్టమ్ మెనూలో ఎల్లప్పుడూ యాక్సెస్ సామర్థ్య ఎంపికలను చూపు</translation> <translation id="2562685439590298522">డాక్స్</translation> <translation id="2562743677925229011"><ph name="SHORT_PRODUCT_NAME" />కు సైన్ ఇన్ చేయలేదు</translation> @@ -1064,7 +1067,7 @@ <translation id="2586672484245266891">దయచేసి చిన్న URLని నమోదు చేయండి</translation> <translation id="2587922270115112871">పర్యవేక్షించబడే వినియోగదారుని సృష్టించడం వల్ల Google ఖాతా సృష్టించబడదు. వారి సెట్టింగ్లు, డేటా- Chrome సింక్తో ఇతర పరికరాలకు అనుసరించబడదు. పర్యవేక్షించబడే వినియోగదారు ఈ పరికరానికి మాత్రమే వర్తింపజేయబడతారు.</translation> <translation id="258932246702879617"><ph name="BEGIN_BOLD" />విధి పట్టీకి పిన్ చేయి<ph name="END_BOLD" /> ఎంపికను ఎంచుకోండి</translation> -<translation id="2594999711683503743">Googleలో వెతకండి లేదా URLని టైప్ చేయండి</translation> +<translation id="2594999711683503743">Googleలో వెతకండి లేదా URLను టైప్ చేయండి</translation> <translation id="2603115962224169880">కంప్యూటర్ నుండి హానికరమైనవి తీసివేయండి</translation> <translation id="2603463522847370204">&ఒక అజ్ఞాత విండోలో తెరువు</translation> <translation id="2604255671529671813">నెట్వర్క్ కనెక్షన్ ఎర్రర్</translation> @@ -1123,7 +1126,7 @@ <translation id="2672142220933875349">చెల్లని crx ఫైల్, అన్ప్యాక్ చేయడం విఫలమైంది.</translation> <translation id="2672394958563893062">ఎర్రర్ ఏర్పడింది. మొదటి నుండి పునఃప్రారంభించడానికి క్లిక్ చేయండి.</translation> <translation id="2673135533890720193">మీ బ్రౌజింగ్ చరిత్రను చదవడానికి అనుమతి</translation> -<translation id="2673589024369449924">ఈ వినియోగదారు కోసం డెస్క్టాప్ సత్వరమార్గాన్ని సృష్టించు</translation> +<translation id="2673589024369449924">ఈ వినియోగదారు కోసం డెస్క్టాప్ షార్ట్కట్ను సృష్టించు</translation> <translation id="2676946222714718093">ఇందులో ప్లే అవుతోంది</translation> <translation id="2677748264148917807">నిష్క్రమించు</translation> <translation id="2678063897982469759">మళ్లీ-ప్రారంభించు</translation> @@ -1282,7 +1285,7 @@ <translation id="2913331724188855103">కుక్కీ డేటాను సేవ్ చేయడానికి, చదవడానికి సైట్లను అనుమతిస్తుంది (సిఫార్సు చేయబడింది)</translation> <translation id="2915102088417824677">కార్యకలాపం లాగ్ని చూడండి</translation> <translation id="2916073183900451334">ఫారమ్ ఫీల్డ్ల లాగా వెబ్పేజీ హైలైట్ల లింక్లపై ట్యాబ్ను నొక్కడం</translation> -<translation id="2916745397441987255">పొడిగింపులను శోధించండి</translation> +<translation id="2916745397441987255">ఎక్స్టెన్షన్లను వెతకండి</translation> <translation id="2921081876747860777">దయచేసి మీ స్థానిక డేటాను రక్షించడానికి పాస్వర్డ్ను సృష్టించండి.</translation> <translation id="2925966894897775835">షీట్లు</translation> <translation id="2926085873880284723">డిఫాల్ట్ షార్ట్కట్లను పునరుద్ధరించండి</translation> @@ -1314,6 +1317,7 @@ <translation id="2972581237482394796">&పునరావృతం</translation> <translation id="2972642118232180842">ముఖ్యమైన కంటెంట్ను మాత్రమే అమలు చేయి (సిఫార్సు చేస్తున్నాము)</translation> <translation id="2973324205039581528">సైట్ని మ్యూట్ చేయండి</translation> +<translation id="2977480621796371840">గుంపు నుండి తీసివేయి</translation> <translation id="2979639724566107830">కొత్త విండోలో తెరువు</translation> <translation id="2981113813906970160">పెద్ద మౌస్ కర్సర్ను చూపు</translation> <translation id="2982970937345031">అనామకంగా నివేదించు</translation> @@ -1453,7 +1457,7 @@ <translation id="3208703785962634733">నిర్థారించబడలేదు</translation> <translation id="3213187967168344806">ప్రింటర్ని జోడించడం సాధ్యం కాలేదు. మీ కంప్యూటర్ను పునఃప్రారంభించి, ఆపై మళ్లీ ప్రయత్నించండి.</translation> <translation id="321356136776075234">పరికరం OU (ఉదా. OU=Chromebooks,DC=example,DC=com)</translation> -<translation id="3217843140356091325">షార్ట్కట్ని సృష్టించాలా?</translation> +<translation id="3217843140356091325">షార్ట్కట్ను సృష్టించాలా?</translation> <translation id="321799795901478485">జిప్ ఆర్కైవర్</translation> <translation id="321834671654278338">Linux అన్ఇన్స్టాలర్</translation> <translation id="3220586366024592812"><ph name="CLOUD_PRINT_NAME" /> కనెక్టర్ విధానం క్రాష్ అయ్యింది. పునఃప్రారంభించాలా?</translation> @@ -1564,6 +1568,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">విభాగిని</translation> <translation id="3389312115541230716">టాస్క్బార్లో <ph name="SMALL_PRODUCT_LOGO" /> చిహ్నంపై కుడి క్లిక్ చేయండి</translation> +<translation id="3393352139658145068">ఎవరైనా “Ok Google” చెప్పినప్పుడు అమలయ్యేలా అసిస్టెంట్ను యాక్టివేట్ చేయండి. బ్యాటరీని ఆదా చేయడానికి, మీ పరికరాన్ని పవర్ సోర్స్కు కనెక్ట్ చేసినప్పుడు మాత్రమే “Ok Google” ఆన్లో ఉంచబడుతుంది.</translation> <translation id="3396800784455899911">"నేను అంగీకరిస్తున్నాను" బటన్ని క్లిక్ చేయడం ద్వారా, ఈ Google సేవల కోసం ఎగువ పేర్కొన్న వాటిని ప్రాసెస్ చేయడానికి మీరు అంగీకరిస్తున్నారు.</translation> <translation id="3399432415385675819">నోటిఫికేషన్లు నిలిపివేయబడతాయి</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -1662,7 +1667,7 @@ <translation id="3527085408025491307">ఫోల్డర్</translation> <translation id="3527276236624876118"><ph name="USER_DISPLAY_NAME" /> అనే పేరుగల పర్యవేక్షించబడే వినియోగదారు సృష్టించబడ్డారు.</translation> <translation id="3528033729920178817">ఈ పేజీ మీ స్థానాన్ని ట్రాక్ చేస్తోంది.</translation> -<translation id="3528498924003805721">సత్వరమార్గ లక్ష్యాలు</translation> +<translation id="3528498924003805721">షార్ట్కట్ లక్ష్యాలు</translation> <translation id="3530305684079447434">మీ బుక్మార్క్లను మీ అన్ని పరికరాల్లో పొందడానికి, <ph name="SIGN_IN_LINK" />.</translation> <translation id="3532844647053365774"><ph name="HOST" /> మీ మైక్రోఫోన్ను ఉపయోగించాలనుకుంటోంది</translation> <translation id="353316712352074340"><ph name="WINDOW_TITLE" /> - ఆడియో మ్యూట్ చేయబడింది</translation> @@ -1681,7 +1686,7 @@ <translation id="3551320343578183772">ట్యాబ్ను మూసివేయి</translation> <translation id="3552780134252864554">నిష్క్రమణలో క్లియర్ చేయబడింది</translation> <translation id="3555812735919707620">ఎక్సటెన్షన్ని తీసివేయి</translation> -<translation id="3556000484321257665">మీ శోధన ఇంజిన్ <ph name="URL" />కి మార్చబడింది.</translation> +<translation id="3556000484321257665">మీ శోధన ఇంజిన్ <ph name="URL" />కు మార్చబడింది.</translation> <translation id="3559262020195162408">పరికరంలో విధానాన్ని ఇన్స్టాల్ చేయడంలో విఫలమైంది.</translation> <translation id="3562423906127931518">ఈ ప్రక్రియకు కొద్ది నిమిషాలు పట్టవచ్చు. Linux కంటెయినర్ని సెటప్ చేస్తోంది.</translation> <translation id="3563432852173030730">కియోస్క్ అప్లికేషన్ను డౌన్లోడ్ చేయడం సాధ్యపడలేదు.</translation> @@ -1844,7 +1849,7 @@ <translation id="3780536599611287598">'<ph name="FOLDER_NAME" />'లోకి ఫైల్లను తరలించడానికి మీకు అనుమతి లేదు.</translation> <translation id="378312418865624974">ఈ కంప్యూటర్ యొక్క ప్రత్యేక ఐడెంటిఫైయర్ని చదవడం</translation> <translation id="3785071023202624850">{NUM_TABS,plural, =1{ట్యాబ్ను మ్యూట్ చేయి}other{ట్యాబ్లను మ్యూట్ చేయి}}</translation> -<translation id="3785308913036335955">అనువర్తనాల సత్వరమార్గాన్ని చూపు</translation> +<translation id="3785308913036335955">యాప్ల షార్ట్కట్ను చూపు</translation> <translation id="3785727820640310185">ఈ సైట్ కోసం సేవ్ చేసిన పాస్వర్డ్లు</translation> <translation id="3786301125658655746">మీరు ఆఫ్లైన్లో ఉన్నారు</translation> <translation id="3788401245189148511">ఇది వీటిని చేయాలనుకుంటోంది:</translation> @@ -1876,7 +1881,7 @@ <translation id="3827306204503227641">శాండ్బాక్స్ చేయని ప్లగిన్లను అనుమతించడం కొనసాగించు</translation> <translation id="38275787300541712">పూర్తయినప్పుడు Enter నొక్కండి</translation> <translation id="3827774300009121996">&పూర్తి స్క్రీన్</translation> -<translation id="3828029223314399057">బుక్మార్క్లను శోధించు</translation> +<translation id="3828029223314399057">బుక్మార్క్లను వెతుకు</translation> <translation id="3829765597456725595">SMB ఫైల్ షేర్</translation> <translation id="3830674330436234648">ప్లేబ్యాక్ అందుబాటులో లేదు</translation> <translation id="3831436149286513437">Google డిస్క్ శోధన సూచనలు</translation> @@ -1937,7 +1942,7 @@ <translation id="3909791450649380159">క&త్తిరించు</translation> <translation id="3911073280391218446"><ph name="USER_DISPLAY_NAME" /> (ఈ పరికరంలో పేరు ఉపయోగించబడింది)</translation> <translation id="3911824782900911339">కొత్త ట్యాబ్ పేజీ</translation> -<translation id="3915280005470252504">వాయిస్ ద్వారా శోధించు</translation> +<translation id="3915280005470252504">వాయిస్ ద్వారా వెతుకు</translation> <translation id="3916445069167113093">ఈ రకం ఫైల్ మీ కంప్యూటర్కు హాని చేయవచ్చు. అయినా సరే <ph name="FILE_NAME" />ని ఉంచాలని అనుకుంటున్నారా?</translation> <translation id="3918972485393593704">Googleకు వివరాలను నివేదించండి</translation> <translation id="3920504717067627103">సర్టిఫికెట్ విధానాలు</translation> @@ -1956,10 +1961,10 @@ <translation id="3937734102568271121">ఎల్లప్పుడూ <ph name="LANGUAGE" /> భాషలోది అనువదించు</translation> <translation id="3940233957883229251">ఆటోమేటిక్గా పునరావృతం చేయడాన్ని ప్రారంభించు</translation> <translation id="3941357410013254652">ఛానెల్ ID</translation> -<translation id="3941565636838060942">మీరు ఈ ప్రోగ్రామ్ యాక్సెస్ను దాచడానికి, దీని నియంత్రణ ప్యానెల్లోని +<translation id="3941565636838060942">ఈ ప్రోగ్రామ్కు యాక్సెస్ను దాచడానికి, మీరు దీనిని నియంత్రణ ప్యానెల్లోని <ph name="CONTROL_PANEL_APPLET_NAME" />ను ఉపయోగించి అన్ఇన్స్టాల్ చేయాలి. - <ph name="CONTROL_PANEL_APPLET_NAME" />ను ప్రారంభించాలనుకుంటున్నారా?</translation> + మీరు <ph name="CONTROL_PANEL_APPLET_NAME" />ను ప్రారంభించాలనుకుంటున్నారా?</translation> <translation id="394183848452296464">షార్ట్కట్ను సృష్టించడం సాధ్యపడదు</translation> <translation id="3943582379552582368">&వెనుకకు</translation> <translation id="3943857333388298514">అతికించు</translation> @@ -2080,7 +2085,7 @@ <translation id="412730574613779332">స్పాండెక్స్</translation> <translation id="412940972494182898">ఈసారికి ఫ్లాష్ని అమలు చేయి</translation> <translation id="4130199216115862831">పరికరం లాగ్</translation> -<translation id="4130207949184424187">ఈ పొడిగింపు మీరు ఓమ్నిపెట్టె నుండి శోధించేటప్పుడు చూపబడే పేజీని మార్చింది.</translation> +<translation id="4130207949184424187">మీరు ఓమ్నిబాక్స్ నుండి వెతికేటప్పుడు చూపబడే పేజీని ఈ ఎక్స్టెన్షన్ మార్చింది.</translation> <translation id="4130750466177569591">నేను అంగీకరిస్తున్నాను</translation> <translation id="413121957363593859">భాగాలు</translation> <translation id="4131410914670010031">నలుపు మరియు తెలుపు</translation> @@ -2111,7 +2116,7 @@ <translation id="4193154014135846272">Google పత్రం</translation> <translation id="4194570336751258953">క్లిక్ చేయడానికి టాప్ చేయి ప్రారంభించు</translation> <translation id="4195249722193633765">Linux (బీటా)తో అప్లికేషన్ని ఇన్స్టాల్ చేయండి</translation> -<translation id="4195643157523330669">కొత్త టాబ్లో తెరువు</translation> +<translation id="4195643157523330669">కొత్త ట్యాబ్లో తెరువు</translation> <translation id="4195814663415092787">మీరు నిష్క్రమించిన చోటు నుండే కొనసాగించండి</translation> <translation id="4197674956721858839">జిప్ ఎంపిక</translation> <translation id="4198146608511578238">మీ Google అసిస్టెంట్తో మాట్లాడటానికి లాంఛర్ చిహ్నాన్ని నొక్కి, ఉంచండి.</translation> @@ -2120,7 +2125,7 @@ <translation id="4206144641569145248">గ్రహాంతరవాసి</translation> <translation id="4206323443866416204">అభిప్రాయ నివేదిక</translation> <translation id="4206944295053515692">సూచనల కోసం Googleను అడగండి</translation> -<translation id="4208390505124702064"><ph name="SITE_NAME" />లో శోధించు</translation> +<translation id="4208390505124702064"><ph name="SITE_NAME" />లో వెతకండి</translation> <translation id="4209092469652827314">పెద్దది</translation> <translation id="4209464433672152343">ముద్రించడం కోసం పత్రాలను సిద్ధం చేయడానికి అవి <ph name="BEGIN_LINK_HELP" />Googleకు పంపబడతాయి<ph name="END_LINK_HELP" />. <ph name="BEGIN_LINK_DASHBOARD" />Google క్లౌడ్ ప్రింట్ డాష్బోర్డ్<ph name="END_LINK_DASHBOARD" />లో మీ ప్రింటర్లు మరియు ప్రింటర్ చరిత్రను చూడండి, సవరించండి మరియు నిర్వహించండి.</translation> <translation id="421017592316736757">ఈ ఫైల్ను యాక్సెస్ చేయడానికి మీరు తప్పనిసరిగా ఆన్లైన్లో ఉండాలి.</translation> @@ -2273,7 +2278,7 @@ <translation id="447252321002412580">Chrome ఫీచర్లు మరియు పనితీరును మెరుగుపరచడంలో సహాయపడండి</translation> <translation id="4472575034687746823">ప్రారంభించండి</translation> <translation id="4474155171896946103">అన్ని టాబ్లను బుక్మార్క్ చేయి...</translation> -<translation id="4475552974751346499">డౌన్లోడ్లను శోధించు</translation> +<translation id="4475552974751346499">డౌన్లోడ్లను వెతకండి</translation> <translation id="4476590490540813026">అథ్లెట్</translation> <translation id="4477015793815781985">Ctrl, Alt లేదా ⌘ని చేర్చండి</translation> <translation id="4478664379124702289">లిం&క్ను ఇలా సేవ్ చెయ్యి...</translation> @@ -2414,7 +2419,7 @@ <translation id="4708794300267213770">నిద్రావస్థ నుండి సక్రియం అవుతున్నప్పుడు లాక్ స్క్రీన్ని చూపు</translation> <translation id="4708849949179781599"><ph name="PRODUCT_NAME" /> నిష్క్రమించు</translation> <translation id="4711638718396952945">సెట్టింగ్లను పునరుద్ధరించు</translation> -<translation id="4713544552769165154">ఈ ఫైల్ Macintosh సాఫ్ట్వేర్ను ఉపయోగించే కంప్యూటర్ కోసం రూపొందించబడింది. ఇది Chrome OSను అమలు చేసే మీ పరికరానికి అనుకూలమైనది కాదు. దయచేసి తగిన ప్రత్యామ్నాయ యాప్ కోసం <ph name="BEGIN_LINK" />Chrome వెబ్ స్టోర్<ph name="END_LINK" />లో శోధించండి.<ph name="BEGIN_LINK_HELP" />మరింత తెలుసుకోండి<ph name="END_LINK_HELP" /></translation> +<translation id="4713544552769165154">ఈ ఫైల్ Macintosh సాఫ్ట్వేర్ను ఉపయోగించే కంప్యూటర్ కోసం రూపొందించబడింది. ఇది Chrome OSను అమలు చేసే మీ పరికరానికి అనుకూలమైనది కాదు. దయచేసి తగిన ప్రత్యామ్నాయ యాప్ కోసం <ph name="BEGIN_LINK" />Chrome వెబ్ స్టోర్<ph name="END_LINK" />లో వెతకండి.<ph name="BEGIN_LINK_HELP" />మరింత తెలుసుకోండి<ph name="END_LINK_HELP" /></translation> <translation id="4715553623069266137">చాలా సంక్షిప్తం (0.8s)</translation> <translation id="4716483597559580346">అదనపు భద్రత కోసం పవర్ వాష్ చేయండి</translation> <translation id="4720113199587244118">పరికరాలను జోడించు</translation> @@ -2512,7 +2517,7 @@ <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> ఉన్నట్టుంది (డిఫాల్ట్)</translation> <translation id="4864369630010738180">సైన్ ఇన్ అవుతోంది...</translation> <translation id="486635084936119914">డౌన్లోడ్ చేసిన తర్వాత స్వయంచాలకంగా నిర్దిష్ట ఫైల్ రకాలను తెరువు</translation> -<translation id="4869142322204669043">Google మీరు సందర్శించే సైట్లలోని కంటెంట్ను, అలాగే బ్రౌజింగ్ కార్యకలాపం మరియు పరస్పర చర్యలను ఉపయోగించడం ద్వారా <ph name="IDS_SHORT_PRODUCT_NAME" />తో పాటు అనువాదం, శోధన మరియు ప్రకటనలు వంటి ఇతర Google సేవలను వ్యక్తిగతీకరించవచ్చు. మీరు దీన్ని సెట్టింగ్లలో ఎప్పుడైనా అనుకూలీకరించవచ్చు.</translation> +<translation id="4869142322204669043">Google మీరు సందర్శించే సైట్లలోని కంటెంట్ను, అలాగే బ్రౌజింగ్ కార్యకలాపం మరియు పరస్పర చర్యలను ఉపయోగించడం ద్వారా <ph name="IDS_SHORT_PRODUCT_NAME" />ను మరియు అనువాదం, శోధన మరియు ప్రకటనలు వంటి ఇతర Google సేవలను వ్యక్తిగతీకరించవచ్చు. మీరు దీనిని సెట్టింగ్లలో ఎప్పుడైనా అనుకూలీకరించవచ్చు.</translation> <translation id="48704129375571883">అదనపు ఫీచర్లను జోడించండి</translation> <translation id="4870758487381879312">కాన్ఫిగరేషన్ సమాచారాన్ని పొందడం కోసం నిర్వాహకులు అందించిన పాస్వర్డ్ని నమోదు చేయండి</translation> <translation id="4870903493621965035">జత చేయబడిన పరికరాలు లేవు</translation> @@ -2557,7 +2562,7 @@ <translation id="4908811072292128752">ఒకేసారి రెండు సైట్లను బ్రౌజ్ చేయడానికి కొత్త ట్యాబ్ను తెరవండి</translation> <translation id="4909038193460299775">ఈ ఖాతా <ph name="DOMAIN" /> నిర్వహణలో ఉన్నందున, మీ బుక్మార్క్లు, చరిత్ర, పాస్వర్డ్లు మరియు ఇతర సెట్టింగ్లు ఈ పరికరం నుండి తీసివేయబడతాయి. అయితే, మీ డేటా మీ Google ఖాతాలో అలాగే నిల్వ చేయబడి ఉంటుంది. <ph name="BEGIN_LINK" />Google డాష్బోర్డ్<ph name="END_LINK" />లో నిర్వహించవచ్చు.</translation> <translation id="4909359680501173791">మీరు విజయవంతంగా నమోదు చేసుకున్నారు</translation> -<translation id="4912643508233590958">నిష్క్రియ మేల్కొలుపులు</translation> +<translation id="4912643508233590958">ఇన్యాక్టివ్ మేల్కొలుపులు</translation> <translation id="491691592645955587">సురక్షితమైన బ్రౌజర్కు మారండి</translation> <translation id="4917385247580444890">బలమైన</translation> <translation id="4918021164741308375"><ph name="ORIGIN" /> "<ph name="EXTENSION_NAME" />" పొడిగింపుతో కమ్యూనికేట్ చేయాలనుకుంటోంది</translation> @@ -2745,7 +2750,7 @@ <translation id="521582610500777512">ఫోటో విస్మరించబడింది</translation> <translation id="5222676887888702881">సైన్ ఔట్</translation> <translation id="52232769093306234">ప్యాకింగ్ విఫలమైంది.</translation> -<translation id="5225324770654022472">అనువర్తనాల సత్వరమార్గాన్ని చూపండి</translation> +<translation id="5225324770654022472">యాప్ల షార్ట్కట్ను చూపండి</translation> <translation id="5227679487546032910">డిఫాల్ట్ నీలం ఆకుపచ్చ రంగు అవతార్</translation> <translation id="5228076606934445476">పరికరంలో ఏదో తప్పు ఉంది. ఈ ఎర్రర్ నుండి మీ పరికరాన్ని పునరుద్ధరించడానికి మీరు పరికరాన్ని రీబూట్ చేసి, మళ్లీ ప్రయత్నించాలి.</translation> <translation id="5229189185761556138">ఇన్పుట్ పద్ధతులను నిర్వహించు</translation> @@ -2795,7 +2800,7 @@ <translation id="5275973617553375938">Google డిస్క్ నుండి పునరుద్ధరించబడిన ఫైల్లు</translation> <translation id="527605982717517565"><ph name="HOST" />పై ఎల్లప్పుడూ JavaScriptను అనుమతించు</translation> <translation id="5280174558369304332">తీసివేయాల్సిన ఎక్స్టెన్షన్లు:</translation> -<translation id="5280426389926346830">షార్ట్కట్ని సృష్టించాలా?</translation> +<translation id="5280426389926346830">షార్ట్కట్ను సృష్టించాలా?</translation> <translation id="528208740344463258">Android యాప్లను డౌన్లోడ్ చేసి, ఉపయోగించడం కోసం, ముందుగా మీరు ఈ అవసరమైన అప్డేట్ని ఇన్స్టాల్ చేయాలి. మీ <ph name="DEVICE_TYPE" /> అప్డేట్ అవుతున్న సమయంలో, మీరు దీనిని ఉపయోగించలేరు. ఇన్స్టాల్ చేయడం పూర్తయిన తర్వాత, మీ <ph name="DEVICE_TYPE" /> పునఃప్రారంభించబడుతుంది.</translation> <translation id="5282733140964383898">"ట్రాక్ చేయవద్దు"ను ప్రారంభించడం వలన మీ బ్రౌజింగ్ ట్రాఫిక్తో ఒక అభ్యర్థన చేర్చబడుతుంది. ఈ అభ్యర్థనకు వెబ్సైట్ ప్రతిస్పందించిందా లేదా మరియు అభ్యర్థన ఎలా పరిగణించబడింది అనే వాటిపై ఈ ఫీచర్ ప్రభావం ఆధారపడి ఉంటుంది. ఉదాహరణకు, కొన్ని వెబ్సైట్లు ఈ అభ్యర్థనకు ప్రతిస్పందనగా మీరు సందర్శించిన ఇతర వెబ్సైట్ల ఆధారంగా కాకుండా ఇతర ప్రకటనలను మీకు చూపుతాయి. అనేక వెబ్సైట్లు ఇప్పటికీ మీ బ్రౌజింగ్ డేటాను సేకరించి ఉపయోగిస్తాయి - ఉదాహరణకు భద్రతను మెరుగుపరిచేందుకు, వారి వెబ్సైట్లలో కంటెంట్, సేవలు, ప్రకటనలు మరియు సిఫార్సులను అందించేందుకు మరియు నివేదన గణాంకాలను రూపొందించేందుకు ఆ డేటాను ఉపయోగిస్తాయి. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation> <translation id="5283677936944177147">అయ్యో! పరికర మోడల్ లేదా క్రమ సంఖ్యను గుర్తించడంలో సిస్టమ్ విఫలమైంది.</translation> @@ -2849,7 +2854,7 @@ <translation id="5352033265844765294">టైమ్ స్టాంపింగ్</translation> <translation id="5353252989841766347">Chrome నుండి పాస్వర్డ్లను ఎగుమతి చేయండి</translation> <translation id="5355099869024327351">మీకు నోటిఫికేషన్లను చూపించడానికి అసిస్టెంట్ను అనుమతించండి</translation> -<translation id="5355926466126177564">"<ph name="EXTENSION_NAME" />" పొడిగింపు మీరు ఓమ్నిపెట్టె నుండి శోధించేటప్పుడు చూపబడే పేజీని మార్చింది.</translation> +<translation id="5355926466126177564">మీరు ఓమ్నిబాక్స్ నుండి వెతికేటప్పుడు చూపబడే పేజీని "<ph name="EXTENSION_NAME" />" ఎక్స్టెన్షన్ మార్చింది.</translation> <translation id="5358764674931277">ఫ్రేమ్ రేట్</translation> <translation id="5360150013186312835">సాధనపట్టీలో చూపండి</translation> <translation id="5362741141255528695">వ్యక్తిగత కీ ఫైల్ను ఎంచుకోండి.</translation> @@ -2900,11 +2905,11 @@ <translation id="5430931332414098647">తక్షణ టెథెరింగ్</translation> <translation id="5431318178759467895">రంగు</translation> <translation id="5431825016875453137">OpenVPN / L2TP</translation> -<translation id="5432996274932278848">మీ పరికరం, యాప్లు మరియు వెబ్ను శోధించండి. మీ యాప్లను నావిగేట్ చేయడానికి బాణం కీలను ఉపయోగించండి.</translation> +<translation id="5432996274932278848">మీ పరికరం, యాప్లు మరియు వెబ్ను వెతకండి. మీ యాప్లను నావిగేట్ చేయడానికి బాణం కీలను ఉపయోగించండి.</translation> <translation id="543381445212956829">WiMAXని ప్రారంభించు</translation> <translation id="5434065355175441495">PKCS #1 RSA ఎన్క్రిప్షన్</translation> <translation id="5436492226391861498">ప్రాక్సీ టనెల్ కోసం వేచి ఉంది...</translation> -<translation id="5436510242972373446"><ph name="SITE_NAME" /> శోధించు:</translation> +<translation id="5436510242972373446"><ph name="SITE_NAME" /> వెతుకు:</translation> <translation id="5438224778284622050">ఆఫ్లైన్ ఫైల్లను తొలగించాలా?</translation> <translation id="544083962418256601">సత్వరమార్గాలను సృష్టించు...</translation> <translation id="5442228125690314719">డిస్క్ ఇమేజ్ను సృష్టించడంలో ఎర్రర్ ఏర్పడింది. దయచేసి మళ్లీ ప్రయత్నించండి.</translation> @@ -3091,7 +3096,7 @@ <translation id="5700836101007545240">కనెక్షన్ను జోడించడాన్ని మీ నిర్వాహకులు నిలిపివేసారు</translation> <translation id="5701080607174488915">సర్వర్ నుండి విధానాన్ని పొందుతున్నప్పుడు ఎర్రర్ ఏర్పడింది.</translation> <translation id="5701381305118179107">మధ్యకు</translation> -<translation id="5702898740348134351">శోధన ఇంజిన్లను &సవరించు...</translation> +<translation id="5702898740348134351">&శోధన ఇంజిన్లను సవరించండి...</translation> <translation id="5704875434923668958">దీనికి సమకాలీకరిస్తోంది</translation> <translation id="5707185214361380026">దీని నుండి పొడిగింపుని లోడ్ చేయడంలో విఫలమైంది:</translation> <translation id="5708171344853220004">Microsoft ప్రధాన పేరు</translation> @@ -3134,7 +3139,7 @@ <translation id="577322787686508614">దీనిలో చదివే చర్యకు అనుమతి లేదు: "<ph name="DEVICE_NAME" />".</translation> <translation id="5774295353725270860">ఫైల్స్ యాప్ను తెరువు</translation> <translation id="5774515636230743468">మానిఫెస్ట్:</translation> -<translation id="577624874850706961">కుకీలను శోధించు</translation> +<translation id="577624874850706961">కుకీలను వెతుకు</translation> <translation id="5777468213129569553">Chromeని తెరవండి</translation> <translation id="5778747455497889540">యాదృచ్ఛికంగా రూపొందించబడి, మీ కంప్యూటర్కు కేటాయించబడిన సురక్షిత మాడ్యూల్ పాస్వర్డ్ దిగువున అందించబడింది:</translation> <translation id="5780011244986845107">మీరు ఎంచుకున్న ఫోల్డర్లో గోప్యమైన పైల్లు ఉన్నాయి. మీరు ఖచ్చితంగా ఈ ఫోల్డర్ కోసం "<ph name="APP_NAME" />"కు శాశ్వతంగా చదవగల యాక్సెస్ను మంజూరు చేయాలనుకుంటున్నారా?</translation> @@ -3165,7 +3170,8 @@ <translation id="5815645614496570556">X.400 చిరునామా</translation> <translation id="5816434091619127343">అభ్యర్ధించిన ప్రింటర్ మార్పులు ప్రింటర్ను నిరుపయోగంగా చేస్తాయి.</translation> <translation id="5817918615728894473">జత చేయి</translation> -<translation id="5821565227679781414">సత్వరమార్గాన్ని సృష్టించు</translation> +<translation id="5821565227679781414">షార్ట్కట్ను సృష్టించు</translation> +<translation id="5825412242012995131">ఆన్ (సిఫార్సు చేయడమైనది)</translation> <translation id="5826507051599432481">సాధారణ పేరు (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">ముద్రిస్తోంది...</translation> @@ -3233,7 +3239,7 @@ <translation id="5911533659001334206">షార్ట్కట్ వ్యూయర్</translation> <translation id="5911737117543891828">తాత్కాలిక Google డిస్క్ ఆఫ్లైన్ ఫైల్లు తొలగించబడతాయి. మీరు ఆఫ్లైన్లో అందుబాటులో ఉంచేట్లుగా సెట్ చేసిన ఫైల్లు ఈ పరికరం నుండి తొలగించబడవు.</translation> <translation id="5911887972742538906">మీ Linux అప్లికేషన్ యొక్క ఇన్స్టాలేషన్ సమయంలో ఎర్రర్ ఏర్పడింది.</translation> -<translation id="5912378097832178659">శోధన ఇంజిన్లను &సవరించు...</translation> +<translation id="5912378097832178659">&శోధన ఇంజిన్లను సవరించండి...</translation> <translation id="5913638992615760742">కాపీ చర్య విఫలమైంది, ఊహించని ఎర్రర్: <ph name="ERROR_MESSAGE" /></translation> <translation id="5914724413750400082">మధ్యగుణకము (<ph name="MODULUS_NUM_BITS" /> బిట్లు): <ph name="MODULUS_HEX_DUMP" /> @@ -3274,7 +3280,7 @@ <translation id="595959584676692139">ఈ ఎక్స్టెన్షన్ను ఉపయోగించడానికి పేజీని మళ్లీ లోడ్ చేయండి</translation> <translation id="5962207703002684882">మీ అసిస్టెంట్ మీ వాయిస్ మోడల్ని సృష్టించడానికి ఈ రికార్డింగ్లను ఉపయోగిస్తుంది, ఇది మీ పరికరంలో నిల్వ చేయబడుతుంది. అసిస్టెంట్ సెట్టింగ్లలో ఆ మోడల్ను తొలగించండి లేదా మళ్లీ శిక్షణనివ్వండి. మీ Google కార్యకలాప నియంత్రణలలో వాయిస్ ఆదేశాలను చూడండి లేదా తొలగించండి.</translation> <translation id="5963453369025043595"><ph name="NUM_HANDLES" /> (<ph name="NUM_KILOBYTES_LIVE" /> మిగిలి ఉన్నాయి)</translation> -<translation id="5965661248935608907">ఇది మీరు హోమ్ బటన్ను క్లిక్ చేసేటప్పుడు లేదా ఓమ్నిబాక్స్ నుండి వెతికేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation> +<translation id="5965661248935608907">మీరు హోమ్ బటన్ను క్లిక్ చేసేటప్పుడు లేదా ఓమ్నిబాక్స్ నుండి వెతికేటప్పుడు చూపబడే పేజీని కూడా ఇది నియంత్రిస్తుంది.</translation> <translation id="5971037678316050792">బ్లూటూత్ అడాప్టర్ స్థితిని మరియు జత చేసే విధానాన్ని నియంత్రించడానికి అనుమతి</translation> <translation id="5972017421290582825">MIDI సెట్టింగ్లను నిర్వహించండి...</translation> <translation id="5972708806901999743">పైకి తరలించు</translation> @@ -3401,7 +3407,7 @@ <translation id="6147020289383635445">ముద్రణా ప్రివ్యూ విఫలమైంది.</translation> <translation id="614940544461990577">ఇలా చేసి ప్రయత్నించండి:</translation> <translation id="6150853954427645995">ఆఫ్లైన్ వినియోగం కోసం ఈ ఫైల్ను సేవ్ చేయడానికి, ఆన్లైన్లోకి తిరిగి వచ్చి, ఫైల్పై కుడి క్లిక్ చేసి, ఆపై <ph name="OFFLINE_CHECKBOX_NAME" /> ఎంపికను ఎంచుకోండి.</translation> -<translation id="6151323131516309312"><ph name="SITE_NAME" />ను శోధించడానికి <ph name="SEARCH_KEY" />ని నొక్కండి</translation> +<translation id="6151323131516309312"><ph name="SITE_NAME" />ను వెతకడానికి <ph name="SEARCH_KEY" />ని నొక్కండి</translation> <translation id="6151771661215463137">ఫైల్ ఇప్పటికే మీ డౌన్లోడ్ ఫోల్డర్లో ఉంది.</translation> <translation id="615436196126345398">ప్రోటోకాల్</translation> <translation id="6154697846084421647">ప్రస్తుతం సైన్ ఇన్ చేసారు</translation> @@ -3468,7 +3474,7 @@ <translation id="6247802389331535091">సిస్టమ్: <ph name="ARC_PROCESS_NAME" /></translation> <translation id="624789221780392884">అప్డేట్ సిద్ధంగా ఉంది</translation> <translation id="6248400709929739064">ఉపశీర్షికలను ప్రారంభించు</translation> -<translation id="6248988683584659830">సెట్టింగ్లను వెతకండి</translation> +<translation id="6248988683584659830">శోధన సెట్టింగ్లు</translation> <translation id="6251870443722440887">GDI నిర్వహించేవి</translation> <translation id="6251889282623539337"><ph name="DOMAIN" /> సేవా నిబంధనలు</translation> <translation id="6254503684448816922">కీ రాజీ</translation> @@ -3655,7 +3661,7 @@ <translation id="654233263479157500">నావిగేషన్ ఎర్రర్లను పరిష్కరించడానికి సహాయం కోసం వెబ్ సేవను ఉపయోగించు</translation> <translation id="6544215763872433504">మీ కోసం Google సమర్పిత వెబ్ బ్రౌజర్</translation> <translation id="6545665334409411530">పునరావృత రేటు</translation> -<translation id="6545834809683560467">చిరునామా బార్లో లేదా యాప్ లాంఛర్ శోధన పెట్టెలో టైప్ చేసే శోధనలను మరియు URLలను పూర్తి చేయడంలో సహాయకరంగా ఉండటానికి సూచన సేవను ఉపయోగించండి</translation> +<translation id="6545834809683560467">చిరునామా బార్లో లేదా యాప్ లాంచర్ శోధన పెట్టెలో టైప్ చేసే శోధనలను మరియు URLలను పూర్తి చేయడంలో సహాయకరంగా ఉండటానికి సూచన సేవను ఉపయోగించండి</translation> <translation id="6547316139431024316">ఈ పొడిగింపు కోసం మళ్లీ హెచ్చరించవద్దు</translation> <translation id="6547354035488017500">కనీసం 512 MB స్థలాన్ని ఖాళీగా ఉంచండి, లేదంటే మీ పరికరం ప్రతిస్పందనరహితం అవుతుంది. స్థలాన్ని ఖాళీ చేయడానికి, పరికర నిల్వ నుండి ఫైల్లను తొలగించండి.</translation> <translation id="6549689063733911810">ఇటీవల</translation> @@ -3711,6 +3717,11 @@ <translation id="6629841649550503054">అన్నీ <ph name="BEGIN_LINK" />Google డిస్క్<ph name="END_LINK" />కి బ్యాకప్ చేయబడ్డాయి!</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> మీ తరపున దానికదే ప్రామాణీకరించుకోవడం కోసం ఒక ప్రమాణపత్రానికి శాశ్వత ప్రాప్యత కోరుతోంది.</translation> <translation id="6635956300022133031">వచనం-నుండి-ప్రసంగం వాయిస్లను ఎంచుకోండి మరియు అనుకూలీకరించండి</translation> +<translation id="6637585982786704944">అలాగే మీరు అనుమతి ఇచ్చిన యాప్లు, వెబ్సైట్లు, అవి సరిగా పనిచేయడానికి కావాల్సిన ఖాతా సమాచారాన్ని యాక్సెస్ చేయగలవు. + + మీరు ఖాతా ఏదీ జోడించకూడదనుకుంటే, వెబ్ బ్రౌజింగ్ కోసం అతిథిగా సైన్ ఇన్ చేయండి లేదా అజ్ఞాత విండోను తెరవండి. + + మీరు సెట్టింగ్లు -> Google ఖాతాలలో అన్ని ఖాతాలను వీక్షించవచ్చు, నిర్వహించవచ్చు.</translation> <translation id="6639554308659482635">SQLite మెమరీ</translation> <translation id="6641138807883536517">యాదృచ్ఛికంగా రూపొందించబడిన సురక్షిత మాడ్యూల్ పాస్వర్డ్ అందుబాటులో లేదు. పవర్వాష్ తర్వాత ఇలా జరగడం సాధారణం.</translation> <translation id="6643016212128521049">క్లియర్ చేయి</translation> @@ -3777,7 +3788,7 @@ <translation id="6736045498964449756">అయ్యో, పాస్వర్డ్లు సరిపోలలేదు!</translation> <translation id="6736243959894955139">చిరునామా</translation> <translation id="6736329909263487977"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />]</translation> -<translation id="6739923123728562974">డెస్క్టాప్ సత్వరమార్గాన్ని చూపు</translation> +<translation id="6739923123728562974">డెస్క్టాప్ షార్ట్కట్ను చూపు</translation> <translation id="6740234557573873150"><ph name="FILE_NAME" /> పాజ్ చేయబడింది</translation> <translation id="6742339027238151589">స్క్రిప్ట్కి ప్రాప్యత చేయదగినది</translation> <translation id="6745592621698551453">ఇప్పుడే అప్డేట్ చేయి</translation> @@ -3913,6 +3924,7 @@ <translation id="6957231940976260713">సేవ పేరు</translation> <translation id="696203921837389374">మొబైల్ డేటా ఉపయోగించి సింక్ చేయడం ప్రారంభించు</translation> <translation id="6964390816189577014">వీరుడు</translation> +<translation id="6964760285928603117">గుంపు నుండి తీసివేయి</translation> <translation id="6965382102122355670">సరే</translation> <translation id="6965648386495488594">పోర్ట్</translation> <translation id="6965978654500191972">పరికరం</translation> @@ -3925,7 +3937,7 @@ <translation id="6974609594866392343">ఆఫ్లైన్ డెమో మోడ్</translation> <translation id="6977381486153291903">ఫర్మ్వేర్ పునర్విమర్శ</translation> <translation id="6978121630131642226">శోధన ఇంజిన్లు</translation> -<translation id="6978611942794658017">ఈ ఫైల్, Windows సాఫ్ట్వేర్ను ఉపయోగించే PC కోసం రూపొందించబడింది. ఇది Chrome OS అమలయ్యే మీ పరికరానికి అనుకూలంగా లేదు. దయచేసి తగిన ప్రత్యామ్నాయ యాప్ కోసం Chrome వెబ్ స్టోర్లో శోధించండి.</translation> +<translation id="6978611942794658017">ఈ ఫైల్ Windows సాఫ్ట్వేర్ను ఉపయోగించే PC కోసం రూపొందించబడింది. ఇది Chrome OS అమలయ్యే మీ పరికరానికి అనుకూలంగా లేదు. దయచేసి తగిన ప్రత్యామ్నాయ యాప్ కోసం Chrome వెబ్ స్టోర్లో వెతకండి.</translation> <translation id="6979158407327259162">Google డిస్క్</translation> <translation id="6979440798594660689">మ్యూట్ (డిఫాల్ట్)</translation> <translation id="6979737339423435258">మొత్తం సమయం</translation> @@ -3971,7 +3983,7 @@ <translation id="7039912931802252762">Microsoft Smart Card Logon</translation> <translation id="7040138676081995583">దీనితో తెరువు...</translation> <translation id="7040230719604914234">ఆపరేటర్</translation> -<translation id="7042418530779813870">పే&స్ట్ చేసి మరియు శోధించండి</translation> +<translation id="7042418530779813870">పేస్ట్ చేసి వెతకండి</translation> <translation id="7043108582968290193">పూర్తయింది! అనుకూలంగా లేని అప్లికేషన్లను కనుగొనబడలేదు.</translation> <translation id="7044124535091449260">సైట్ యాక్సెస్ గురించి మరింత తెలుసుకోండి</translation> <translation id="7049293980323620022">ఫైల్ అలాగే ఉంచాలా?</translation> @@ -3992,7 +4004,7 @@ <translation id="7066944511817949584">"<ph name="DEVICE_NAME" />"కి కనెక్ట్ చేయడం విఫలమైంది.</translation> <translation id="7067725467529581407">దీన్ని మళ్లీ ఎప్పుడూ చూపవద్దు.</translation> <translation id="7070484045139057854">ఇది సైట్ డేటాను చదవగలదు మరియు మార్చగలదు</translation> -<translation id="7072010813301522126">సత్వరమార్గం పేరు</translation> +<translation id="7072010813301522126">షార్ట్కట్ పేరు</translation> <translation id="707392107419594760">మీ కీబోర్డ్ని ఎంచుకోండి:</translation> <translation id="7075513071073410194">RSA ఎన్క్రిప్షన్తో PKCS #1 MD5</translation> <translation id="7075625805486468288">HTTPS/SSLసర్టిఫికెట్లు మరియు సెట్టింగ్లను నిర్వహించండి</translation> @@ -4022,6 +4034,7 @@ <translation id="7109543803214225826">షార్ట్కట్ తీసివేయబడింది</translation> <translation id="7113502843173351041">మీ ఇమెయిల్ చిరునామాను తెలియపరచడానికి అనుమతి</translation> <translation id="7114054701490058191">పాస్వర్డ్లు సరిపోలలేదు</translation> +<translation id="7114648273807173152">మీ Google ఖాతాకు సైన్ ఇన్ చేయడం కోసం Smart Lockని ఉపయోగించడానికి, సెట్టింగ్లు > కనెక్ట్ చేసిన పరికరాలు > మీ ఫోన్ > Smart Lockకు వెళ్లండి.</translation> <translation id="7117228822971127758">దయచేసి తర్వాత మళ్లీ ప్రయత్నించండి</translation> <translation id="7117247127439884114">మళ్ళీ సైన్ ఇన్ చెయ్యండి...</translation> <translation id="711840821796638741">నిర్వహించబడే బుక్మార్క్లను చూపు</translation> @@ -4031,7 +4044,7 @@ <translation id="7121389946694989825">వినియోగం & విశ్లేషణల డేటాను పంపండి. ఈ పరికరం ప్రస్తుతం సమస్య విశ్లేషణ, అలాగే పరికర, యాప్ వినియోగ డేటాను ఆటోమేటిక్గా Googleకి పంపుతుంది. ఇది మీ చిన్నారి గురించి గుర్తించడానికి ఉపయోగించబడదు, ఇది కేవలం సిస్టమ్, యాప్ స్థిరత్వానికి, ఇతర మెరుగుదలలకు సహాయపడుతుంది. కొంత సముదాయ డేటా కూడా Google యాప్లకు, అలాగే Android డెవలపర్ల లాంటి భాగస్వాములకు సహాయపడుతుంది. మీ చిన్నారి కోసం అదనపు వెబ్ & యాప్ కార్యకలాపం సెట్టింగ్ను ఆన్ చేసినట్లయితే, ఈ డేటా వారి Google ఖాతాలో సేవ్ చేయబడవచ్చు. <ph name="BEGIN_LINK1" />మరింత తెలుసుకోండి<ph name="END_LINK1" /></translation> <translation id="7123360114020465152">ఇకపై మద్దతు లేదు</translation> <translation id="7124929488592184705"><ph name="DOCUMENT_NAME" />ని ముద్రిస్తున్నప్పుడు లోపం ఏర్పడింది</translation> -<translation id="7126604456862387217">'<b><ph name="SEARCH_STRING" /></b>' - <em>డిస్క్లో శోధించు</em></translation> +<translation id="7126604456862387217">'<b><ph name="SEARCH_STRING" /></b>' - <em>డిస్క్లో వెతకండి</em></translation> <translation id="7127980134843952133">డౌన్లోడ్ చరిత్ర</translation> <translation id="7131040479572660648"><ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> మరియు <ph name="WEBSITE_3" />లోని మీ డేటాను చదవండి</translation> <translation id="713122686776214250">పే&జీని జోడించండి...</translation> @@ -4173,10 +4186,11 @@ <translation id="7341834142292923918">ఈ సైట్కు యాక్సెస్ కోరుతోంది</translation> <translation id="7345706641791090287">మీ పాస్వర్డ్ను నిర్ధారించండి</translation> <translation id="7346909386216857016">సరే, అర్థమైంది</translation> -<translation id="7347751611463936647">ఈ ఎక్స్టెన్షన్ను ఉపయోగించడానికి, "<ph name="EXTENSION_KEYWORD" />", తర్వాత TAB, ఆపై మీ ఆదేశం లేదా శోధనను టైప్ చేయండి.</translation> +<translation id="7347751611463936647">ఈ ఎక్స్టెన్షన్ను ఉపయోగించడానికి, "<ph name="EXTENSION_KEYWORD" />", తర్వాత TAB, ఆపై మీ ఆదేశం లేదా శోధనను టైప్ చేయండి.</translation> <translation id="7348093485538360975">ఆన్-స్క్రీన్ కీబోర్డ్</translation> <translation id="7352651011704765696">ఏదో తప్పు జరిగింది</translation> <translation id="735361434055555355">Linuxను ఇన్స్టాల్ చేస్తోంది...</translation> +<translation id="7353887511974462734">ఇప్పటికే ఉన్న గుంపునకు జోడించు</translation> <translation id="735745346212279324">VPN డిస్కనెక్ట్ చేయబడింది</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" /> అంశాలను కాపీ చేస్తోంది...</translation> <translation id="7359588939039777303">ప్రకటనలు బ్లాక్ చేయబడ్డాయి.</translation> @@ -4239,7 +4253,6 @@ <translation id="7456847797759667638">స్థానాన్ని తెరువు...</translation> <translation id="7461924472993315131">పిన్ చేయి</translation> <translation id="7463006580194749499">వ్యక్తిని జోడించు</translation> -<translation id="7464902436585505072">"Ok Google" వాయిస్ నమూనా (మోడల్)</translation> <translation id="7465778193084373987">Netscape సర్టిఫికెట్ రద్దు URL</translation> <translation id="7469894403370665791">ఆటోమేటిక్గా ఈ నెట్వర్క్కు కనెక్ట్ చేయి</translation> <translation id="747114903913869239">లోపం: పొడిగింపులను డీకోడ్ చేయడం సాధ్యం కాదు</translation> @@ -4457,7 +4470,7 @@ <translation id="7800518121066352902">అ&పసవ్యదిశలో తిప్పు</translation> <translation id="780301667611848630">వద్దు , ధన్యవాదాలు</translation> <translation id="7805768142964895445">స్థితి</translation> -<translation id="7807067443225230855">శోధన మరియు సహాయకం</translation> +<translation id="7807067443225230855">శోధన మరియు అసిస్టెంట్</translation> <translation id="7807711621188256451">మీ కెమెరాను ప్రాప్యత చేయడానికి <ph name="HOST" />ని ఎల్లప్పుడూ అనుమతించండి</translation> <translation id="7810202088502699111">ఈ పేజీపై పాప్-అప్లు నిరోధించబడ్డాయి.</translation> <translation id="781167124805380294"><ph name="FILE_NAME" />ని ప్రసారం చేయండి</translation> @@ -4609,7 +4622,7 @@ <translation id="798835209536175951">మీ Chromebook నుండి వచన సందేశాలను పంపండి లేదా స్వీకరించండి. <ph name="LINK_BEGIN" />మరింత తెలుసుకోండి<ph name="LINK_END" /></translation> <translation id="7988355189918024273">సులభంగా యాక్సెస్ చేసే ఫీచర్లను ప్రారంభించు</translation> <translation id="7994702968232966508">EAP పద్ధతి</translation> -<translation id="799547531016638432">షార్ట్కట్ని తీసివేయి</translation> +<translation id="799547531016638432">షార్ట్కట్ను తీసివేయి</translation> <translation id="7997826902155442747">ప్రాసెస్ ప్రాధాన్యత</translation> <translation id="7999229196265990314">ఈ క్రింది ఫైళ్ళను సృష్టించింది: @@ -4805,6 +4818,7 @@ <translation id="827097179112817503">హోమ్ బటన్ను చూపు</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 బుక్మార్క్ తొలగించబడింది}other{# బుక్మార్క్లు తొలగించబడ్డాయి}}</translation> <translation id="8272443605911821513">"మరిన్ని సాధనాలు" మెనూలోని ఎక్స్టెన్షన్లను క్లిక్ చేయడం ద్వారా మీ ఎక్స్టెన్షన్లను నిర్వహించండి.</translation> +<translation id="8272966760965438857">మీ Google ఖాతాలను ఒకే స్థలంలో నిర్వహించండి</translation> <translation id="8274332263553132018">ఫైల్ను ప్రసారం చేయండి</translation> <translation id="8274924778568117936">అప్డేట్ పూర్తయ్యే వరకు మీ <ph name="DEVICE_TYPE" />ని ఆఫ్ చేయవద్దు లేదా మూసివేయవద్దు. ఇన్స్టాలేషన్ పూర్తయిన తర్వాత మీ <ph name="DEVICE_TYPE" /> పునఃప్రారంభమవుతుంది.</translation> <translation id="8275038454117074363">దిగుమతి చెయ్యి</translation> @@ -4882,7 +4896,7 @@ <translation id="8419368276599091549">మీ <ph name="DEVICE_TYPE" />కు స్వాగతం!</translation> <translation id="8425213833346101688">మార్చు</translation> <translation id="8425492902634685834">టాస్క్బార్కి పిన్ చేయి</translation> -<translation id="8425755597197517046">పే&స్ట్ చేసి, శోధించండి</translation> +<translation id="8425755597197517046">అతికించి, వెతకండి</translation> <translation id="8425768983279799676">మీరు మీ పిన్ని ఉపయోగించి మీ పరికరాన్ని అన్లాక్ చేయవచ్చు.</translation> <translation id="8426713856918551002">ప్రారంభించబడుతోంది</translation> <translation id="8427292751741042100">ఏదైనా హోస్ట్లో పొందుపరచబడింది</translation> @@ -4983,7 +4997,7 @@ <translation id="8578639784464423491">99 అక్షరాలను మించకూడదు</translation> <translation id="8579285237314169903"><ph name="NUMBER_OF_FILES" /> అంశాలను సమకాలీకరిస్తోంది...</translation> <translation id="857943718398505171">అనుమతించబడింది (సిఫార్సు చేయబడింది)</translation> -<translation id="8581809080475256101">చరిత్రను చూసేందుకు ముందుకు వెళ్లు, సందర్భ మెను నొక్కండి</translation> +<translation id="8581809080475256101">ముందుకు వెళ్లడానికి నొక్కండి, చరిత్రను చూసేందుకు సందర్భ మెనూను నొక్కండి</translation> <translation id="8584280235376696778">&వీడియోను కొత్త టాబ్లో తెరువు</translation> <translation id="8588866096426746242">ప్రొఫైల్ గణాంకాలను చూపు</translation> <translation id="8588868914509452556"><ph name="WINDOW_TITLE" /> - హెడ్సెట్ ద్వారా VR కంటెంట్ని ప్రదర్శిస్తోంది.</translation> @@ -5049,7 +5063,7 @@ <translation id="8669949407341943408">తరలించబడుతున్నాయి...</translation> <translation id="867085395664725367">తాత్కాలిక సర్వర్ ఎర్రర్ ఏర్పడింది.</translation> <translation id="8671210955687109937">వ్యాఖ్యానించవచ్చు</translation> -<translation id="8673026256276578048">వెబ్లో శోధించండి...</translation> +<translation id="8673026256276578048">వెబ్లో వెతకండి...</translation> <translation id="8673383193459449849">సర్వర్ సమస్య</translation> <translation id="8675354002693747642">ముందే షేర్ చేసిన కీ</translation> <translation id="8676374126336081632">ఇన్పుట్ను తీసివేయండి</translation> @@ -5192,6 +5206,7 @@ <translation id="8883847527783433352">మరొక ఖాతాకు సమకాలీకరించు</translation> <translation id="8885197664446363138">Smart Lock అందుబాటులో లేదు</translation> <translation id="88870264962436283"><ph name="APP_NAME" />లో టచ్ IDని ఉపయోగించండి</translation> +<translation id="8888253246822647887">అప్గ్రేడ్ చేయడం పూర్తయినప్పుడు మీ యాప్ తెరవబడుతుంది. అప్గ్రేడ్లు చేయడానికి కొద్ది నిమిషాలు పట్టవచ్చు.</translation> <translation id="8888432776533519951">రంగు:</translation> <translation id="8890516388109605451">మూలాధారాలు</translation> <translation id="8892168913673237979">అంతా పూర్తయింది!</translation> @@ -5329,7 +5344,7 @@ <translation id="9100765901046053179">అధునాతన సెట్టింగ్లు</translation> <translation id="9101691533782776290">యాప్ను ప్రారంభించు</translation> <translation id="9102610709270966160">ఎక్స్టెన్షన్ను ప్రారంభించు</translation> -<translation id="9103868373786083162">చరిత్రను చూసేందుకు, 'వెనుకకు వెళ్లు', ఆ తర్వాత 'సందర్భోచిత మెనూ'ను నొక్కండి</translation> +<translation id="9103868373786083162">వెనుకకు వెళ్లడానికి నొక్కండి, చరిత్రను చూసేందుకు సందర్భ మెనూను నొక్కండి</translation> <translation id="9104396740804929809">వినియోగం & విశ్లేషణల డేటాను పంపండి. సమస్య విశ్లేషణ, పరికరం, యాప్ వినియోగ డేటాను Googleకి ఆటోమేటిక్గా పంపడం ద్వారా మీ Android అనుభవాన్ని మెరుగుపరచడంలో సహాయపడండి. ఇది సిస్టమ్, యాప్ స్థిరత్వానికి, అలాగే ఇతర మెరుగుదలలకు సహాయపడుతుంది. కొంత సముదాయ డేటా కూడా Google యాప్లకు, అలాగే Android డెవలపర్ల లాంటి భాగస్వాములకు సహాయపడుతుంది. ఈ సెట్టింగ్ని యజమాని అమలు చేసారు. ఈ పరికరానికి సంబంధించిన విశ్లేషణ, వినియోగ డేటాను Googleకి పంపేలా యజమాని ఎంచుకోవచ్చు. మీ అదనపు వెబ్ & యాప్ కార్యకలాపం సెట్టింగ్ను ఆన్ చేసినట్లయితే, ఈ డేటా మీ Google ఖాతాలో సేవ్ చేయబడవచ్చు. <ph name="BEGIN_LINK1" />మరింత తెలుసుకోండి<ph name="END_LINK1" /></translation> <translation id="9109122242323516435">స్థలాన్ని ఖాళీ చేయడానికి, పరికర నిల్వ నుండి ఫైల్లను తొలగించండి.</translation> <translation id="9110990317705400362">మేము మీ బ్రౌజింగ్ను సురక్షితం చేసే మార్గాల కోసం నిరంతరం శోధిస్తున్నాము. గతంలో, ఏ వెబ్సైట్ అయినా మీ బ్రౌజర్కు ఎక్సటెన్షన్ని జోడించడానికి మిమ్మల్ని ప్రాంప్ట్ చేయవచ్చు. Google Chrome తాజా వెర్షన్లలో, మీరు తప్పనిసరిగా ఎక్సటెన్షన్ల పేజీలో వాటిని జోడించడం ద్వారా ఈ ఎక్సటెన్షన్లను ఇన్స్టాల్ చేయాలనుకుంటున్నట్లు Chromeకి ప్రత్యేకించి తెలియజేయాలి. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation> @@ -5352,7 +5367,7 @@ <translation id="9131598836763251128">దయచేసి ఒకటి లేదా మరిన్ని ఫైళ్ళను ఎంచుకోండి</translation> <translation id="9133055936679483811">జిప్ చేయడంలో విఫలమైంది. <ph name="ERROR_MESSAGE" /></translation> <translation id="9134304429738380103">అవును, నాకు సమ్మతమే.</translation> -<translation id="9134524245363717059">ఈ ఫైల్, Macintosh సాఫ్ట్వేర్ను ఉపయోగించే కంప్యూటర్ కోసం రూపొందించబడింది. ఇది Chrome OS అమలయ్యే మీ పరికరానికి అనుకూలంగా లేదు. దయచేసి తగిన ప్రత్యామ్నాయ యాప్ కోసం Chrome వెబ్ స్టోర్లో శోధించండి.</translation> +<translation id="9134524245363717059">ఈ ఫైల్ Macintosh సాఫ్ట్వేర్ను ఉపయోగించే కంప్యూటర్ కోసం రూపొందించబడింది. Chrome OS అమలయ్యే మీ పరికరానికి ఇది అనుకూలంగా లేదు. దయచేసి తగిన ప్రత్యామ్నాయ యాప్ కోసం Chrome వెబ్ స్టోర్లో వెతకండి.</translation> <translation id="9137013805542155359">అసలును చూపించు</translation> <translation id="9137916601698928395">లింక్ను <ph name="USER" /> తరపున తెరువు</translation> <translation id="9138978632494473300">కింది స్థలాలకు షార్ట్కట్లను జోడించండి:</translation> @@ -5366,7 +5381,7 @@ <translation id="9153934054460603056">గుర్తింపు మరియు పాస్వర్డ్ సేవ్ చెయ్యి</translation> <translation id="9154194610265714752">నవీకరించబడింది</translation> <translation id="9154418932169119429">ఈ చిత్రం ఆఫ్లైన్లో అందుబాటులో లేదు.</translation> -<translation id="91568222606626347">సత్వరమార్గాన్ని సృష్టించు...</translation> +<translation id="91568222606626347">షార్ట్కట్ను సృష్టించు...</translation> <translation id="9157697743260533322">వినియోగదారులందరి కోసం స్వయంచాలక అప్డేట్లను సెటప్ చేయడం విఫలమైంది (ప్రీఫ్లయిట్ ప్రారంభ లోపం: <ph name="ERROR_NUMBER" />)</translation> <translation id="9158715103698450907">అయ్యో! ప్రామాణీకరణ సమయంలో నెట్వర్క్ కమ్యూనికేషన్ సమస్య ఏర్పడింది. దయచేసి మీ నెట్వర్క్ కనెక్షన్ను తనిఖీ చేసి, మళ్లీ ప్రయత్నించండి.</translation> <translation id="916607977885256133">చిత్రంలో చిత్రం</translation> @@ -5386,7 +5401,7 @@ <translation id="9188732951356337132">వినియోగం & విశ్లేషణల డేటాను పంపండి. ఈ పరికరం ప్రస్తుతం సమస్య విశ్లేషణ, అలాగే పరికర, యాప్ వినియోగ డేటాను ఆటోమేటిక్గా Googleకి పంపుతుంది. ఇది మీ చిన్నారి గురించి గుర్తించడానికి ఉపయోగించబడదు, ఇది కేవలం సిస్టమ్, యాప్ స్థిరత్వానికి, అలాగే ఇతర మెరుగుదలలకు సహాయపడుతుంది. కొంత సముదాయ డేటా కూడా Google యాప్లకు, అలాగే Android డెవలపర్ల లాంటి భాగస్వాములకు సహాయపడుతుంది. మీ చిన్నారి కోసం అదనపు వెబ్ & యాప్ కార్యకలాపం సెట్టింగ్ను ఆన్ చేసినట్లయితే, ఈ డేటా వారి Google ఖాతాలో సేవ్ చేయబడవచ్చు. <ph name="BEGIN_LINK2" />మరింత తెలుసుకోండి<ph name="END_LINK2" /></translation> <translation id="9190063653747922532">L2TP/IPsec + ముందుగా భాగస్వామ్యం చేసిన కీ</translation> <translation id="919031884024748298">ఫోటోలలో కనిపించే వివిధ అంశాలను లేబుల్ చేయడానికి ఫోటోలను Google సర్వర్లకు పంపుతుంది</translation> -<translation id="920045321358709304"><ph name="SEARCH_ENGINE" />ని శోధించు</translation> +<translation id="920045321358709304"><ph name="SEARCH_ENGINE" />ని వెతుకు</translation> <translation id="9201220332032049474">స్క్రీన్ లాక్ ఎంపికలు</translation> <translation id="9203398526606335860">&ప్రొఫైలింగ్ అనుమతించబడింది</translation> <translation id="9203904171912129171">ఒక పరికరాన్ని ఎంచుకోండి</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb index f83bccbcc..70746cbb 100644 --- a/chrome/app/resources/generated_resources_th.xtb +++ b/chrome/app/resources/generated_resources_th.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">เคอร์เซอร์เมาส์ขนาดใหญ่</translation> <translation id="1538729222189715449">กำลังเปิดไฟล์ Linux...</translation> <translation id="1540605929960647700">เปิดใช้โหมดสาธิต</translation> +<translation id="1541396123399225659">เพิ่มในกลุ่มใหม่</translation> <translation id="1542514202066550870">แท็บนี้กำลังนำเสนอเนื้อหา VR ไปยังชุดหูฟัง</translation> <translation id="1543284117603151572">นำเข้าจาก Edge</translation> <translation id="1545177026077493356">โหมดคีออสก์อัตโนมัติ</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">กำลังจัดรูปแบบ...</translation> <translation id="159359590073980872">แคชของภาพ</translation> <translation id="1593926297800505364">บันทึกวิธีการชำระเงิน</translation> +<translation id="1595492813686795610">Linux กำลังอัปเกรด</translation> <translation id="1598233202702788831">ผู้ดูแลระบบปิดใช้การอัปเดต</translation> <translation id="1600857548979126453">เข้าถึงแบ็คเอนด์เครื่องซ่อมแซมหน้าเว็บ</translation> <translation id="1601560923496285236">นำไปใช้</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">เปิดใช้งานธีม</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">ดูใน Chrome เว็บสโตร์</translation> -<translation id="1761588866118490543">รูปแบบเสียง</translation> <translation id="176193854664720708">เซ็นเซอร์ลายนิ้วมืออยู่ในปุ่มเปิด/ปิด โปรดแตะเบาๆ ด้วยนิ้วใดก็ได้</translation> <translation id="1763046204212875858">สร้างทางลัดไปยังแอปพลิเคชัน</translation> <translation id="1763108912552529023">สำรวจต่อไป</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">พิมพ์โดยใช้ช่องโต้ตอบของระบบ... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">ถามก่อนที่จะส่ง (แนะนำ)</translation> <translation id="2384436799579181135">เกิดข้อผิดพลาด โปรดตรวจสอบเครื่องพิมพ์และลองอีกครั้ง</translation> +<translation id="2386926718981642523">เข้าถึง Assistant ได้ทุกเมื่อเพียงพูดว่า "Ok Google"</translation> <translation id="2387458720915042159">ประเภทการเชื่อมต่อพร็อกซี</translation> <translation id="2391419135980381625">แบบอักษรมาตรฐาน</translation> <translation id="2391762656119864333">เพิกถอน</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> ไม่สามารถเชื่อมต่อกับ <ph name="NETWORK_ID" /> โปรดเลือกเครือข่ายอื่นหรือลองอีกครั้ง</translation> <translation id="2553440850688409052">ซ่อนปลั๊กอินนี้</translation> <translation id="2554553592469060349">ไฟล์ที่เลือกมีขนาดใหญ่เกินไป (ขนาดสูงสุด: 3 MB)</translation> +<translation id="255747371423522804">เพิ่มในกลุ่มที่มีอยู่</translation> <translation id="2558896001721082624">แสดงตัวเลือกการเข้าถึงในเมนูระบบไว้เสมอ</translation> <translation id="2562685439590298522">เอกสาร</translation> <translation id="2562743677925229011">ไม่ได้ลงชื่อเข้าใช้ <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">&ทำซ้ำ</translation> <translation id="2972642118232180842">เรียกใช้เฉพาะเนื้อหาที่สำคัญ (แนะนำ)</translation> <translation id="2973324205039581528">ปิดเสียงเว็บไซต์</translation> +<translation id="2977480621796371840">นำออกจากกลุ่ม</translation> <translation id="2979639724566107830">เปิดในหน้าต่างใหม่</translation> <translation id="2981113813906970160">แสดงเคอร์เซอร์เมาส์ขนาดใหญ่</translation> <translation id="2982970937345031">รายงานแบบไม่ระบุตัวตน</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">ตัวแยก</translation> <translation id="3389312115541230716">คลิกขวาที่ไอคอน <ph name="SMALL_PRODUCT_LOGO" /> ในแถบงาน</translation> +<translation id="3393352139658145068">เปิดใช้งาน Assistant เมื่อมีคนพูดว่า “Ok Google” วลี “Ok Google” นี้จะใช้ได้เฉพาะเมื่ออุปกรณ์เชื่อมต่อกับแหล่งจ่ายไฟเพื่อเป็นการประหยัดแบตเตอรี่</translation> <translation id="3396800784455899911">การคลิกปุ่ม "ยอมรับและดำเนินการต่อ" แสดงว่าคุณยอมรับการดำเนินการของบริการต่างๆ ของ Google ตามที่ชี้แจ้งไว้ด้านบน</translation> <translation id="3399432415385675819">ระบบจะปิดใช้การแจ้งเตือน</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3167,6 +3172,7 @@ <translation id="5816434091619127343">การเปลี่ยนแปลงเครื่องพิมพ์ที่ขอจะทำให้เครื่องพิมพ์ใช้ไม่ได้</translation> <translation id="5817918615728894473">จับคู่</translation> <translation id="5821565227679781414">สร้างทางลัด</translation> +<translation id="5825412242012995131">เปิด (แนะนำ)</translation> <translation id="5826507051599432481">ชื่อทั่วไป (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">กำลังพิมพ์...</translation> @@ -3711,6 +3717,11 @@ <translation id="6629841649550503054">สำรองข้อมูลทั้งหมดไปยัง <ph name="BEGIN_LINK" />Google ไดรฟ์<ph name="END_LINK" />แล้ว!</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> ต้องการสิทธิ์ถาวรในการเข้าถึงใบรับรองเพื่อตรวจสอบสิทธิ์ตัวเองในนามของคุณ</translation> <translation id="6635956300022133031">เลือกและปรับแต่งเสียงของการอ่านออกเสียงข้อความ</translation> +<translation id="6637585982786704944">แอปและเว็บไซต์ที่มีสิทธิ์จะเข้าถึงข้อมูลบัญชีที่จำเป็นได้เพื่อให้ทำงานได้อย่างถูกต้อง + + หากไม่ต้องการเพิ่มบัญชี ให้ลงชื่อเข้าใช้ในฐานะผู้มาเยือนหรือเปิดหน้าต่างที่ไม่ระบุตัวตนเพื่อท่องเว็บ + + คุณไปที่การตั้งค่า -> บัญชี Google เพื่อดูและจัดการบัญชีทั้งหมดได้</translation> <translation id="6639554308659482635">หน่วยความจำ SQLite</translation> <translation id="6641138807883536517">รหัสผ่านโมดูลที่สร้างแบบสุ่มไม่พร้อมใช้งาน เหตุการณ์นี้เป็นเรื่องปกติหลังจากการ Powerwash</translation> <translation id="6643016212128521049">ล้าง</translation> @@ -3912,6 +3923,7 @@ <translation id="6957231940976260713">ชื่อบริการ</translation> <translation id="696203921837389374">เปิดใช้การซิงค์ผ่านข้อมูลมือถือ</translation> <translation id="6964390816189577014">ฮีโร่</translation> +<translation id="6964760285928603117">นำออกจากกลุ่ม</translation> <translation id="6965382102122355670">ตกลง</translation> <translation id="6965648386495488594">พอร์ต</translation> <translation id="6965978654500191972">อุปกรณ์</translation> @@ -4021,6 +4033,7 @@ <translation id="7109543803214225826">นำทางลัดออกแล้ว</translation> <translation id="7113502843173351041">ทราบที่อยู่อีเมลของคุณ</translation> <translation id="7114054701490058191">รหัสผ่านไม่ตรงกัน</translation> +<translation id="7114648273807173152">หากต้องการใช้ Smart Lock ในการลงชื่อเข้าใช้ Google ให้ไปที่การตั้งค่า > อุปกรณ์ที่เชื่อมต่อ > โทรศัพท์ของคุณ > Smart Lock</translation> <translation id="7117228822971127758">โปรดลองอีกครั้งในภายหลัง</translation> <translation id="7117247127439884114">ลงชื่อเข้าใช้อีกครั้ง...</translation> <translation id="711840821796638741">แสดงบุ๊กมาร์กที่มีการจัดการ</translation> @@ -4176,6 +4189,7 @@ <translation id="7348093485538360975">แป้นพิมพ์บนหน้าจอ</translation> <translation id="7352651011704765696">มีข้อผิดพลาดเกิดขึ้น</translation> <translation id="735361434055555355">กำลังติดตั้ง Linux...</translation> +<translation id="7353887511974462734">เพิ่มในกลุ่มที่มีอยู่</translation> <translation id="735745346212279324">ยกเลิกการเชื่อมต่อ VPN แล้ว</translation> <translation id="7359359531237882347">กำลังคัดลอก <ph name="NUMBER_OF_ITEMS" /> รายการ...</translation> <translation id="7359588939039777303">บล็อกโฆษณา</translation> @@ -4238,7 +4252,6 @@ <translation id="7456847797759667638">เปิดตำแหน่ง...</translation> <translation id="7461924472993315131">ตรึง</translation> <translation id="7463006580194749499">เพิ่มบุคคล</translation> -<translation id="7464902436585505072">รูปแบบเสียง "Ok Google"</translation> <translation id="7465778193084373987">URL การเพิกถอนใบรับรองของ Netscape</translation> <translation id="7469894403370665791">เชื่อมต่อกับเครือข่ายนี้อัตโนมัติ</translation> <translation id="747114903913869239">ข้อผิดพลาด: ไม่สามารถถอดรหัสส่วนขยาย</translation> @@ -4808,6 +4821,7 @@ <translation id="827097179112817503">แสดงปุ่มหน้าแรก</translation> <translation id="8271246892936492311">{COUNT,plural, =1{ลบบุ๊กมาร์ก 1 รายการแล้ว}other{ลบบุ๊กมาร์ก # รายการแล้ว}}</translation> <translation id="8272443605911821513">จัดการส่วนขยายของคุณโดยคลิกที่ "ส่วนขยาย" ในเมนู "เครื่องมือเพิ่มเติม"</translation> +<translation id="8272966760965438857">จัดการบัญชี Google ในที่เดียว</translation> <translation id="8274332263553132018">แคสต์ไฟล์</translation> <translation id="8274924778568117936">อย่าปิดเครื่องหรือปิดฝา <ph name="DEVICE_TYPE" /> จนกว่าการอัปเดตจะเสร็จสิ้น <ph name="DEVICE_TYPE" /> จะรีสตาร์ทหลังติดตั้งเสร็จแล้ว</translation> <translation id="8275038454117074363">การนำเข้า</translation> @@ -5194,6 +5208,7 @@ <translation id="8883847527783433352">ซิงค์กับอีกบัญชีหนึ่ง</translation> <translation id="8885197664446363138">Smart Lock ไม่พร้อมใช้งาน</translation> <translation id="88870264962436283">ใช้ Touch ID กับ <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">แอปจะเปิดเมื่อการอัปเกรดเสร็จสมบูรณ์ ซึ่งอาจใช้เวลาสักครู่</translation> <translation id="8888432776533519951">สี:</translation> <translation id="8890516388109605451">แหล่งที่มา</translation> <translation id="8892168913673237979">เรียบร้อยแล้ว!</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb index a148ecb..b9e5dc5 100644 --- a/chrome/app/resources/generated_resources_tr.xtb +++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Büyük fare imleci</translation> <translation id="1538729222189715449">Linux dosyaları açılıyor...</translation> <translation id="1540605929960647700">Demo modunu etkinleştir</translation> +<translation id="1541396123399225659">Yeni Gruba ekle</translation> <translation id="1542514202066550870">Bu sekme bir başlığa VR içeriği sunuyor.</translation> <translation id="1543284117603151572">Edge'den Aktarıldı</translation> <translation id="1545177026077493356">Otomatik Kiosk Modu</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Biçimlendiriliyor...</translation> <translation id="159359590073980872">Resim Önbelleği</translation> <translation id="1593926297800505364">Ödeme yöntemini kaydet</translation> +<translation id="1595492813686795610">Linux yeni sürüme geçiriliyor</translation> <translation id="1598233202702788831">Güncellemeler yöneticiniz tarafından devre dışı bırakıldı.</translation> <translation id="1600857548979126453">Sayfa hata ayıklayıcı arka ucuna erişme</translation> <translation id="1601560923496285236">Uygula</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Temayı etkinleştir</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Chrome Web Mağazası'nda göster</translation> -<translation id="1761588866118490543">Ses modeli</translation> <translation id="176193854664720708">Parmak izi sensörü güç düğmesidir. Tek parmağınızla bu düğmeye hafifçe dokunun.</translation> <translation id="1763046204212875858">Uygulama kısayolları oluşturun</translation> <translation id="1763108912552529023">Keşfetmeye devam et</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">Sistem iletişim kutusunu kullanarak yazdır... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Göndermeden önce sor (önerilir)</translation> <translation id="2384436799579181135">Bir hata oluştu. Lütfen yazıcınızı kontrol edin ve tekrar deneyin.</translation> +<translation id="2386926718981642523">"Ok Google" diyerek istediğiniz zaman Asistanınıza erişin</translation> <translation id="2387458720915042159">Proxy bağlantısı türü</translation> <translation id="2391419135980381625">Standart yazı tipi</translation> <translation id="2391762656119864333">İptal et</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" />, <ph name="NETWORK_ID" /> ağına bağlanamadı. Lütfen başka bir ağ seçin veya tekrar deneyin.</translation> <translation id="2553440850688409052">Bu Eklentiyi Gizle</translation> <translation id="2554553592469060349">Seçili dosya çok büyük (maks. boyut: 3 MB).</translation> +<translation id="255747371423522804">Mevcut gruba ekle</translation> <translation id="2558896001721082624">Sistem menüsünde erişilebilirlik seçeneklerini her zaman göster</translation> <translation id="2562685439590298522">Google Dokümanlar</translation> <translation id="2562743677925229011"><ph name="SHORT_PRODUCT_NAME" /> oturumu açılmadı</translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">&Yinele</translation> <translation id="2972642118232180842">Yalnızca önemli içeriği çalıştır (önerilir)</translation> <translation id="2973324205039581528">Sitenin Sesini Kapat</translation> +<translation id="2977480621796371840">Gruptan kaldır</translation> <translation id="2979639724566107830">Yeni pencerede aç</translation> <translation id="2981113813906970160">Büyük fare imleci göster</translation> <translation id="2982970937345031">Anonim olarak bildir</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224">%<ph name="DISPLAY_ZOOM" /></translation> <translation id="338583716107319301">Ayırıcı</translation> <translation id="3389312115541230716">Görev çubuğunda <ph name="SMALL_PRODUCT_LOGO" /> simgesini sağ tıklayın</translation> +<translation id="3393352139658145068">Birisi "Ok Google" dediğinde Asistan'ı etkinleştir. Pilden tasarruf etmek için, "Ok Google" özelliği yalnızca cihazınız güç kaynağına bağlıyken etkin olur.</translation> <translation id="3396800784455899911">"Kabul et ve devam et" düğmesini tıklayarak bu Google hizmetleri ile ilgili yukarıda açıklanan işlemleri kabul etmiş olursunuz.</translation> <translation id="3399432415385675819">Bildirimler devre dışı bırakılacak</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3168,6 +3173,7 @@ <translation id="5816434091619127343">Yazıcıda yapılması istenen değişiklikler yazıcıyı kullanılamaz hale getirecekti.</translation> <translation id="5817918615728894473">Eşle</translation> <translation id="5821565227679781414">Kısayol Oluştur</translation> +<translation id="5825412242012995131">Açık (Önerilen)</translation> <translation id="5826507051599432481">Genel Ad (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Yazdırılıyor...</translation> @@ -3712,6 +3718,11 @@ <translation id="6629841649550503054">Tümü <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />'a yedeklendi!</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> sizin adınıza kendi kimlik doğrulamasını yapmak için bir sertifikaya kalıcı erişim izni istiyor.</translation> <translation id="6635956300022133031">Metin okuma seslerini seçer ve özelleştirir</translation> +<translation id="6637585982786704944">İzin verdiğiniz uygulamalar ve web siteleri, düzgün çalışmaları için ihtiyaç duydukları hesap bilgilerine erişebilir. + + Hesap eklemek istemiyorsanız web'e göz atmak için misafir olarak oturum açabilir veya gizli pencere açabilirsiniz. + + Ayarlar -> Google Hesapları bölümünden tüm hesapları görüntüleyebilir ve yönetebilirsiniz.</translation> <translation id="6639554308659482635">SQLite belleği</translation> <translation id="6641138807883536517">Rastgele oluşturulmuş güvenli modül şifresi kullanılamıyor. Powerwash sonrasında bu normaldir.</translation> <translation id="6643016212128521049">Temizle</translation> @@ -3913,6 +3924,7 @@ <translation id="6957231940976260713">Hizmet adı</translation> <translation id="696203921837389374">Mobil veriler üzerinden senkronizasyonu etkinleştir</translation> <translation id="6964390816189577014">Kahraman</translation> +<translation id="6964760285928603117">Gruptan Kaldır</translation> <translation id="6965382102122355670">Tamam</translation> <translation id="6965648386495488594">Bağlantı noktası</translation> <translation id="6965978654500191972">Cihaz</translation> @@ -4022,6 +4034,7 @@ <translation id="7109543803214225826">Kısayol kaldırıldı</translation> <translation id="7113502843173351041">E-posta adresinizi öğrenme</translation> <translation id="7114054701490058191">Şifreler eşleşmiyor</translation> +<translation id="7114648273807173152">Smart Lock'ı kullanarak Google Hesabınızda oturum açmak için Ayarlar > Bağlı cihazlar > Telefonunuz > Smart Lock bölümüne gidin.</translation> <translation id="7117228822971127758">Lütfen daha sonra tekrar deneyin</translation> <translation id="7117247127439884114">Tekrar Oturum Açın...</translation> <translation id="711840821796638741">Yönetilen Yer İşaretlerini Göster</translation> @@ -4177,6 +4190,7 @@ <translation id="7348093485538360975">Ekran klavyesi</translation> <translation id="7352651011704765696">Bir şeyler ters gitti</translation> <translation id="735361434055555355">Linux yükleniyor...</translation> +<translation id="7353887511974462734">Mevcut Gruba Ekle</translation> <translation id="735745346212279324">VPN bağlantısı kesildi</translation> <translation id="7359359531237882347"><ph name="NUMBER_OF_ITEMS" /> öğe kopyalanıyor.</translation> <translation id="7359588939039777303">Reklamlar engellendi.</translation> @@ -4239,7 +4253,6 @@ <translation id="7456847797759667638">Konumu Aç...</translation> <translation id="7461924472993315131">Sabitle</translation> <translation id="7463006580194749499">Kişi ekle</translation> -<translation id="7464902436585505072">"OK Google" ses modeli</translation> <translation id="7465778193084373987">Netscape Sertifika İptali URL'si</translation> <translation id="7469894403370665791">Bu ağa otomatik olarak bağlan</translation> <translation id="747114903913869239">Hata: Uzantının kodu çözülemiyor</translation> @@ -4808,6 +4821,7 @@ <translation id="827097179112817503">Ana Sayfa düğmesini göster</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 yer işareti silindi}other{# yer işareti silindi}}</translation> <translation id="8272443605911821513">"Diğer araçlar" menüsündeki Uzantılar'ı tıklayarak uzantılarınızı yönetin.</translation> +<translation id="8272966760965438857">Google Hesaplarınızı tek bir yerden yönetin</translation> <translation id="8274332263553132018">Dosya yayınlayın</translation> <translation id="8274924778568117936">Güncelleme bitene kadar <ph name="DEVICE_TYPE" /> cihazınızı kapatmayın. Yükleme işlemi tamamlandıktan sonra <ph name="DEVICE_TYPE" /> cihazınız yeniden başlatılacaktır.</translation> <translation id="8275038454117074363">İçe aktar</translation> @@ -5194,6 +5208,7 @@ <translation id="8883847527783433352">Başka bir Hesapla Senkronize Et</translation> <translation id="8885197664446363138">Smart Lock kullanılamıyor</translation> <translation id="88870264962436283"><ph name="APP_NAME" /> uygulamasında Touch ID'yi kullanın</translation> +<translation id="8888253246822647887">Uygulamanız, yeni sürüme geçme işlemi tamamlandığında açılır. Yeni sürüme geçme işlemi birkaç dakika sürebilir.</translation> <translation id="8888432776533519951">Renk:</translation> <translation id="8890516388109605451">Kaynaklar</translation> <translation id="8892168913673237979">Her şey hazır!</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb index 4de440c..46df01c 100644 --- a/chrome/app/resources/generated_resources_uk.xtb +++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Великий курсор миші</translation> <translation id="1538729222189715449">Відкриваються файли Linux…</translation> <translation id="1540605929960647700">Увімкніть демонстраційний режим</translation> +<translation id="1541396123399225659">Додати в нову групу</translation> <translation id="1542514202066550870">Ця вкладка транслює VR-вміст на гарнітуру.</translation> <translation id="1543284117603151572">Імпортовано з Edge</translation> <translation id="1545177026077493356">Автоматичний режим термінала</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Форматування…</translation> <translation id="159359590073980872">Кеш зображень</translation> <translation id="1593926297800505364">Зберегти спосіб оплати</translation> +<translation id="1595492813686795610">Linux оновлюється</translation> <translation id="1598233202702788831">Адміністратор вимкнув оновлення.</translation> <translation id="1600857548979126453">Отримувати доступ до серверної частини налагоджувача сторінки</translation> <translation id="1601560923496285236">Застосувати</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Увімкнути тему</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Переглянути у Веб-магазині Chrome</translation> -<translation id="1761588866118490543">Зразок голосу</translation> <translation id="176193854664720708">Сканер відбитків пальців знаходиться на кнопці живлення. Легко торкніться його будь-яким пальцем.</translation> <translation id="1763046204212875858">Створити ярлики програми</translation> <translation id="1763108912552529023">Продовжити</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">Друкувати за допомогою діалогового вікна системи... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Запитувати, перш ніж надсилати (рекомендується)</translation> <translation id="2384436799579181135">Сталася помилка. Перевірте принтер і повторіть спробу.</translation> +<translation id="2386926718981642523">Відкривайте Асистент командою "Ok Google"</translation> <translation id="2387458720915042159">Тип з’єднання з проксі-сервером</translation> <translation id="2391419135980381625">Стандартний шрифт</translation> <translation id="2391762656119864333">Анулювати</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> не вдалося з'єднатися з <ph name="NETWORK_ID" />. Виберіть іншу мережу або повторіть спробу.</translation> <translation id="2553440850688409052">Сховати цей плагін</translation> <translation id="2554553592469060349">Вибраний файл завеликий (максимальний розмір – 3 МБ).</translation> +<translation id="255747371423522804">Додати в наявну групу</translation> <translation id="2558896001721082624">Завжди показувати параметри спеціальних можливостей у системному меню</translation> <translation id="2562685439590298522">Документи</translation> <translation id="2562743677925229011">Ви не ввійшли в <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">&Повторити</translation> <translation id="2972642118232180842">Запускати лише важливий вміст (рекомендовано)</translation> <translation id="2973324205039581528">Вимкнути звук на сайті</translation> +<translation id="2977480621796371840">Вилучити з групи</translation> <translation id="2979639724566107830">Відкрити в новому вікні</translation> <translation id="2981113813906970160">Показувати великий курсор миші</translation> <translation id="2982970937345031">Поскаржитись анонімно</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Розділювач</translation> <translation id="3389312115541230716">Натисніть правою кнопкою миші значок <ph name="SMALL_PRODUCT_LOGO" /> на панелі завдань</translation> +<translation id="3393352139658145068">Активувати Асистент, коли хтось скаже "Ok Google". Щоб заощадити заряд акумулятора, команда працюватиме, лише коли пристрій буде підключено до джерела живлення.</translation> <translation id="3396800784455899911">Натиснувши кнопку "Прийняти та продовжити", ви дозволяєте цим сервісам Google обробляти ваші дані, як описано вище.</translation> <translation id="3399432415385675819">Сповіщення будуть вимкнені</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -3167,6 +3172,7 @@ <translation id="5816434091619127343">Після цих змін принтер стане непридатним для використання.</translation> <translation id="5817918615728894473">Підключити</translation> <translation id="5821565227679781414">Створити ярлик</translation> +<translation id="5825412242012995131">Увімкнено (рекомендовано)</translation> <translation id="5826507051599432481">Загальне ім'я (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Друк...</translation> @@ -3711,6 +3717,11 @@ <translation id="6629841649550503054">Усі файли імпортовано на <ph name="BEGIN_LINK" />Google Диск.<ph name="END_LINK" /></translation> <translation id="6630752851777525409">Розширенню <ph name="EXTENSION_NAME" /> потрібен постійний доступ до сертифіката, щоб проходити автентифікацію від вашого імені.</translation> <translation id="6635956300022133031">Вибрати й налаштувати голоси для синтезу мовлення</translation> +<translation id="6637585982786704944">Додатки й веб-сайти, яким ви надали відповідний дозвіл, можуть отримувати доступ до даних облікового запису, необхідних їм для правильної роботи. + + Якщо ви не хочете додавати обліковий запис, увійдіть як гість або відкрийте вікно в режимі анонімного перегляду. + + Щоб переглянути всі облікові записи й керувати ними, перейдіть у меню "Налаштування" -> "Облікові записи Google".</translation> <translation id="6639554308659482635">Пам'ять SQLite</translation> <translation id="6641138807883536517">Немає навмання згенерованого пароля для модуля безпеки. Це нормально після використання функції Powerwash.</translation> <translation id="6643016212128521049">Очистити</translation> @@ -3912,6 +3923,7 @@ <translation id="6957231940976260713">Назва служби</translation> <translation id="696203921837389374">Увімкнути синхронізацію через мобільний Інтернет</translation> <translation id="6964390816189577014">Герой</translation> +<translation id="6964760285928603117">Вилучити з групи</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Порт</translation> <translation id="6965978654500191972">Пристрій</translation> @@ -4021,6 +4033,7 @@ <translation id="7109543803214225826">Ярлик видалено</translation> <translation id="7113502843173351041">Бачити вашу електронну адресу</translation> <translation id="7114054701490058191">Паролі не збігаються</translation> +<translation id="7114648273807173152">Щоб увійти в обліковий запис Google за допомогою Smart Lock, перейдіть у меню "Налаштування" > "Підключені пристрої" > "Телефон" > "Smart Lock".</translation> <translation id="7117228822971127758">Повторіть спробу пізніше</translation> <translation id="7117247127439884114">Увійти знову...</translation> <translation id="711840821796638741">Показати закладки, якими керує адміністратор</translation> @@ -4176,6 +4189,7 @@ <translation id="7348093485538360975">Екранна клавіатура</translation> <translation id="7352651011704765696">Виникли проблеми</translation> <translation id="735361434055555355">Встановлюється Linux…</translation> +<translation id="7353887511974462734">Додати в наявну групу</translation> <translation id="735745346212279324">VPN від’єднано</translation> <translation id="7359359531237882347">Копіювання елементів (<ph name="NUMBER_OF_ITEMS" />)…</translation> <translation id="7359588939039777303">Оголошення заблоковано.</translation> @@ -4238,7 +4252,6 @@ <translation id="7456847797759667638">Відкрити розташування...</translation> <translation id="7461924472993315131">Закріпити</translation> <translation id="7463006580194749499">Додати користувача</translation> -<translation id="7464902436585505072">Зразок голосу для команди "Ok Google"</translation> <translation id="7465778193084373987">URL-адреса відкликання сертифіката Netscape</translation> <translation id="7469894403370665791">Автоматично з'єднувати з цією мережею</translation> <translation id="747114903913869239">Помилка: не вдається розшифрувати розширення</translation> @@ -4808,6 +4821,7 @@ <translation id="827097179112817503">Показати кнопку "Домашня сторінка"</translation> <translation id="8271246892936492311">{COUNT,plural, =1{1 закладку видалено}one{# закладку видалено}few{# закладки видалено}many{# закладок видалено}other{# закладки видалено}}</translation> <translation id="8272443605911821513">Керуйте своїми розширеннями, натиснувши "Розширення" в меню "Інші інструменти".</translation> +<translation id="8272966760965438857">Керуйте обліковими записами Google в одному місці</translation> <translation id="8274332263553132018">Транслювати файл</translation> <translation id="8274924778568117936">Не вимикайте та не закривайте пристрій <ph name="DEVICE_TYPE" />, поки не завершиться оновлення. Коли встановляться оновлення, пристрій <ph name="DEVICE_TYPE" /> перезавантажиться.</translation> <translation id="8275038454117074363">Імпорт</translation> @@ -5194,6 +5208,7 @@ <translation id="8883847527783433352">Синхронізувати з іншим обліковим записом</translation> <translation id="8885197664446363138">Функція Smart Lock недоступна</translation> <translation id="88870264962436283">Використовуйте Touch ID з додатком <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Додаток відкриється, коли завершиться оновлення. Воно може тривати кілька хвилин.</translation> <translation id="8888432776533519951">Колір:</translation> <translation id="8890516388109605451">Джерела</translation> <translation id="8892168913673237979">Готово!</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb index 1729749..beb649aa 100644 --- a/chrome/app/resources/generated_resources_vi.xtb +++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">Con trỏ chuột lớn</translation> <translation id="1538729222189715449">Đang mở tệp Linux...</translation> <translation id="1540605929960647700">Bật chế độ minh họa</translation> +<translation id="1541396123399225659">Thêm vào nhóm mới</translation> <translation id="1542514202066550870">Tab này đang trình bày nội dung thực tế ảo đến một kính thực tế ảo.</translation> <translation id="1543284117603151572">Đã nhập từ Edge</translation> <translation id="1545177026077493356">Chế độ kiosk tự động</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">Đang định dạng...</translation> <translation id="159359590073980872">Bộ nhớ đệm hình ảnh</translation> <translation id="1593926297800505364">Lưu phương thức thanh toán</translation> +<translation id="1595492813686795610">Linux đang nâng cấp</translation> <translation id="1598233202702788831">Quản trị viên của bạn đã tắt bản cập nhật.</translation> <translation id="1600857548979126453">Truy cập chương trình phụ trợ trình gỡ lỗi trang</translation> <translation id="1601560923496285236">Áp dụng</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">Bật chủ đề</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">Xem trong Cửa hàng Chrome trực tuyến</translation> -<translation id="1761588866118490543">Mẫu giọng nói</translation> <translation id="176193854664720708">Cảm biến vân tay nằm trong nút nguồn. Hãy chạm nhẹ vào nút này bằng ngón tay bất kỳ.</translation> <translation id="1763046204212875858">Tạo các lối tắt cho ứng dụng</translation> <translation id="1763108912552529023">Tiếp tục khám phá</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">In bằng hộp thoại hệ thống... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">Hỏi trước khi gửi (được đề xuất)</translation> <translation id="2384436799579181135">Đã xảy ra lỗi. Vui lòng kiểm tra máy in của bạn và thử lại.</translation> +<translation id="2386926718981642523">Nói "Ok Google" bất cứ lúc nào để sử dụng Trợ lý</translation> <translation id="2387458720915042159">Loại kết nối proxy</translation> <translation id="2391419135980381625">Phông chữ tiêu chuẩn</translation> <translation id="2391762656119864333">Thu hồi</translation> @@ -1043,6 +1045,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" /> không thể kết nối đến <ph name="NETWORK_ID" />. Vui lòng chọn một mạng khác hoặc thử lại.</translation> <translation id="2553440850688409052">Ẩn plugin này</translation> <translation id="2554553592469060349">Tệp đã chọn quá lớn (kích thước tối đa: 3mb).</translation> +<translation id="255747371423522804">Thêm vào nhóm hiện có</translation> <translation id="2558896001721082624">Luôn hiển thị tùy chọn trợ năng trong menu hệ thống</translation> <translation id="2562685439590298522">Documents</translation> <translation id="2562743677925229011">Chưa được đăng nhập vào <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1315,6 +1318,7 @@ <translation id="2972581237482394796">&Làm lại</translation> <translation id="2972642118232180842">Chỉ chạy nội dung quan trọng (được đề xuất)</translation> <translation id="2973324205039581528">Tắt tiếng trang web</translation> +<translation id="2977480621796371840">Xóa khỏi nhóm</translation> <translation id="2979639724566107830">Mở trong cửa sổ mới</translation> <translation id="2981113813906970160">Hiển thị con trỏ chuột lớn</translation> <translation id="2982970937345031">Báo cáo ẩn danh</translation> @@ -1565,6 +1569,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Dấu phân tách</translation> <translation id="3389312115541230716">Nhấp chuột phải vào biểu tượng <ph name="SMALL_PRODUCT_LOGO" /> trên thanh tác vụ</translation> +<translation id="3393352139658145068">Kích hoạt Trợ lý khi có người nói “Ok Google”. Để tiết kiệm pin, “Ok Google” chỉ bật khi thiết bị của bạn được kết nối với nguồn điện.</translation> <translation id="3396800784455899911">Bằng cách nhấp vào nút "Đồng ý và tiếp tục", bạn đồng ý với quy trình xử lý mô tả ở trên cho các dịch vụ này của Google.</translation> <translation id="3399432415385675819">Thông báo sẽ bị tắt</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> @@ -2112,7 +2117,7 @@ <translation id="4193154014135846272">Tài liệu Google</translation> <translation id="4194570336751258953">Cho phép gõ để nhấp</translation> <translation id="4195249722193633765">Cài đặt ứng dụng bằng Linux (Beta)</translation> -<translation id="4195643157523330669">Mở bằng tab mới</translation> +<translation id="4195643157523330669">Mở trong tab mới</translation> <translation id="4195814663415092787">Tiếp tục từ nơi bạn đã dừng lại</translation> <translation id="4197674956721858839">Chọn file nén zip</translation> <translation id="4198146608511578238">Bạn chỉ cần giữ biểu tượng Trình khởi chạy để nói chuyện với Trợ lý Google của mình.</translation> @@ -3167,6 +3172,7 @@ <translation id="5816434091619127343">Các thay đổi đã yêu cầu đối với máy in sẽ làm cho máy in đó không sử dụng được.</translation> <translation id="5817918615728894473">Ghép nối</translation> <translation id="5821565227679781414">Tạo lối tắt</translation> +<translation id="5825412242012995131">Bật (Đề xuất)</translation> <translation id="5826507051599432481">Tên Phổ biến (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">Đang in...</translation> @@ -3326,7 +3332,7 @@ <translation id="6041155700700864984">Thoát chế độ toàn màn hình</translation> <translation id="604124094241169006">Tự động</translation> <translation id="6042169520002885235">Chọn kiểu máy và nhà sản xuất máy in</translation> -<translation id="6042308850641462728">Thêm</translation> +<translation id="6042308850641462728">Xem thêm</translation> <translation id="6043317578411397101"><ph name="APP_NAME" /> đang chia sẻ một tab trong Chrome với <ph name="TAB_NAME" />.</translation> <translation id="6044805581023976844"><ph name="APP_NAME" /> đang chia sẻ âm thanh và một tab trong Chrome với <ph name="TAB_NAME" />.</translation> <translation id="6045021379489914695">Chromebook và điện thoại Android hoạt động hiệu quả hơn khi kết hợp cùng nhau. Hãy kết nối hai thiết bị này với nhau để nhắn tin từ máy tính, chia sẻ kết nối Internet và mở khóa Chromebook bằng điện thoại.<ph name="FOOTNOTE_POINTER" /> <ph name="LINK_BEGIN" />Tìm hiểu thêm<ph name="LINK_END" /></translation> @@ -3711,6 +3717,11 @@ <translation id="6629841649550503054">Đã sao lưu toàn bộ vào <ph name="BEGIN_LINK" />Google Drive!<ph name="END_LINK" /></translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" /> muốn có quyền truy cập vĩnh viễn vào chứng chỉ để tự xác thực thay mặt bạn.</translation> <translation id="6635956300022133031">Chọn và tùy chỉnh giọng nói của tính năng chuyển văn bản sang lời nói</translation> +<translation id="6637585982786704944">Các ứng dụng và trang web mà bạn đã cấp quyền có thể truy cập vào thông tin tài khoản cần thiết để hoạt động đúng cách. + + Nếu bạn không muốn thêm tài khoản, hãy đăng nhập với tư cách khách hoặc mở cửa sổ ẩn danh để duyệt web. + + Bạn có thể chuyển đến mục Cài đặt -> Tài khoản Google để xem và quản lý tất cả các tài khoản.</translation> <translation id="6639554308659482635">Bộ nhớ SQLite</translation> <translation id="6641138807883536517">Không có mật khẩu mô-đun an toàn được tạo ngẫu nhiên. Đây là hiện tượng bình thường sau khi tiến hành Powerwash.</translation> <translation id="6643016212128521049">Xóa</translation> @@ -3912,6 +3923,7 @@ <translation id="6957231940976260713">Tên dịch vụ</translation> <translation id="696203921837389374">Bật đồng bộ hóa qua dữ liệu di động</translation> <translation id="6964390816189577014">Anh hùng</translation> +<translation id="6964760285928603117">Xóa khỏi nhóm</translation> <translation id="6965382102122355670">OK</translation> <translation id="6965648386495488594">Cổng</translation> <translation id="6965978654500191972">Thiết bị</translation> @@ -4021,6 +4033,7 @@ <translation id="7109543803214225826">Đã xóa phím tắt</translation> <translation id="7113502843173351041">Biết địa chỉ email của bạn</translation> <translation id="7114054701490058191">Mật khẩu không khớp</translation> +<translation id="7114648273807173152">Để đăng nhập vào Tài khoản Google bằng Smart Lock, hãy chuyển đến mục Cài đặt > Thiết bị đã kết nối > Điện thoại của bạn > Smart Lock.</translation> <translation id="7117228822971127758">Vui lòng thử lại sau</translation> <translation id="7117247127439884114">Đăng nhập lại...</translation> <translation id="711840821796638741">Hiển thị dấu trang được quản lý</translation> @@ -4176,6 +4189,7 @@ <translation id="7348093485538360975">Bàn phím ảo</translation> <translation id="7352651011704765696">Đã xảy ra lỗi</translation> <translation id="735361434055555355">Đang cài đặt Linux...</translation> +<translation id="7353887511974462734">Thêm vào nhóm hiện có</translation> <translation id="735745346212279324">Đã ngắt kết nối VPN</translation> <translation id="7359359531237882347">Đang sao chép <ph name="NUMBER_OF_ITEMS" /> mục...</translation> <translation id="7359588939039777303">Đã chặn quảng cáo.</translation> @@ -4238,7 +4252,6 @@ <translation id="7456847797759667638">Mở Vị trí...</translation> <translation id="7461924472993315131">Ghim</translation> <translation id="7463006580194749499">Thêm người</translation> -<translation id="7464902436585505072">Mẫu giọng nói "Ok Google"</translation> <translation id="7465778193084373987">ULR Thu hồi của Tổ chức Cấp Chứng chỉ Netscape</translation> <translation id="7469894403370665791">Tự động kết nối vào mạng này</translation> <translation id="747114903913869239">Lỗi: Không thể giải mã tiện ích</translation> @@ -4808,6 +4821,7 @@ <translation id="827097179112817503">Hiển thị nút trang chủ</translation> <translation id="8271246892936492311">{COUNT,plural, =1{Đã xóa 1 dấu trang}other{Đã xóa # dấu trang}}</translation> <translation id="8272443605911821513">Quản lý tiện ích của bạn bằng cách nhấp vào Tiện ích trong menu "Công cụ khác".</translation> +<translation id="8272966760965438857">Quản lý các Tài khoản Google của bạn tại một nơi</translation> <translation id="8274332263553132018">Truyền tệp</translation> <translation id="8274924778568117936">Không tắt hoặc đóng <ph name="DEVICE_TYPE" /> cho đến khi cập nhật xong. <ph name="DEVICE_TYPE" /> của bạn sẽ khởi động lại sau khi cài đặt xong.</translation> <translation id="8275038454117074363">Nhập</translation> @@ -5194,6 +5208,7 @@ <translation id="8883847527783433352">Đồng bộ hóa với một tài khoản khác</translation> <translation id="8885197664446363138">Smart Lock không khả dụng</translation> <translation id="88870264962436283">Sử dụng Touch ID cho <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">Ứng dụng của bạn sẽ mở khi nâng cấp xong. Quá trình nâng cấp có thể mất vài phút.</translation> <translation id="8888432776533519951">Màu:</translation> <translation id="8890516388109605451">Nguồn</translation> <translation id="8892168913673237979">Đã hoàn tất!</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb index ed7091bc..b50461ee 100644 --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -131,7 +131,7 @@ <translation id="1177138678118607465">Google 可能会使用您的浏览记录为您量身定制 Google 搜索、广告和其他 Google 服务。您随时可通过 myaccount.google.com/activitycontrols/search 更改此设置</translation> <translation id="1177863135347784049">自定义</translation> <translation id="1178581264944972037">暂停</translation> -<translation id="1181037720776840403">删除</translation> +<translation id="1181037720776840403">移除</translation> <translation id="1183237619868651138">无法将 <ph name="EXTERNAL_CRX_FILE" /> 安装在本地缓存中。</translation> <translation id="1185924365081634987">您也可以尝试<ph name="GUEST_SIGNIN_LINK_START" />以访客身份浏览<ph name="GUEST_SIGNIN_LINK_END" />,以便修复该网络错误。</translation> <translation id="1186771945450942097">移除有害软件</translation> @@ -364,6 +364,7 @@ <translation id="15373452373711364">大号鼠标光标</translation> <translation id="1538729222189715449">正在打开 Linux 文件…</translation> <translation id="1540605929960647700">启用演示模式</translation> +<translation id="1541396123399225659">添加到新组</translation> <translation id="1542514202066550870">此标签页正在向头戴设备显示 VR 内容。</translation> <translation id="1543284117603151572">从 Edge 导入的书签</translation> <translation id="1545177026077493356">自动自助服务终端模式</translation> @@ -402,6 +403,7 @@ <translation id="1593594475886691512">正在格式化…</translation> <translation id="159359590073980872">图片缓存</translation> <translation id="1593926297800505364">保存付款方式</translation> +<translation id="1595492813686795610">Linux 正在升级</translation> <translation id="1598233202702788831">您的管理员已停用更新。</translation> <translation id="1600857548979126453">访问页面调试程序后端</translation> <translation id="1601560923496285236">应用</translation> @@ -513,7 +515,6 @@ <translation id="175772926354468439">启用主题背景</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">在 Chrome 网上应用店中查看详情</translation> -<translation id="1761588866118490543">语音模型</translation> <translation id="176193854664720708">指纹传感器位于电源按钮中。请用任一根手指轻轻触摸它。</translation> <translation id="1763046204212875858">创建应用快捷方式</translation> <translation id="1763108912552529023">继续了解</translation> @@ -935,6 +936,7 @@ <translation id="2379281330731083556">使用系统对话框进行打印...<ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">发送前先询问(推荐)</translation> <translation id="2384436799579181135">出错了。请检查您的打印机,然后重试。</translation> +<translation id="2386926718981642523">随时访问您的 Google 助理,只需说“Ok Google”即可</translation> <translation id="2387458720915042159">代理连接类型</translation> <translation id="2391419135980381625">标准字体</translation> <translation id="2391762656119864333">撤消</translation> @@ -1039,6 +1041,7 @@ <translation id="2553340429761841190"><ph name="PRODUCT_NAME" />无法连接到<ph name="NETWORK_ID" />。请选择其他网络或重试。</translation> <translation id="2553440850688409052">隐藏此插件</translation> <translation id="2554553592469060349">所选文件太大(大小上限为3mb)。</translation> +<translation id="255747371423522804">添加到现有组</translation> <translation id="2558896001721082624">始终在系统菜单中显示无障碍选项</translation> <translation id="2562685439590298522">文档</translation> <translation id="2562743677925229011">尚未登录 <ph name="SHORT_PRODUCT_NAME" /></translation> @@ -1310,6 +1313,7 @@ <translation id="2972581237482394796">重做(&R)</translation> <translation id="2972642118232180842">只运行重要内容(推荐)</translation> <translation id="2973324205039581528">将单个网站静音</translation> +<translation id="2977480621796371840">从组中移除</translation> <translation id="2979639724566107830">在新窗口中打开</translation> <translation id="2981113813906970160">显示大号鼠标光标</translation> <translation id="2982970937345031">以匿名方式报告</translation> @@ -1558,6 +1562,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">分隔符</translation> <translation id="3389312115541230716">右键点击任务栏中的 <ph name="SMALL_PRODUCT_LOGO" /> 图标</translation> +<translation id="3393352139658145068">只要有人说“Ok Google”,就能启动 Google 助理。为了省电,仅当您的设备连接至电源时,“Ok Google”才可用。</translation> <translation id="3396800784455899911">点击“接受并继续”按钮,即表示您同意上述针对这些 Google 服务的处理方式。</translation> <translation id="3399432415385675819">通知将被停用</translation> <translation id="340282674066624">已下载 <ph name="DOWNLOAD_RECEIVED" />,还需 <ph name="TIME_LEFT" /></translation> @@ -3154,6 +3159,7 @@ <translation id="5816434091619127343">所请求的打印机更改会导致打印机不可用。</translation> <translation id="5817918615728894473">配对</translation> <translation id="5821565227679781414">创建快捷方式</translation> +<translation id="5825412242012995131">开启(推荐)</translation> <translation id="5826507051599432481">公用名 (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">正在打印...</translation> @@ -3698,6 +3704,11 @@ <translation id="6629841649550503054">所有文件都已备份到 <ph name="BEGIN_LINK" />Google 云端硬盘<ph name="END_LINK" />!</translation> <translation id="6630752851777525409"><ph name="EXTENSION_NAME" />希望获得某个证书的永久访问权限,以便代表您进行自我身份验证。</translation> <translation id="6635956300022133031">选择和自定义文字转语音的语音</translation> +<translation id="6637585982786704944">已获得您的授权的应用和网站可访问其所需的帐号信息以正常运行。 + + 如果您不想添加帐号,请以访客身份登录,或打开一个无痕式窗口来浏览网页。 + + 您可依次转到“设置”->“Google 帐号”以查看和管理所有帐号。</translation> <translation id="6639554308659482635">SQLite 使用的内存</translation> <translation id="6641138807883536517">无法提供随机生成的安全模块密码。这是执行 Powerwash 之后的正常现象。</translation> <translation id="6643016212128521049">清除</translation> @@ -3899,6 +3910,7 @@ <translation id="6957231940976260713">服务名称</translation> <translation id="696203921837389374">在移动数据网络中启用同步功能</translation> <translation id="6964390816189577014">英雄</translation> +<translation id="6964760285928603117">从组中移除</translation> <translation id="6965382102122355670">确定</translation> <translation id="6965648386495488594">端口</translation> <translation id="6965978654500191972">设备</translation> @@ -4008,6 +4020,7 @@ <translation id="7109543803214225826">已移除快捷方式</translation> <translation id="7113502843173351041">获取您的电子邮件地址</translation> <translation id="7114054701490058191">密码不符</translation> +<translation id="7114648273807173152">要使用 Smart Lock 登录您的 Google 帐号,请依次转到“设置”>“已连接的设备”>“您的手机”>“Smart Lock”。</translation> <translation id="7117228822971127758">请稍后重试</translation> <translation id="7117247127439884114">重新登录...</translation> <translation id="711840821796638741">显示托管书签</translation> @@ -4163,6 +4176,7 @@ <translation id="7348093485538360975">屏幕键盘</translation> <translation id="7352651011704765696">出了点问题</translation> <translation id="735361434055555355">正在安装 Linux…</translation> +<translation id="7353887511974462734">添加到现有组</translation> <translation id="735745346212279324">VPN 连接已断开</translation> <translation id="7359359531237882347">正在复制 <ph name="NUMBER_OF_ITEMS" /> 项内容…</translation> <translation id="7359588939039777303">广告已被拦截。</translation> @@ -4225,7 +4239,6 @@ <translation id="7456847797759667638">打开位置...</translation> <translation id="7461924472993315131">固定</translation> <translation id="7463006580194749499">添加用户</translation> -<translation id="7464902436585505072">“Ok Google”语音模型</translation> <translation id="7465778193084373987">Netscape 证书吊销网址</translation> <translation id="7469894403370665791">自动连接到该网络</translation> <translation id="747114903913869239">错误:无法对扩展程序进行解码</translation> @@ -4792,6 +4805,7 @@ <translation id="827097179112817503">显示“主页”按钮</translation> <translation id="8271246892936492311">{COUNT,plural, =1{已删除 1 个书签}other{已删除 # 个书签}}</translation> <translation id="8272443605911821513">点击“更多工具”菜单中的“扩展程序”,可以管理您的扩展程序。</translation> +<translation id="8272966760965438857">在一个位置集中管理您的 Google 帐号</translation> <translation id="8274332263553132018">投射文件</translation> <translation id="8274924778568117936">在完成更新之前,请勿关闭您的 <ph name="DEVICE_TYPE" />。您的 <ph name="DEVICE_TYPE" /> 将会于安装完毕后重启。</translation> <translation id="8275038454117074363">导入</translation> @@ -5178,6 +5192,7 @@ <translation id="8883847527783433352">同步到另一帐号中</translation> <translation id="8885197664446363138">无法开启 Smart Lock</translation> <translation id="88870264962436283">使用 Touch ID 登录 <ph name="APP_NAME" /></translation> +<translation id="8888253246822647887">待完成升级后,您的应用即会打开。整个升级过程可能需要几分钟的时间。</translation> <translation id="8888432776533519951">颜色:</translation> <translation id="8890516388109605451">来源</translation> <translation id="8892168913673237979">搞定了!</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb index c1aef6a..b386580 100644 --- a/chrome/app/resources/generated_resources_zh-TW.xtb +++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -367,6 +367,7 @@ <translation id="15373452373711364">大型滑鼠游標</translation> <translation id="1538729222189715449">正在開啟 Linux 檔案…</translation> <translation id="1540605929960647700">啟用示範模式</translation> +<translation id="1541396123399225659">新增到新群組</translation> <translation id="1542514202066550870">這個分頁正在對頭戴式裝置展示 VR 內容。</translation> <translation id="1543284117603151572">從 Edge 匯入的書籤</translation> <translation id="1545177026077493356">自動 Kiosk 模式</translation> @@ -405,6 +406,7 @@ <translation id="1593594475886691512">正在格式化...</translation> <translation id="159359590073980872">圖片快取</translation> <translation id="1593926297800505364">儲存付款方式</translation> +<translation id="1595492813686795610">正在升級 Linux</translation> <translation id="1598233202702788831">您的管理員停用了更新功能。</translation> <translation id="1600857548979126453">存取網頁偵錯工具後端</translation> <translation id="1601560923496285236">套用</translation> @@ -516,7 +518,6 @@ <translation id="175772926354468439">啟用主題</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="17584710573359123">前往 Chrome 線上應用程式商店查看</translation> -<translation id="1761588866118490543">語音模型</translation> <translation id="176193854664720708">指紋感應器位於電源按鈕上,請以任何一隻手指輕觸指紋感應器。</translation> <translation id="1763046204212875858">建立應用程式捷徑</translation> <translation id="1763108912552529023">繼續探索</translation> @@ -938,6 +939,7 @@ <translation id="2379281330731083556">使用系統對話方塊進行列印... <ph name="SHORTCUT_KEY" /></translation> <translation id="2381756643783702095">傳送前詢問我 (建議)</translation> <translation id="2384436799579181135">發生錯誤。請檢查你的印表機,然後再試一次。</translation> +<translation id="2386926718981642523">只要說出「Ok Google」,就能隨時存取 Google 助理</translation> <translation id="2387458720915042159">Proxy 連線類型</translation> <translation id="2391419135980381625">標準字型</translation> <translation id="2391762656119864333">撤銷</translation> @@ -1042,6 +1044,7 @@ <translation id="2553340429761841190">「<ph name="PRODUCT_NAME" />」無法連線至<ph name="NETWORK_ID" />,請選取其他網路,或再試一次。</translation> <translation id="2553440850688409052">隱藏這個外掛程式</translation> <translation id="2554553592469060349">選取的檔案過大 (大小上限:3MB)。</translation> +<translation id="255747371423522804">新增到現有群組</translation> <translation id="2558896001721082624">一律在系統選單中顯示協助工具選項</translation> <translation id="2562685439590298522">文件</translation> <translation id="2562743677925229011">未登入「<ph name="SHORT_PRODUCT_NAME" />」</translation> @@ -1314,6 +1317,7 @@ <translation id="2972581237482394796">重做(&R)</translation> <translation id="2972642118232180842">僅執行重要內容 (建議)</translation> <translation id="2973324205039581528">關閉網站音訊</translation> +<translation id="2977480621796371840">從群組中移除</translation> <translation id="2979639724566107830">於新視窗中開啟</translation> <translation id="2981113813906970160">顯示大型滑鼠游標</translation> <translation id="2982970937345031">以匿名方式傳送意見</translation> @@ -1564,6 +1568,7 @@ <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">分隔線</translation> <translation id="3389312115541230716">以滑鼠右鍵按一下工作列中的 <ph name="SMALL_PRODUCT_LOGO" /> 圖示</translation> +<translation id="3393352139658145068">只要有人說出「Ok Google」即啟動 Google 助理。為了節省電力,系統只有在裝置連接到電源時才會啟動「Ok Google」。</translation> <translation id="3396800784455899911">點選 [接受並繼續] 按鈕即表示您同意上述的 Google 服務處理程序。</translation> <translation id="3399432415385675819">通知功能會遭到停用</translation> <translation id="340282674066624"><ph name="DOWNLOAD_RECEIVED" />,<ph name="TIME_LEFT" /></translation> @@ -3165,6 +3170,7 @@ <translation id="5816434091619127343">要求的印表機變更會讓這部印表機無法使用。</translation> <translation id="5817918615728894473">配對</translation> <translation id="5821565227679781414">建立捷徑</translation> +<translation id="5825412242012995131">啟用 (建議設定)</translation> <translation id="5826507051599432481">一般名稱 (CN)</translation> <translation id="5827266244928330802">Safari</translation> <translation id="5828633471261496623">列印中...</translation> @@ -3709,6 +3715,7 @@ <translation id="6629841649550503054">所有檔案都已備份到 <ph name="BEGIN_LINK" />Google 雲端硬碟<ph name="END_LINK" />!</translation> <translation id="6630752851777525409">「<ph name="EXTENSION_NAME" />」要求永久存取可代您驗證其自身的憑證。</translation> <translation id="6635956300022133031">選取及自訂文字轉語音的聲音</translation> +<translation id="6637585982786704944">應用程式和網站如果取得了你的授權,將可存取正常運作所需的帳戶資訊。如果你不想新增帳戶,請以訪客身分登入,或是開啟無痕式視窗瀏覽網路。你可以依序前往 [設定] -> [Google 帳戶],查看及管理所有帳戶。</translation> <translation id="6639554308659482635">SQLite 記憶體使用量</translation> <translation id="6641138807883536517">無法使用隨機產生的安全模組密碼。在執行 Powerwash 之後,這是正常情況。</translation> <translation id="6643016212128521049">清除</translation> @@ -3910,6 +3917,7 @@ <translation id="6957231940976260713">服務名稱</translation> <translation id="696203921837389374">啟用透過行動數據進行同步處理的功能</translation> <translation id="6964390816189577014">英雄</translation> +<translation id="6964760285928603117">從群組中移除</translation> <translation id="6965382102122355670">確定</translation> <translation id="6965648386495488594">通訊埠</translation> <translation id="6965978654500191972">裝置</translation> @@ -4019,6 +4027,7 @@ <translation id="7109543803214225826">已移除捷徑</translation> <translation id="7113502843173351041">存取你的電子郵件地址</translation> <translation id="7114054701490058191">密碼不符</translation> +<translation id="7114648273807173152">如要使用 Smart Lock 登入 Google 帳戶,請依序前往 [設定] > [已連接的裝置] > [你的手機] > [Smart Lock]。</translation> <translation id="7117228822971127758">請稍後再試</translation> <translation id="7117247127439884114">重新登入...</translation> <translation id="711840821796638741">顯示受管理書籤</translation> @@ -4174,6 +4183,7 @@ <translation id="7348093485538360975">螢幕小鍵盤</translation> <translation id="7352651011704765696">發生錯誤</translation> <translation id="735361434055555355">正在安裝 Linux...</translation> +<translation id="7353887511974462734">新增到現有群組</translation> <translation id="735745346212279324">已中斷 VPN 連線</translation> <translation id="7359359531237882347">正在複製 <ph name="NUMBER_OF_ITEMS" /> 個項目...</translation> <translation id="7359588939039777303">已封鎖廣告。</translation> @@ -4236,7 +4246,6 @@ <translation id="7456847797759667638">開啟位置...</translation> <translation id="7461924472993315131">固定</translation> <translation id="7463006580194749499">新增使用者</translation> -<translation id="7464902436585505072">「Ok Google」語音模型</translation> <translation id="7465778193084373987">Netscape 憑證撤銷網址</translation> <translation id="7469894403370665791">自動連線至這個網路</translation> <translation id="747114903913869239">錯誤:無法為擴充功能解碼</translation> @@ -4804,6 +4813,7 @@ <translation id="827097179112817503">顯示 [首頁] 按鈕</translation> <translation id="8271246892936492311">{COUNT,plural, =1{已刪除 1 個書籤}other{已刪除 # 個書籤}}</translation> <translation id="8272443605911821513">如要管理擴充功能,只需按一下 [其他工具] 選單裡的 [擴充功能] 即可。</translation> +<translation id="8272966760965438857">集中管理你的 Google 帳戶</translation> <translation id="8274332263553132018">投放檔案</translation> <translation id="8274924778568117936">完成更新前,請勿將 <ph name="DEVICE_TYPE" /> 關機。<ph name="DEVICE_TYPE" /> 會在安裝完成後重新啟動。</translation> <translation id="8275038454117074363">匯入</translation> @@ -5190,6 +5200,7 @@ <translation id="8883847527783433352">同步到其他帳戶</translation> <translation id="8885197664446363138">無法使用 Smart Lock</translation> <translation id="88870264962436283">在「<ph name="APP_NAME" />」中使用 Touch ID</translation> +<translation id="8888253246822647887">升級完成後,你的應用程式即會啟動。升級作業可能需要幾分鐘才能完成。</translation> <translation id="8888432776533519951">顏色:</translation> <translation id="8890516388109605451">來源</translation> <translation id="8892168913673237979">設定完成!</translation>
diff --git a/chrome/app/resources/google_chrome_strings_te.xtb b/chrome/app/resources/google_chrome_strings_te.xtb index 149500b..027a4be 100644 --- a/chrome/app/resources/google_chrome_strings_te.xtb +++ b/chrome/app/resources/google_chrome_strings_te.xtb
@@ -54,7 +54,7 @@ <translation id="225363235161345695">{0,plural, =1{ఒక గంటలో Chrome తిరిగి ప్రారంభించబడుతుంది}other{# గంటల్లో Chrome తిరిగి ప్రారంభించబడుతుంది}}</translation> <translation id="2286950485307333924">మీరు ఇప్పుడు Chromeకి సైన్ ఇన్ చేసారు</translation> <translation id="2290014774651636340">Google API కీలు లేవు. Google Chrome కార్యాచరణలో కొంత భాగం నిలిపివేయబడుతుంది.</translation> -<translation id="2290095356545025170">మీరు Google Chrome ని ఖచ్చితంగా అన్ ఇన్స్టాల్ చెయ్యాలని అనుకుంటున్నారా?</translation> +<translation id="2290095356545025170">మీరు Google Chromeను ఖచ్చితంగా అన్ఇన్స్టాల్ చేయాలని అనుకుంటున్నారా?</translation> <translation id="2309047409763057870">ఇది Google Chrome యొక్క రెండవ ఇనస్టలేషన్. దీన్ని మీ డిఫాల్ట్ బ్రౌజర్గా చేయడం సాధ్యపడదు.</translation> <translation id="2334084861041072223">కాపీరైట్ <ph name="YEAR" /> Google Inc. అన్ని హక్కులు రిజర్వ్ చేయబడ్డాయి.</translation> <translation id="2346876346033403680">ఒకరు ఈ కంప్యూటర్లో మునుపు <ph name="ACCOUNT_EMAIL_LAST" />గా Chromeకు సైన్ ఇన్ చేశారు. అది మీ ఖాతా కాకుంటే, మీ సమాచారాన్ని వేరుగా ఉంచడానికి కొత్త Chrome వినియోగదారును సృష్టించండి. @@ -63,7 +63,7 @@ <translation id="2348335408836342058">ఈ సైట్ కోసం మీ కెమెరా మరియు మైక్రోఫోన్ను యాక్సెస్ చేయడానికి Chromeకు అనుమతి అవసరం</translation> <translation id="2429317896000329049">మీ డొమైన్ కోసం సమకాలీకరణ అందుబాటులో లేనందున Google Chrome మీ డేటాను సమకాలీకరించలేకపోయింది.</translation> <translation id="2467438592969358367">Google Chrome మీ పాస్వర్డ్లను ఎగుమతి చేయాలనుకుంటోంది. దీనిని అనుమతించడం కోసం మీ Windows పాస్వర్డ్ని టైప్ చేయండి.</translation> -<translation id="2485422356828889247">వ్యవస్థాపనను తీసివెయ్యి</translation> +<translation id="2485422356828889247">అన్ఇన్స్టాల్ చేయి</translation> <translation id="2534507159460261402">Google Pay (Chromeకి కాపీ చేయబడింది)</translation> <translation id="2535429035253759792">ఈ అప్డేట్ని వర్తింపజేయడం కోసం మీరు Chromeని పునఃప్రారంభించాలని మీ నిర్వాహకుడు కోరుతున్నారు</translation> <translation id="2580411288591421699">ప్రస్తుతం అమలవుతున్న Google Chrome వెర్షన్ను ఇన్స్టాల్ చేయలేదు. దయచేసి Google Chromeను మూసివేసి, మళ్లీ ప్రయత్నించండి.</translation> @@ -102,7 +102,7 @@ <translation id="3479552764303398839">ఇప్పుడు కాదు</translation> <translation id="34857402635545079">అలాగే (<ph name="URL" />)లో ఉన్న Chromeకి సంబంధించిన డేటాని తీసివేయి</translation> <translation id="3503306920980160878">ఈ సైట్తో మీ స్థానాన్ని షేర్ చేయడానికి Chromeకు మీ స్థాన యాక్సెస్ అవసరం</translation> -<translation id="3582972582564653026">మీ పరికరాల అంతటా Chromeని సమకాలీకరించండి మరియు వ్యక్తిగతీకరించండి</translation> +<translation id="3582972582564653026">మీ పరికరాల అంతటా Chromeను సింక్ చేయండి మరియు వ్యక్తిగతీకరించండి</translation> <translation id="3622797965165704966">ఇప్పుడు మీ Google ఖాతాతో, షేర్ చేయబడిన కంప్యూటర్లలో Chromeను సులభంగా ఉపయోగించవచ్చు.</translation> <translation id="3637702109597584617">Google Chrome OS <ph name="TERMS_OF_SERVICE_LINK" />సేవా నిబంధనలు<ph name="END_TERMS_OF_SERVICE_LINK" /></translation> <translation id="3716182511346448902">ఈ పేజీ చాలా మెమరీని ఉపయోగిస్తోంది, కాబట్టి దీన్ని Chrome పాజ్ చేయబడింది.</translation> @@ -113,7 +113,7 @@ <translation id="386202838227397562">దయచేసి అన్ని Google Chrome విండోలను మూసివేసి, మళ్ళీ ప్రయత్నించండి.</translation> <translation id="3870154837782082782">Google Inc.</translation> <translation id="3873044882194371212">Chrome అ&జ్ఞాత విండోలో లింక్ను తెరువు</translation> -<translation id="3889417619312448367">Google Chromeను అన్ఇన్స్టాల్ చెయ్యి</translation> +<translation id="3889417619312448367">Google Chromeను అన్ఇన్స్టాల్ చేయండి</translation> <translation id="3898493977366060150">Google స్మార్ట్లతో వెబ్ బ్రౌజింగ్</translation> <translation id="4028693306634653894">Chromeకి వేగవంతంగా వెళ్లండి</translation> <translation id="4050175100176540509">ముఖ్యమైన భద్రతా మెరుగుదలలు మరియు కొత్త లక్షణాలు తాజా సంస్కరణలో అందుబాటులో ఉన్నాయి.</translation> @@ -124,7 +124,7 @@ <translation id="424864128008805179">Chrome నుండి సైన్ అవుట్ చేయాలా?</translation> <translation id="4251615635259297716">మీ Chrome డేటాను ఈ ఖాతాకు జోడించాలా?</translation> <translation id="4251625577313994583">మీ iPhoneలో Chromeని పొందండి</translation> -<translation id="4293420128516039005">మీ పరికరాల అంతటా Chromeని సమకాలీకరించడం మరియు వ్యక్తిగతీకరించడం కోసం సైన్ ఇన్ చేయండి</translation> +<translation id="4293420128516039005">మీ పరికరాల అంతటా Chromeను సింక్ చేయడం మరియు వ్యక్తిగతీకరించడం కోసం సైన్ ఇన్ చేయండి</translation> <translation id="4328355335528187361">Google Chrome డెవలపర్ (mDNS-In)</translation> <translation id="4331809312908958774">Chrome OS</translation> <translation id="4343195214584226067">Chromeకు <ph name="EXTENSION_NAME" /> జోడించబడింది</translation> @@ -138,7 +138,7 @@ <translation id="4600710005438004015">Chromeని తాజా వెర్షన్కు అప్డేట్ చేయడం సాధ్యం కాలేదు, కనుక మీరు కొత్త ఫీచర్లు మరియు భద్రతా పరిష్కారాలను పొందలేరు.</translation> <translation id="4631713731678262610">Chrome మెనూలో దాచండి</translation> <translation id="4633000520311261472">Chromeను సురక్షితం చేయడానికి, మేము <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />లో జాబితా చేయబడని మరియు మీకు తెలియకుండానే జోడించబడిన కొన్ని పొడిగింపులను నిలిపివేసాము.</translation> -<translation id="4700157086864140907">Google Chrome మీరు బ్రౌజర్లో టైప్ చేసే వాటిని Google సర్వర్లకు పంపించడం ద్వారా, Google శోధనలో ఉపయోగించబడేలాంటి పదనిర్మాణ-తనిఖీ సాంకేతిక పరిజ్ఞానాన్ని మీరు ఉపయోగించడానికి అనుమతించడం ద్వారా మరింత చురుకైన పదనిర్మాణ-తనిఖీని అందిస్తుంది.</translation> +<translation id="4700157086864140907">మీరు బ్రౌజర్లో టైప్ చేసే వాటిని Google సర్వర్లకు పంపించడం ద్వారా, Google శోధనలో ఉపయోగించే స్పెల్ చెక్ - సాంకేతిక పరిజ్ఞానాన్ని మీరు ఉపయోగించగలిగేలా అనుమతించి, మరింత మెరుగైన స్పెల్ చెక్ను Google Chrome అందించగలదు.</translation> <translation id="4728575227883772061">పేర్కొనబడని లోపం కారణంగా ఇన్స్టాలేషన్ విఫలమైంది. ప్రస్తుతం Google Chrome రన్ చేస్తున్నట్లయితే, దయచేసి దాన్ని మూసివేసి, మళ్ళీ ప్రయత్నించండి.</translation> <translation id="4750550185319565338"><ph name="PLUGIN_NAME" />ని ప్రారంభించడానికి Chromeను పునఃప్రారంభించండి</translation> <translation id="4754614261631455953">Google Chrome కెనరీ (mDNS-In)</translation> @@ -161,7 +161,7 @@ <translation id="5204098752394657250">Google Chrome <ph name="TERMS_OF_SERVICE_LINK" />సేవా నిబంధనలు<ph name="END_TERMS_OF_SERVICE_LINK" /></translation> <translation id="5251420635869119124">అతిథులు ఎటువంటి చరిత్రను వదలకుండానే Chromeను ఉపయోగించవచ్చు.</translation> <translation id="532046782124376502">హెచ్చరిక: Google Chrome మీ బ్రౌజింగ్ చరిత్రను రికార్డ్ చేయకుండా ఎక్సటెన్షన్లను నివారించలేదు. ఈ ఎక్సటెన్షన్ను అజ్ఞాత మోడ్లో ఆపివేయడానికి, ఈ ఎంపికను రద్దు చేయండి.</translation> -<translation id="5386244825306882791">ఇది మీరు Chromeని ప్రారంభించేటప్పుడు లేదా ఓమ్నిపెట్టె నుండి శోధించేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation> +<translation id="5386244825306882791">ఇది మీరు Chromeను ప్రారంభించేటప్పుడు లేదా ఓమ్నిబాక్స్ నుండి వెతికేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation> <translation id="5430073640787465221">మీ ప్రాధాన్యతల ఫైల్ పాడైంది లేదా చెల్లదు. Google Chrome మీ సెట్టింగ్లను తిరిగి పొందలేకపోయింది.</translation> <translation id="5483595757826856374">{0,plural, =0{ఇప్పుడు Chrome తిరిగి ప్రారంభించబడుతుంది}=1{1 సెకనులో Chrome తిరిగి ప్రారంభించబడుతుంది}other{# సెకన్లలో Chrome తిరిగి ప్రారంభించబడుతుంది}}</translation> <translation id="5505603430818498864">Google Chrome మీరు చూసే పేజీలలోని ఫోటోలను Google సర్వర్లకు పంపడం ద్వారా ఆయా ఫోటోలలో ఉండే ఆకారాలు మరియు అక్షరాలను గుర్తించి, ఆ పేజీలలోని కంటెంట్ని మీకు మరింత అర్థవంతంగా తెలియజేయడానికి కృషి చేస్తుంది.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-TW.xtb b/chrome/app/resources/google_chrome_strings_zh-TW.xtb index e392863..695d74a 100644 --- a/chrome/app/resources/google_chrome_strings_zh-TW.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
@@ -101,7 +101,7 @@ <translation id="3451115285585441894">正在新增至 Chrome...</translation> <translation id="345171907106878721">新增為 Chrome 使用者</translation> <translation id="3479552764303398839">現在不要</translation> -<translation id="34857402635545079">一併清除 Chrome 的資料 (<ph name="URL" />)</translation> +<translation id="34857402635545079">一併清除 Chrome 中的資料 (<ph name="URL" />)</translation> <translation id="3503306920980160878">Chrome 需要位置資訊存取權,才能與這個網站分享你的位置資訊</translation> <translation id="3582972582564653026">進行同步處理即可在你的所有裝置上享有個人化的 Chrome 體驗</translation> <translation id="3622797965165704966">無論是登入 Google 帳戶使用 Chrome,還是以 Google 帳戶使用共用電腦,現在都變得更容易了。</translation>
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 4fb8b2b..8a9c7d7 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -1774,6 +1774,13 @@ SINGLE_VALUE_TYPE( spellcheck::switches::kEnableSpellingFeedbackFieldTrial)}, #endif // ENABLE_SPELLCHECK +#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) + {"enable-webgl2-compute-context", + flag_descriptions::kWebGL2ComputeContextName, + flag_descriptions::kWebGL2ComputeContextDescription, + kOsWin | kOsLinux | kOsCrOS, + SINGLE_VALUE_TYPE(switches::kEnableWebGL2ComputeContext)}, +#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) {"enable-webgl-draft-extensions", flag_descriptions::kWebglDraftExtensionsName, flag_descriptions::kWebglDraftExtensionsDescription, kOsAll,
diff --git a/chrome/browser/android/autofill_assistant/client_android.cc b/chrome/browser/android/autofill_assistant/client_android.cc index 05a305f..c3344b8 100644 --- a/chrome/browser/android/autofill_assistant/client_android.cc +++ b/chrome/browser/android/autofill_assistant/client_android.cc
@@ -86,6 +86,12 @@ weak_ptr_factory_(this) {} ClientAndroid::~ClientAndroid() { + if (controller_ != nullptr) { + // In the case of an unexpected closing of the activity or tab, controller_ + // will not yet have been cleaned up (since that happens when a web + // contents object gets destroyed). + Metrics::RecordDropOut(Metrics::CONTENT_DESTROYED); + } Java_AutofillAssistantClient_clearNativePtr(AttachCurrentThread(), java_object_); }
diff --git a/chrome/browser/android/autofill_assistant/ui_controller_android.cc b/chrome/browser/android/autofill_assistant/ui_controller_android.cc index 3d65e30a..64694cb 100644 --- a/chrome/browser/android/autofill_assistant/ui_controller_android.cc +++ b/chrome/browser/android/autofill_assistant/ui_controller_android.cc
@@ -25,6 +25,7 @@ #include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/credit_card.h" #include "components/autofill_assistant/browser/controller.h" +#include "components/autofill_assistant/browser/metrics.h" #include "components/autofill_assistant/browser/rectf.h" #include "components/signin/core/browser/account_info.h" #include "components/strings/grit/components_strings.h" @@ -178,8 +179,10 @@ } void UiControllerAndroid::ShutdownGracefully() { + DCHECK(ui_delegate_->GetDropOutReason() != Metrics::AA_START); Java_AutofillAssistantUiController_onShutdownGracefully( - AttachCurrentThread(), java_autofill_assistant_ui_controller_); + AttachCurrentThread(), java_autofill_assistant_ui_controller_, + ui_delegate_->GetDropOutReason()); } void UiControllerAndroid::SetProgressPulsingEnabled(bool enabled) { @@ -201,7 +204,8 @@ Java_AutofillAssistantUiController_dismissAndShowSnackbar( env, java_autofill_assistant_ui_controller_, base::android::ConvertUTF8ToJavaString( - env, l10n_util::GetStringUTF8(IDS_AUTOFILL_ASSISTANT_STOPPED))); + env, l10n_util::GetStringUTF8(IDS_AUTOFILL_ASSISTANT_STOPPED)), + Metrics::SHEET_CLOSED); } std::string UiControllerAndroid::GetDebugContext() { @@ -261,9 +265,9 @@ env, java_autofill_assistant_ui_controller_, on_accept); } -void UiControllerAndroid::Shutdown() { +void UiControllerAndroid::Shutdown(Metrics::DropOutReason reason) { Java_AutofillAssistantUiController_onShutdown( - AttachCurrentThread(), java_autofill_assistant_ui_controller_); + AttachCurrentThread(), java_autofill_assistant_ui_controller_, reason); } void UiControllerAndroid::Close() {
diff --git a/chrome/browser/android/autofill_assistant/ui_controller_android.h b/chrome/browser/android/autofill_assistant/ui_controller_android.h index d4e198e..15ca21e 100644 --- a/chrome/browser/android/autofill_assistant/ui_controller_android.h +++ b/chrome/browser/android/autofill_assistant/ui_controller_android.h
@@ -15,6 +15,7 @@ #include "chrome/browser/android/autofill_assistant/assistant_header_delegate.h" #include "components/autofill_assistant/browser/client.h" #include "components/autofill_assistant/browser/details.h" +#include "components/autofill_assistant/browser/metrics.h" #include "components/autofill_assistant/browser/ui_controller.h" namespace autofill_assistant { @@ -38,7 +39,7 @@ // Overrides UiController: void OnStateChanged(AutofillAssistantState new_state) override; void OnStatusMessageChanged(const std::string& message) override; - void Shutdown() override; + void Shutdown(Metrics::DropOutReason reason) override; void Close() override; void SetChips(std::unique_ptr<std::vector<Chip>> chips) override; void ClearChips() override;
diff --git a/chrome/browser/android/preferences/website_preference_bridge.cc b/chrome/browser/android/preferences/website_preference_bridge.cc index d86a4d2a..4e71e4dd 100644 --- a/chrome/browser/android/preferences/website_preference_bridge.cc +++ b/chrome/browser/android/preferences/website_preference_bridge.cc
@@ -648,8 +648,7 @@ Profile* profile, bool fetch_important, const ScopedJavaGlobalRef<jobject>& java_callback, - const std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>& - local_storage_info) { + const std::list<content::StorageUsageInfo>& local_storage_info) { JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jobject> map = Java_WebsitePreferenceBridge_createLocalStorageInfoMap(env); @@ -660,21 +659,16 @@ profile, kMaxImportantSites); } - for (const BrowsingDataLocalStorageHelper::LocalStorageInfo& info : - local_storage_info) { - ScopedJavaLocalRef<jstring> full_origin = - ConvertUTF8ToJavaString(env, info.origin_url.spec()); - std::string origin_str = info.origin_url.GetOrigin().spec(); - + for (const content::StorageUsageInfo& info : local_storage_info) { bool important = false; if (fetch_important) { std::string registerable_domain; - if (info.origin_url.HostIsIPAddress()) { - registerable_domain = info.origin_url.host(); + if (url::HostIsIPAddress(info.origin.host())) { + registerable_domain = info.origin.host(); } else { registerable_domain = net::registry_controlled_domains::GetDomainAndRegistry( - info.origin_url, + info.origin.host(), net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); } auto important_domain_search = @@ -687,14 +681,10 @@ important = true; } } - // Remove the trailing slash so the origin is matched correctly in - // SingleWebsitePreferences.mergePermissionInfoForTopLevelOrigin. - DCHECK_EQ('/', origin_str.back()); - origin_str.pop_back(); - ScopedJavaLocalRef<jstring> origin = - ConvertUTF8ToJavaString(env, origin_str); + ScopedJavaLocalRef<jstring> java_origin = + ConvertUTF8ToJavaString(env, info.origin.Serialize()); Java_WebsitePreferenceBridge_insertLocalStorageInfoIntoMap( - env, map, origin, full_origin, info.size, important); + env, map, java_origin, info.total_size_bytes, important); } base::android::RunObjectCallbackAndroid(java_callback, map); @@ -741,10 +731,11 @@ Profile* profile = ProfileManager::GetActiveUserProfile(); auto local_storage_helper = base::MakeRefCounted<BrowsingDataLocalStorageHelper>(profile); - GURL origin_url = GURL(ConvertJavaStringToUTF8(env, jorigin)); + auto origin = + url::Origin::Create(GURL(ConvertJavaStringToUTF8(env, jorigin))); local_storage_helper->DeleteOrigin( - origin_url, base::BindOnce(&OnLocalStorageCleared, - ScopedJavaGlobalRef<jobject>(java_callback))); + origin, base::BindOnce(&OnLocalStorageCleared, + ScopedJavaGlobalRef<jobject>(java_callback))); } static void JNI_WebsitePreferenceBridge_ClearStorageData(
diff --git a/chrome/browser/android/profiles/profile_downloader_android.cc b/chrome/browser/android/profiles/profile_downloader_android.cc index 25e5288..8dbe433 100644 --- a/chrome/browser/android/profiles/profile_downloader_android.cc +++ b/chrome/browser/android/profiles/profile_downloader_android.cc
@@ -15,10 +15,10 @@ #include "chrome/browser/profiles/profile_downloader.h" #include "chrome/browser/profiles/profile_downloader_delegate.h" #include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/signin/account_tracker_service_factory.h" -#include "components/signin/core/browser/account_tracker_service.h" +#include "chrome/browser/signin/identity_manager_factory.h" #include "google_apis/gaia/gaia_auth_util.h" #include "jni/ProfileDownloader_jni.h" +#include "services/identity/public/cpp/identity_manager.h" #include "third_party/skia/include/core/SkBitmap.h" #include "ui/gfx/android/java_bitmap.h" #include "ui/gfx/image/image_skia.h" @@ -76,7 +76,6 @@ void OnProfileDownloadSuccess( ProfileDownloader* downloader) override { - base::string16 full_name = downloader->GetProfileFullName(); base::string16 given_name = downloader->GetProfileGivenName(); SkBitmap bitmap = downloader->GetProfilePicture(); @@ -189,21 +188,19 @@ Profile* profile = ProfileAndroid::FromProfileAndroid(jprofile); const std::string email = base::android::ConvertJavaStringToUTF8(env, jemail); - AccountTrackerService* account_tracker_service = - AccountTrackerServiceFactory::GetForProfile(profile); - AccountInfo account_info = - account_tracker_service->FindAccountInfoByEmail(email); + auto maybe_account_info = + IdentityManagerFactory::GetForProfile(profile) + ->FindAccountInfoForAccountWithRefreshTokenByEmailAddress(email); - if (account_info.account_id.empty()) { - LOG(ERROR) << "Attempted to get AccountInfo for account not in the " - << "AccountTrackerService"; - return; + if (!maybe_account_info.has_value()) { + LOG(ERROR) << "Attempted to get AccountInfo for account not in the " + << "IdentityManager"; + return; } - AccountInfoRetriever* retriever = new AccountInfoRetriever( - profile, - account_tracker_service->FindAccountInfoByEmail(email).account_id, email, - image_side_pixels, is_pre_signin); + AccountInfoRetriever* retriever = + new AccountInfoRetriever(profile, maybe_account_info.value().account_id, + email, image_side_pixels, is_pre_signin); retriever->Start(); }
diff --git a/chrome/browser/browsing_data/browsing_data_local_storage_helper.cc b/chrome/browser/browsing_data/browsing_data_local_storage_helper.cc index 2e0abd2b..585e9b2 100644 --- a/chrome/browser/browsing_data/browsing_data_local_storage_helper.cc +++ b/chrome/browser/browsing_data/browsing_data_local_storage_helper.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/browsing_data/browsing_data_local_storage_helper.h" +#include <utility> #include <vector> #include "base/bind.h" @@ -36,12 +37,11 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK(!callback.is_null()); - std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo> result; + std::list<content::StorageUsageInfo> result; for (const content::StorageUsageInfo& info : infos) { if (!HasStorageScheme(info.origin.GetURL())) continue; - result.push_back(BrowsingDataLocalStorageHelper::LocalStorageInfo( - info.origin.GetURL(), info.total_size_bytes, info.last_modified)); + result.push_back(info); } base::PostTaskWithTraits(FROM_HERE, {BrowserThread::UI}, @@ -50,14 +50,6 @@ } // namespace -BrowsingDataLocalStorageHelper::LocalStorageInfo::LocalStorageInfo( - const GURL& origin_url, - int64_t size, - base::Time last_modified) - : origin_url(origin_url), size(size), last_modified(last_modified) {} - -BrowsingDataLocalStorageHelper::LocalStorageInfo::~LocalStorageInfo() {} - BrowsingDataLocalStorageHelper::BrowsingDataLocalStorageHelper(Profile* profile) : dom_storage_context_(BrowserContext::GetDefaultStoragePartition(profile) ->GetDOMStorageContext()) { @@ -74,11 +66,10 @@ base::BindOnce(&GetUsageInfoCallback, std::move(callback))); } -void BrowsingDataLocalStorageHelper::DeleteOrigin(const GURL& origin_url, +void BrowsingDataLocalStorageHelper::DeleteOrigin(const url::Origin& origin, base::OnceClosure callback) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - dom_storage_context_->DeleteLocalStorage(url::Origin::Create(origin_url), - std::move(callback)); + dom_storage_context_->DeleteLocalStorage(origin, std::move(callback)); } //--------------------------------------------------------- @@ -118,19 +109,20 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK(!callback.is_null()); - std::list<LocalStorageInfo> result; + std::list<content::StorageUsageInfo> result; for (const GURL& url : pending_local_storage_info_) - result.push_back(LocalStorageInfo(url, 0, base::Time())); + result.push_back( + content::StorageUsageInfo(url::Origin::Create(url), 0, base::Time())); base::PostTaskWithTraits(FROM_HERE, {BrowserThread::UI}, base::BindOnce(std::move(callback), result)); } void CannedBrowsingDataLocalStorageHelper::DeleteOrigin( - const GURL& origin_url, + const url::Origin& origin, base::OnceClosure callback) { - pending_local_storage_info_.erase(origin_url); - BrowsingDataLocalStorageHelper::DeleteOrigin(origin_url, std::move(callback)); + pending_local_storage_info_.erase(origin.GetURL()); + BrowsingDataLocalStorageHelper::DeleteOrigin(origin, std::move(callback)); } CannedBrowsingDataLocalStorageHelper::~CannedBrowsingDataLocalStorageHelper() {}
diff --git a/chrome/browser/browsing_data/browsing_data_local_storage_helper.h b/chrome/browser/browsing_data/browsing_data_local_storage_helper.h index 1b8fe27..60ac51f 100644 --- a/chrome/browser/browsing_data/browsing_data_local_storage_helper.h +++ b/chrome/browser/browsing_data/browsing_data_local_storage_helper.h
@@ -18,6 +18,7 @@ #include "base/memory/ref_counted.h" #include "base/time/time.h" #include "content/public/browser/dom_storage_context.h" +#include "content/public/browser/storage_usage_info.h" #include "url/gurl.h" class Profile; @@ -27,20 +28,8 @@ class BrowsingDataLocalStorageHelper : public base::RefCounted<BrowsingDataLocalStorageHelper> { public: - // Contains detailed information about local storage. - struct LocalStorageInfo { - LocalStorageInfo(const GURL& origin_url, - int64_t size, - base::Time last_modified); - ~LocalStorageInfo(); - - GURL origin_url; - int64_t size; - base::Time last_modified; - }; - using FetchCallback = - base::OnceCallback<void(const std::list<LocalStorageInfo>&)>; + base::OnceCallback<void(const std::list<content::StorageUsageInfo>&)>; explicit BrowsingDataLocalStorageHelper(Profile* profile); @@ -48,10 +37,11 @@ // callback. This must be called only in the UI thread. virtual void StartFetching(FetchCallback callback); - // Deletes the local storage for the |origin_url|. |callback| is called when + // Deletes the local storage for the |origin|. |callback| is called when // the deletion is sent to the database and |StartFetching()| doesn't return // entries for |origin_url| anymore. - virtual void DeleteOrigin(const GURL& origin_url, base::OnceClosure callback); + virtual void DeleteOrigin(const url::Origin& origin, + base::OnceClosure callback); protected: friend class base::RefCounted<BrowsingDataLocalStorageHelper>; @@ -89,7 +79,7 @@ // BrowsingDataLocalStorageHelper implementation. void StartFetching(FetchCallback callback) override; - void DeleteOrigin(const GURL& origin_url, + void DeleteOrigin(const url::Origin& origin, base::OnceClosure callback) override; private:
diff --git a/chrome/browser/browsing_data/browsing_data_local_storage_helper_browsertest.cc b/chrome/browser/browsing_data/browsing_data_local_storage_helper_browsertest.cc index 4f4f20da..f2d2f5f 100644 --- a/chrome/browser/browsing_data/browsing_data_local_storage_helper_browsertest.cc +++ b/chrome/browser/browsing_data/browsing_data_local_storage_helper_browsertest.cc
@@ -35,8 +35,8 @@ namespace { -using TestCompletionCallback = BrowsingDataHelperCallback< - BrowsingDataLocalStorageHelper::LocalStorageInfo>; +using TestCompletionCallback = + BrowsingDataHelperCallback<content::StorageUsageInfo>; constexpr base::FilePath::CharType kTestFile0[] = FILE_PATH_LITERAL("http_www.chromium.org_0.localstorage"); @@ -85,8 +85,7 @@ } void Callback( - const std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>& - local_storage_info) { + const std::list<content::StorageUsageInfo>& local_storage_info) { DCHECK_CURRENTLY_ON(BrowserThread::UI); // There's no guarantee on the order, ensure these files are there. const char* const kTestHosts[] = {"www.chromium.org", "www.google.com"}; @@ -94,8 +93,8 @@ ASSERT_EQ(base::size(kTestHosts), local_storage_info.size()); for (size_t i = 0; i < base::size(kTestHosts); ++i) { for (const auto& info : local_storage_info) { - ASSERT_TRUE(info.origin_url.SchemeIs("http")); - if (info.origin_url.host_piece() == kTestHosts[i]) { + ASSERT_EQ(info.origin.scheme(), "http"); + if (info.origin.host() == kTestHosts[i]) { ASSERT_FALSE(test_hosts_found[i]); test_hosts_found[i] = true; } @@ -127,8 +126,8 @@ new BrowsingDataLocalStorageHelper(browser()->profile())); CreateLocalStorageFilesForTest(); base::RunLoop run_loop; - local_storage_helper->DeleteOrigin(GURL(kOriginOfTestFile0), - run_loop.QuitClosure()); + local_storage_helper->DeleteOrigin( + url::Origin::Create(GURL(kOriginOfTestFile0)), run_loop.QuitClosure()); run_loop.Run(); // Ensure the file has been deleted. @@ -162,14 +161,13 @@ base::Bind(&TestCompletionCallback::callback, base::Unretained(&callback))); - std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo> result = - callback.result(); + std::list<content::StorageUsageInfo> result = callback.result(); ASSERT_EQ(2u, result.size()); auto info = result.begin(); - EXPECT_EQ(origin1, info->origin_url); + EXPECT_EQ(origin1, info->origin.GetURL()); info++; - EXPECT_EQ(origin2, info->origin_url); + EXPECT_EQ(origin2, info->origin.GetURL()); } IN_PROC_BROWSER_TEST_F(BrowsingDataLocalStorageHelperTest, CannedUnique) { @@ -185,11 +183,10 @@ base::Bind(&TestCompletionCallback::callback, base::Unretained(&callback))); - std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo> result = - callback.result(); + std::list<content::StorageUsageInfo> result = callback.result(); ASSERT_EQ(1u, result.size()); - EXPECT_EQ(origin, result.begin()->origin_url); + EXPECT_EQ(origin, result.begin()->origin.GetURL()); } } // namespace
diff --git a/chrome/browser/browsing_data/browsing_data_local_storage_helper_unittest.cc b/chrome/browser/browsing_data/browsing_data_local_storage_helper_unittest.cc index f5ef3efd..5c48df9 100644 --- a/chrome/browser/browsing_data/browsing_data_local_storage_helper_unittest.cc +++ b/chrome/browser/browsing_data/browsing_data_local_storage_helper_unittest.cc
@@ -45,9 +45,9 @@ helper->AddLocalStorage(origin2); helper->AddLocalStorage(origin3); EXPECT_EQ(3u, helper->GetLocalStorageCount()); - helper->DeleteOrigin(origin2, base::DoNothing()); + helper->DeleteOrigin(url::Origin::Create(origin2), base::DoNothing()); EXPECT_EQ(2u, helper->GetLocalStorageCount()); - helper->DeleteOrigin(origin1, base::DoNothing()); + helper->DeleteOrigin(url::Origin::Create(origin1), base::DoNothing()); EXPECT_EQ(1u, helper->GetLocalStorageCount()); }
diff --git a/chrome/browser/browsing_data/cookies_tree_model.cc b/chrome/browser/browsing_data/cookies_tree_model.cc index e53869c..13f1ce3 100644 --- a/chrome/browser/browsing_data/cookies_tree_model.cc +++ b/chrome/browser/browsing_data/cookies_tree_model.cc
@@ -211,20 +211,18 @@ } CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitLocalStorage( - const BrowsingDataLocalStorageHelper::LocalStorageInfo* - local_storage_info) { + const content::StorageUsageInfo* usage_info) { Init(TYPE_LOCAL_STORAGE); - this->local_storage_info = local_storage_info; - origin = url::Origin::Create(local_storage_info->origin_url); + this->usage_info = usage_info; + origin = usage_info->origin; return *this; } CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitSessionStorage( - const BrowsingDataLocalStorageHelper::LocalStorageInfo* - session_storage_info) { + const content::StorageUsageInfo* usage_info) { Init(TYPE_SESSION_STORAGE); - this->session_storage_info = session_storage_info; - origin = url::Origin::Create(session_storage_info->origin_url); + this->usage_info = usage_info; + origin = usage_info->origin; return *this; } @@ -448,13 +446,12 @@ class CookieTreeLocalStorageNode : public CookieTreeNode { public: - // |local_storage_info| should remain valid at least as long as the + // |usage_info| should remain valid at least as long as the // CookieTreeLocalStorageNode is valid. explicit CookieTreeLocalStorageNode( - std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::iterator - local_storage_info) + std::list<content::StorageUsageInfo>::iterator local_storage_info) : CookieTreeNode( - base::UTF8ToUTF16(local_storage_info->origin_url.spec())), + base::UTF8ToUTF16(local_storage_info->origin.Serialize())), local_storage_info_(local_storage_info) {} ~CookieTreeLocalStorageNode() override {} @@ -465,7 +462,7 @@ if (container) { container->local_storage_helper_->DeleteOrigin( - local_storage_info_->origin_url, base::DoNothing()); + local_storage_info_->origin, base::DoNothing()); container->local_storage_info_list_.erase(local_storage_info_); } } @@ -473,13 +470,14 @@ return DetailedInfo().InitLocalStorage(&*local_storage_info_); } - int64_t InclusiveSize() const override { return local_storage_info_->size; } + int64_t InclusiveSize() const override { + return local_storage_info_->total_size_bytes; + } private: // |local_storage_info_| is expected to remain valid as long as the // CookieTreeLocalStorageNode is valid. - std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::iterator - local_storage_info_; + std::list<content::StorageUsageInfo>::iterator local_storage_info_; DISALLOW_COPY_AND_ASSIGN(CookieTreeLocalStorageNode); }; @@ -492,10 +490,9 @@ // |session_storage_info| should remain valid at least as long as the // CookieTreeSessionStorageNode is valid. explicit CookieTreeSessionStorageNode( - std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::iterator - session_storage_info) + std::list<content::StorageUsageInfo>::iterator session_storage_info) : CookieTreeNode( - base::UTF8ToUTF16(session_storage_info->origin_url.spec())), + base::UTF8ToUTF16(session_storage_info->origin.Serialize())), session_storage_info_(session_storage_info) {} ~CookieTreeSessionStorageNode() override {} @@ -519,8 +516,7 @@ private: // |session_storage_info_| is expected to remain valid as long as the // CookieTreeSessionStorageNode is valid. - std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::iterator - session_storage_info_; + std::list<content::StorageUsageInfo>::iterator session_storage_info_; DISALLOW_COPY_AND_ASSIGN(CookieTreeSessionStorageNode); }; @@ -1668,7 +1664,7 @@ for (auto local_storage_info = container->local_storage_info_list_.begin(); local_storage_info != container->local_storage_info_list_.end(); ++local_storage_info) { - const GURL& origin(local_storage_info->origin_url); + const GURL& origin(local_storage_info->origin.GetURL()); if (filter.empty() || (CookieTreeHostNode::TitleForUrl(origin) .find(filter) != std::string::npos)) { @@ -1695,7 +1691,7 @@ container->session_storage_info_list_.begin(); session_storage_info != container->session_storage_info_list_.end(); ++session_storage_info) { - const GURL& origin = session_storage_info->origin_url; + const GURL& origin = session_storage_info->origin.GetURL(); if (filter.empty() || (CookieTreeHostNode::TitleForUrl(origin) .find(filter) != base::string16::npos)) {
diff --git a/chrome/browser/browsing_data/cookies_tree_model.h b/chrome/browser/browsing_data/cookies_tree_model.h index eafdebf..eaa3c5f 100644 --- a/chrome/browser/browsing_data/cookies_tree_model.h +++ b/chrome/browser/browsing_data/cookies_tree_model.h
@@ -111,11 +111,9 @@ DetailedInfo& InitDatabase( const BrowsingDataDatabaseHelper::DatabaseInfo* database_info); DetailedInfo& InitLocalStorage( - const BrowsingDataLocalStorageHelper::LocalStorageInfo* - local_storage_info); + const content::StorageUsageInfo* local_storage_info); DetailedInfo& InitSessionStorage( - const BrowsingDataLocalStorageHelper::LocalStorageInfo* - session_storage_info); + const content::StorageUsageInfo* session_storage_info); DetailedInfo& InitAppCache(const GURL& origin, const blink::mojom::AppCacheInfo* appcache_info); DetailedInfo& InitIndexedDB(const content::StorageUsageInfo* usage_info); @@ -138,10 +136,6 @@ url::Origin origin; const net::CanonicalCookie* cookie = nullptr; const BrowsingDataDatabaseHelper::DatabaseInfo* database_info = nullptr; - const BrowsingDataLocalStorageHelper::LocalStorageInfo* local_storage_info = - nullptr; - const BrowsingDataLocalStorageHelper::LocalStorageInfo* - session_storage_info = nullptr; const blink::mojom::AppCacheInfo* appcache_info = nullptr; // Used for IndexedDB, Service Worker, and Cache Storage node types. const content::StorageUsageInfo* usage_info = nullptr;
diff --git a/chrome/browser/browsing_data/cookies_tree_model_unittest.cc b/chrome/browser/browsing_data/cookies_tree_model_unittest.cc index 5d8d4a7b..e3dca69e 100644 --- a/chrome/browser/browsing_data/cookies_tree_model_unittest.cc +++ b/chrome/browser/browsing_data/cookies_tree_model_unittest.cc
@@ -274,21 +274,17 @@ // compatibility with tests. The tests should be updated once all // appropriate parts have been migrated to url::Origin. switch (node_type) { - case CookieTreeNode::DetailedInfo::TYPE_SESSION_STORAGE: - return node->GetDetailedInfo().session_storage_info->origin_url.spec() + - ","; - case CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE: - return node->GetDetailedInfo().local_storage_info->origin_url.spec() + - ","; case CookieTreeNode::DetailedInfo::TYPE_DATABASE: return node->GetDetailedInfo().database_info->database_name + ","; case CookieTreeNode::DetailedInfo::TYPE_COOKIE: return node->GetDetailedInfo().cookie->Name() + ","; case CookieTreeNode::DetailedInfo::TYPE_APPCACHE: return node->GetDetailedInfo().appcache_info->manifest_url.spec() + ","; - case CookieTreeNode::DetailedInfo::TYPE_INDEXED_DB: - case CookieTreeNode::DetailedInfo::TYPE_SERVICE_WORKER: case CookieTreeNode::DetailedInfo::TYPE_CACHE_STORAGE: + case CookieTreeNode::DetailedInfo::TYPE_INDEXED_DB: + case CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE: + case CookieTreeNode::DetailedInfo::TYPE_SERVICE_WORKER: + case CookieTreeNode::DetailedInfo::TYPE_SESSION_STORAGE: return node->GetDetailedInfo().usage_info->origin.GetURL().spec() + ","; case CookieTreeNode::DetailedInfo::TYPE_FILE_SYSTEM: return node->GetDetailedInfo()
diff --git a/chrome/browser/browsing_data/local_data_container.h b/chrome/browser/browsing_data/local_data_container.h index a03f30a..74524e98 100644 --- a/chrome/browser/browsing_data/local_data_container.h +++ b/chrome/browser/browsing_data/local_data_container.h
@@ -44,10 +44,8 @@ typedef std::list<net::CanonicalCookie> CookieList; typedef std::list<BrowsingDataDatabaseHelper::DatabaseInfo> DatabaseInfoList; -typedef std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo> - LocalStorageInfoList; -typedef std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo> - SessionStorageInfoList; +typedef std::list<content::StorageUsageInfo> LocalStorageInfoList; +typedef std::list<content::StorageUsageInfo> SessionStorageInfoList; typedef std::list<content::StorageUsageInfo> IndexedDBInfoList; typedef std::list<BrowsingDataFileSystemHelper::FileSystemInfo> FileSystemInfoList;
diff --git a/chrome/browser/browsing_data/mock_browsing_data_local_storage_helper.cc b/chrome/browser/browsing_data/mock_browsing_data_local_storage_helper.cc index 68bc401b..c55872f 100644 --- a/chrome/browser/browsing_data/mock_browsing_data_local_storage_helper.cc +++ b/chrome/browser/browsing_data/mock_browsing_data_local_storage_helper.cc
@@ -24,7 +24,7 @@ } void MockBrowsingDataLocalStorageHelper::DeleteOrigin( - const GURL& origin, + const url::Origin& origin, base::OnceClosure callback) { ASSERT_TRUE(base::ContainsKey(origins_, origin)); last_deleted_origin_ = origin; @@ -35,15 +35,14 @@ void MockBrowsingDataLocalStorageHelper::AddLocalStorageSamples() { const GURL kOrigin1("http://host1:1/"); const GURL kOrigin2("http://host2:2/"); - AddLocalStorageForOrigin(kOrigin1, 1); - AddLocalStorageForOrigin(kOrigin2, 2); + AddLocalStorageForOrigin(url::Origin::Create(kOrigin1), 1); + AddLocalStorageForOrigin(url::Origin::Create(kOrigin2), 2); } void MockBrowsingDataLocalStorageHelper::AddLocalStorageForOrigin( - const GURL& origin, + const url::Origin& origin, size_t size) { - response_.push_back(BrowsingDataLocalStorageHelper::LocalStorageInfo( - origin, size, base::Time())); + response_.emplace_back(origin, size, base::Time()); origins_[origin] = true; }
diff --git a/chrome/browser/browsing_data/mock_browsing_data_local_storage_helper.h b/chrome/browser/browsing_data/mock_browsing_data_local_storage_helper.h index 1fa7364..f0b1e73 100644 --- a/chrome/browser/browsing_data/mock_browsing_data_local_storage_helper.h +++ b/chrome/browser/browsing_data/mock_browsing_data_local_storage_helper.h
@@ -22,13 +22,14 @@ // BrowsingDataLocalStorageHelper implementation. void StartFetching(FetchCallback callback) override; - void DeleteOrigin(const GURL& origin, base::OnceClosure callback) override; + void DeleteOrigin(const url::Origin& origin, + base::OnceClosure callback) override; // Adds some LocalStorageInfo samples. void AddLocalStorageSamples(); // Add a LocalStorageInfo entry for a single origin. - void AddLocalStorageForOrigin(const GURL& origin, size_t size); + void AddLocalStorageForOrigin(const url::Origin& origin, size_t size); // Notifies the callback. void Notify(); @@ -40,16 +41,16 @@ // invocation. bool AllDeleted(); - GURL last_deleted_origin_; + url::Origin last_deleted_origin_; private: ~MockBrowsingDataLocalStorageHelper() override; FetchCallback callback_; - std::map<const GURL, bool> origins_; + std::map<const url::Origin, bool> origins_; - std::list<LocalStorageInfo> response_; + std::list<content::StorageUsageInfo> response_; DISALLOW_COPY_AND_ASSIGN(MockBrowsingDataLocalStorageHelper); };
diff --git a/chrome/browser/browsing_data/site_data_size_collector.cc b/chrome/browser/browsing_data/site_data_size_collector.cc index f9f22c8..d73fa30 100644 --- a/chrome/browser/browsing_data/site_data_size_collector.cc +++ b/chrome/browser/browsing_data/site_data_size_collector.cc
@@ -162,7 +162,7 @@ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); int64_t total_size = 0; for (const auto& local_storage_info : local_storage_info_list) - total_size += local_storage_info.size; + total_size += local_storage_info.total_size_bytes; OnStorageSizeFetched(total_size); }
diff --git a/chrome/browser/browsing_data/site_data_size_collector.h b/chrome/browser/browsing_data/site_data_size_collector.h index 9dd9924..7e9f519 100644 --- a/chrome/browser/browsing_data/site_data_size_collector.h +++ b/chrome/browser/browsing_data/site_data_size_collector.h
@@ -22,8 +22,7 @@ typedef std::list<net::CanonicalCookie> CookieList; typedef std::list<BrowsingDataDatabaseHelper::DatabaseInfo> DatabaseInfoList; -typedef std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo> - LocalStorageInfoList; +typedef std::list<content::StorageUsageInfo> LocalStorageInfoList; typedef std::list<content::StorageUsageInfo> IndexedDBInfoList; typedef std::list<BrowsingDataFileSystemHelper::FileSystemInfo> FileSystemInfoList;
diff --git a/chrome/browser/captive_portal/captive_portal_browsertest.cc b/chrome/browser/captive_portal/captive_portal_browsertest.cc index bfb0581b..8acc796aa 100644 --- a/chrome/browser/captive_portal/captive_portal_browsertest.cc +++ b/chrome/browser/captive_portal/captive_portal_browsertest.cc
@@ -16,6 +16,7 @@ #include "base/bind.h" #include "base/command_line.h" #include "base/compiler_specific.h" +#include "base/feature_list.h" #include "base/files/file_path.h" #include "base/macros.h" #include "base/message_loop/message_loop.h" @@ -45,12 +46,14 @@ #include "chrome/browser/ui/tab_contents/tab_contents_iterator.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" +#include "chrome/common/chrome_features.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/pref_names.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" #include "components/prefs/pref_service.h" #include "components/security_interstitials/content/security_interstitial_page.h" +#include "components/security_interstitials/content/security_interstitial_tab_helper.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/interstitial_page.h" @@ -582,6 +585,14 @@ content::InterstitialPageDelegate::TypeID GetInterstitialType( WebContents* contents) const; + bool IsShowingInterstitial(WebContents* contents); + + // Without committed interstitials, this waits for an interstitial to attach + // to the current WebContents. With committed interstitials, it instead + // asserts an interstitial is showing and waits for the render frame to be + // ready. + void WaitForInterstitial(content::WebContents* contents); + // Returns the CaptivePortalTabReloader::State of |web_contents|. CaptivePortalTabReloader::State GetStateOfTabReloader( WebContents* web_contents) const; @@ -1051,6 +1062,18 @@ content::InterstitialPageDelegate::TypeID CaptivePortalBrowserTest::GetInterstitialType(WebContents* contents) const { + if (base::FeatureList::IsEnabled(features::kSSLCommittedInterstitials)) { + security_interstitials::SecurityInterstitialTabHelper* helper = + security_interstitials::SecurityInterstitialTabHelper::FromWebContents( + contents); + if (!helper) + return nullptr; + security_interstitials::SecurityInterstitialPage* blocking_page = + helper->GetBlockingPageForCurrentlyCommittedNavigationForTesting(); + if (!blocking_page) + return nullptr; + return blocking_page->GetTypeForTesting(); + } if (!contents->ShowingInterstitialPage()) return nullptr; return contents->GetInterstitialPage() @@ -1058,6 +1081,23 @@ ->GetTypeForTesting(); } +bool CaptivePortalBrowserTest::IsShowingInterstitial(WebContents* contents) { + return GetInterstitialType(contents) != nullptr; +} + +void CaptivePortalBrowserTest::WaitForInterstitial( + content::WebContents* contents) { + if (base::FeatureList::IsEnabled(features::kSSLCommittedInterstitials)) { + ASSERT_TRUE(IsShowingInterstitial(contents)); + ASSERT_TRUE(WaitForRenderFrameReady(contents->GetMainFrame())); + } else { + content::WaitForInterstitialAttach(contents); + ASSERT_TRUE(IsShowingInterstitial(contents)); + ASSERT_TRUE(WaitForRenderFrameReady( + contents->GetInterstitialPage()->GetMainFrame())); + } +} + CaptivePortalTabReloader::State CaptivePortalBrowserTest::GetStateOfTabReloader( WebContents* web_contents) const { return GetTabReloader(web_contents)->state(); @@ -1826,8 +1866,11 @@ tab_strip_model->ActivateTabAt(cert_error_tab_index, false); // Wait for the interstitial to load all the JavaScript code. Otherwise, // trying to click on a button will fail. - content::RenderFrameHost* rfh = - broken_tab_contents->GetInterstitialPage()->GetMainFrame(); + content::RenderFrameHost* rfh; + if (base::FeatureList::IsEnabled(features::kSSLCommittedInterstitials)) + rfh = broken_tab_contents->GetMainFrame(); + else + rfh = broken_tab_contents->GetInterstitialPage()->GetMainFrame(); EXPECT_TRUE(WaitForRenderFrameReady(rfh)); const char kClickConnectButtonJS[] = "document.getElementById('primary-button').click();"; @@ -1854,7 +1897,7 @@ LoginCertError(browser()); // Once logged in, broken tab should reload and display the SSL interstitial. - WaitForInterstitialAttach(broken_tab_contents); + WaitForInterstitial(broken_tab_contents); tab_strip_model->ActivateTabAt(cert_error_tab_index, false); EXPECT_EQ(SSLBlockingPage::kTypeForTesting, @@ -1911,7 +1954,7 @@ // Make sure that the |ssl_error_handler| is deleted if page load is stopped. EXPECT_TRUE(nullptr == SSLErrorHandler::FromWebContents(broken_tab_contents)); - EXPECT_FALSE(broken_tab_contents->ShowingInterstitialPage()); + EXPECT_FALSE(IsShowingInterstitial(broken_tab_contents)); EXPECT_FALSE(broken_tab_contents->IsLoading()); EXPECT_EQ(0, portal_observer1.num_results_received()); EXPECT_EQ(0, NumLoadingTabs()); @@ -1928,7 +1971,7 @@ captive_portal_service->DetectCaptivePortal(); portal_observer2.WaitForResults(1); - EXPECT_FALSE(broken_tab_contents->ShowingInterstitialPage()); + EXPECT_FALSE(IsShowingInterstitial(broken_tab_contents)); EXPECT_FALSE(broken_tab_contents->IsLoading()); EXPECT_EQ(1, portal_observer2.num_results_received()); EXPECT_EQ(captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL, @@ -1966,7 +2009,7 @@ // Make sure that the |ssl_error_handler| is deleted. EXPECT_TRUE(nullptr == SSLErrorHandler::FromWebContents(broken_tab_contents)); - EXPECT_FALSE(broken_tab_contents->ShowingInterstitialPage()); + EXPECT_FALSE(IsShowingInterstitial(broken_tab_contents)); EXPECT_FALSE(broken_tab_contents->IsLoading()); EXPECT_EQ(0, portal_observer.num_results_received()); EXPECT_EQ(0, NumLoadingTabs()); @@ -1983,7 +2026,7 @@ captive_portal_service->DetectCaptivePortal(); portal_observer2.WaitForResults(1); - EXPECT_FALSE(broken_tab_contents->ShowingInterstitialPage()); + EXPECT_FALSE(IsShowingInterstitial(broken_tab_contents)); EXPECT_FALSE(broken_tab_contents->IsLoading()); EXPECT_EQ(1, portal_observer2.num_results_received()); EXPECT_EQ(captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL, @@ -2026,7 +2069,7 @@ // Make sure that the |ssl_error_handler| is deleted. EXPECT_TRUE(nullptr == SSLErrorHandler::FromWebContents(broken_tab_contents)); - EXPECT_FALSE(broken_tab_contents->ShowingInterstitialPage()); + EXPECT_FALSE(IsShowingInterstitial(broken_tab_contents)); EXPECT_FALSE(broken_tab_contents->IsLoading()); EXPECT_EQ(0, portal_observer.num_results_received()); EXPECT_EQ(0, NumLoadingTabs()); @@ -2043,7 +2086,7 @@ captive_portal_service->DetectCaptivePortal(); portal_observer2.WaitForResults(1); - EXPECT_FALSE(broken_tab_contents->ShowingInterstitialPage()); + EXPECT_FALSE(IsShowingInterstitial(broken_tab_contents)); EXPECT_FALSE(broken_tab_contents->IsLoading()); EXPECT_EQ(1, portal_observer2.num_results_received()); EXPECT_EQ(captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL, @@ -2088,12 +2131,10 @@ ui::PAGE_TRANSITION_TYPED, false)); test_navigation_observer.WaitForNavigations(1); // Should end up with an SSL interstitial. - WaitForInterstitialAttach(broken_tab_contents); - ASSERT_TRUE(broken_tab_contents->ShowingInterstitialPage()); + WaitForInterstitial(broken_tab_contents); + ASSERT_TRUE(IsShowingInterstitial(broken_tab_contents)); EXPECT_EQ(SSLBlockingPage::kTypeForTesting, - broken_tab_contents->GetInterstitialPage() - ->GetDelegateForTesting() - ->GetTypeForTesting()); + GetInterstitialType(broken_tab_contents)); EXPECT_FALSE(broken_tab_contents->IsLoading()); EXPECT_EQ(1, portal_observer.num_results_received()); EXPECT_EQ(captive_portal::RESULT_INTERNET_CONNECTED, @@ -2138,12 +2179,10 @@ // 2- For completing the load of the login tab. test_navigation_observer.WaitForNavigations(2); // Should end up with a captive portal interstitial and a new login tab. - WaitForInterstitialAttach(broken_tab_contents); - ASSERT_TRUE(broken_tab_contents->ShowingInterstitialPage()); + WaitForInterstitial(broken_tab_contents); + ASSERT_TRUE(IsShowingInterstitial(broken_tab_contents)); EXPECT_EQ(CaptivePortalBlockingPage::kTypeForTesting, - broken_tab_contents->GetInterstitialPage() - ->GetDelegateForTesting() - ->GetTypeForTesting()); + GetInterstitialType(broken_tab_contents)); ASSERT_EQ(initial_tab_count + 1, tab_strip_model->count()); EXPECT_EQ(initial_tab_count, tab_strip_model->active_index()); EXPECT_FALSE(broken_tab_contents->IsLoading()); @@ -2646,12 +2685,20 @@ info.unverified_cert = info.cert; FailJobsWithCertError(1, info); navigation_observer.WaitForNavigations(1); - - EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, - GetStateOfTabReloaderAt(browser(), broken_tab_index)); - - WaitForInterstitialAttach(broken_tab_contents); - portal_observer.WaitForResults(1); + if (base::FeatureList::IsEnabled(features::kSSLCommittedInterstitials)) { + // With committed interstitials, the SSL interstitial navigation will result + // in the captive portal check firing (and returning no captive portal), so + // the state will get reset to none. + EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, + GetStateOfTabReloaderAt(browser(), broken_tab_index)); + WaitForInterstitial(broken_tab_contents); + portal_observer.WaitForResults(2); + } else { + EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, + GetStateOfTabReloaderAt(browser(), broken_tab_index)); + WaitForInterstitial(broken_tab_contents); + portal_observer.WaitForResults(1); + } EXPECT_EQ(SSLBlockingPage::kTypeForTesting, GetInterstitialType(broken_tab_contents));
diff --git a/chrome/browser/captive_portal/captive_portal_tab_reloader.cc b/chrome/browser/captive_portal/captive_portal_tab_reloader.cc index f2b3909..9cc0daebe 100644 --- a/chrome/browser/captive_portal/captive_portal_tab_reloader.cc +++ b/chrome/browser/captive_portal/captive_portal_tab_reloader.cc
@@ -38,7 +38,7 @@ if (error == net::ERR_SSL_PROTOCOL_ERROR) return true; - return false; + return net::IsCertificateError(error); } } // namespace
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index 900b10fa..eb4c973 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -628,6 +628,8 @@ "child_accounts/event_based_status_reporting_service.h", "child_accounts/event_based_status_reporting_service_factory.cc", "child_accounts/event_based_status_reporting_service_factory.h", + "child_accounts/parent_access_code/parent_access_code_authenticator.cc", + "child_accounts/parent_access_code/parent_access_code_authenticator.h", "child_accounts/screen_time_controller.cc", "child_accounts/screen_time_controller.h", "child_accounts/screen_time_controller_factory.cc", @@ -2196,6 +2198,7 @@ "base/file_flusher_unittest.cc", "certificate_provider/certificate_provider_service_unittest.cc", "child_accounts/event_based_status_reporting_service_unittest.cc", + "child_accounts/parent_access_code/parent_access_code_authenticator_unittest.cc", "child_accounts/time_limit_notifier_unittest.cc", "child_accounts/time_limit_test_utils.cc", "child_accounts/usage_time_limit_processor_unittest.cc",
diff --git a/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.cc b/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.cc index 4fca4442..0ec68edb 100644 --- a/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.cc +++ b/chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.cc
@@ -257,12 +257,11 @@ arc::mojom::AccessibilityFilterType filter_type = GetFilterTypeForProfile(profile_); - if (filter_type == arc::mojom::AccessibilityFilterType::OFF) - return; + DCHECK( + filter_type != + arc::mojom::AccessibilityFilterType::WHITELISTED_PACKAGE_NAME_DEPRECATED); - if (filter_type == arc::mojom::AccessibilityFilterType::ALL || - filter_type == - arc::mojom::AccessibilityFilterType::WHITELISTED_PACKAGE_NAME) { + if (filter_type == arc::mojom::AccessibilityFilterType::ALL) { if (event_data->node_data.empty()) return; @@ -628,9 +627,7 @@ instance->SetFilter(filter_type); bool add_activation_observer = - filter_type == arc::mojom::AccessibilityFilterType::ALL || - filter_type == - arc::mojom::AccessibilityFilterType::WHITELISTED_PACKAGE_NAME; + filter_type == arc::mojom::AccessibilityFilterType::ALL; if (add_activation_observer == activation_observer_added_) return;
diff --git a/chrome/browser/chromeos/arc/arc_util.cc b/chrome/browser/chromeos/arc/arc_util.cc index 0b9eee37..536ab84 100644 --- a/chrome/browser/chromeos/arc/arc_util.cc +++ b/chrome/browser/chromeos/arc/arc_util.cc
@@ -610,10 +610,13 @@ const PrefService* prefs = profile->GetPrefs(); std::string pref_locale = prefs->GetString(language::prefs::kApplicationLocale); - + // Also accept runtime locale which maybe an approximation of user's pref + // locale. + const std::string kRuntimeLocale = icu::Locale::getDefault().getName(); if (!pref_locale.empty()) { base::ReplaceChars(pref_locale, "-", "_", &pref_locale); - bool disallowed = !base::ContainsValue(kAllowedLocales, pref_locale); + bool disallowed = !base::ContainsValue(kAllowedLocales, pref_locale) && + !base::ContainsValue(kAllowedLocales, kRuntimeLocale); if (disallowed) return ash::mojom::AssistantAllowedState::DISALLOWED_BY_LOCALE;
diff --git a/chrome/browser/chromeos/arc/arc_util_unittest.cc b/chrome/browser/chromeos/arc/arc_util_unittest.cc index dc982ed..426c5ad7 100644 --- a/chrome/browser/chromeos/arc/arc_util_unittest.cc +++ b/chrome/browser/chromeos/arc/arc_util_unittest.cc
@@ -12,6 +12,7 @@ #include "base/test/icu_test_util.h" #include "base/test/scoped_command_line.h" #include "base/test/scoped_feature_list.h" +#include "base/test/scoped_locale.h" #include "base/values.h" #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/chromeos/arc/arc_session_manager.h" @@ -49,6 +50,7 @@ #include "content/public/common/content_switches.h" #include "content/public/test/test_browser_thread_bundle.h" #include "testing/gtest/include/gtest/gtest.h" +#include "third_party/icu/source/common/unicode/locid.h" namespace arc { namespace util { @@ -532,12 +534,16 @@ TEST_F(ChromeArcUtilTest, IsAssistantAllowedForProfile_Locale) { profile()->GetTestingPrefService()->SetString( language::prefs::kApplicationLocale, "he"); + UErrorCode error_code = U_ZERO_ERROR; + const icu::Locale& old_locale = icu::Locale::getDefault(); + icu::Locale::setDefault(icu::Locale("he"), error_code); ScopedLogIn login(GetFakeUserManager(), AccountId::FromUserEmailGaiaId( profile()->GetProfileUserName(), kTestGaiaId)); EXPECT_EQ(ash::mojom::AssistantAllowedState::DISALLOWED_BY_LOCALE, IsAssistantAllowedForProfile(profile())); + icu::Locale::setDefault(old_locale, error_code); } TEST_F(ChromeArcUtilTest, IsAssistantAllowedForProfile_DemoMode) {
diff --git a/chrome/browser/chromeos/child_accounts/event_based_status_reporting_service.cc b/chrome/browser/chromeos/child_accounts/event_based_status_reporting_service.cc index 7e5a2a3..839993600 100644 --- a/chrome/browser/chromeos/child_accounts/event_based_status_reporting_service.cc +++ b/chrome/browser/chromeos/child_accounts/event_based_status_reporting_service.cc
@@ -5,6 +5,7 @@ #include "chrome/browser/chromeos/child_accounts/event_based_status_reporting_service.h" #include "base/logging.h" +#include "base/metrics/histogram_macros.h" #include "chrome/browser/chromeos/child_accounts/consumer_status_reporting_service.h" #include "chrome/browser/chromeos/child_accounts/consumer_status_reporting_service_factory.h" #include "chrome/browser/profiles/profile.h" @@ -13,6 +14,33 @@ namespace chromeos { +namespace { + +const std::string StatusReportEventToString( + EventBasedStatusReportingService::StatusReportEvent event) { + switch (event) { + case EventBasedStatusReportingService::StatusReportEvent::kAppInstalled: + return "Request status report due to an app install."; + case EventBasedStatusReportingService::StatusReportEvent::kAppUpdated: + return "Request status report due to an app update."; + case EventBasedStatusReportingService::StatusReportEvent::kSessionActive: + return "Request status report due to a unlock screen."; + case EventBasedStatusReportingService::StatusReportEvent::kSessionLocked: + return "Request status report due to a lock screen."; + case EventBasedStatusReportingService::StatusReportEvent::kDeviceOnline: + return "Request status report due to device going online."; + case EventBasedStatusReportingService::StatusReportEvent::kSuspendDone: + return "Request status report after a suspend has been completed."; + default: + NOTREACHED(); + } +} + +} // namespace + +// static +constexpr char EventBasedStatusReportingService::kUMAStatusReportEvent[]; + EventBasedStatusReportingService::EventBasedStatusReportingService( content::BrowserContext* context) : context_(context) { @@ -29,12 +57,12 @@ void EventBasedStatusReportingService::OnPackageInstalled( const arc::mojom::ArcPackageInfo& package_info) { - RequestStatusReport("Request status report due to an app install."); + RequestStatusReport(StatusReportEvent::kAppInstalled); } void EventBasedStatusReportingService::OnPackageModified( const arc::mojom::ArcPackageInfo& package_info) { - RequestStatusReport("Request status report due to an app update."); + RequestStatusReport(StatusReportEvent::kAppUpdated); } void EventBasedStatusReportingService::OnSessionStateChanged() { @@ -51,29 +79,34 @@ } if (session_state == session_manager::SessionState::ACTIVE) { - RequestStatusReport("Request status report due to a unlock screen."); + RequestStatusReport(StatusReportEvent::kSessionActive); } else if (session_state == session_manager::SessionState::LOCKED) { - RequestStatusReport("Request status report due to a lock screen."); + RequestStatusReport(StatusReportEvent::kSessionLocked); } } void EventBasedStatusReportingService::OnNetworkChanged( net::NetworkChangeNotifier::ConnectionType type) { if (type != net::NetworkChangeNotifier::CONNECTION_NONE) - RequestStatusReport("Request status report due to device going online."); + RequestStatusReport(StatusReportEvent::kDeviceOnline); } void EventBasedStatusReportingService::SuspendDone( const base::TimeDelta& duration) { - RequestStatusReport( - "Request status report after a suspend has been completed."); + RequestStatusReport(StatusReportEvent::kSuspendDone); } void EventBasedStatusReportingService::RequestStatusReport( - const std::string& reason) { - VLOG(1) << reason; + StatusReportEvent event) { + VLOG(1) << StatusReportEventToString(event); ConsumerStatusReportingServiceFactory::GetForBrowserContext(context_) ->RequestImmediateStatusReport(); + LogStatusReportEventUMA(event); +} + +void EventBasedStatusReportingService::LogStatusReportEventUMA( + StatusReportEvent event) { + UMA_HISTOGRAM_ENUMERATION(kUMAStatusReportEvent, event); } void EventBasedStatusReportingService::Shutdown() {
diff --git a/chrome/browser/chromeos/child_accounts/event_based_status_reporting_service.h b/chrome/browser/chromeos/child_accounts/event_based_status_reporting_service.h index 0eaa174..291c81d 100644 --- a/chrome/browser/chromeos/child_accounts/event_based_status_reporting_service.h +++ b/chrome/browser/chromeos/child_accounts/event_based_status_reporting_service.h
@@ -36,6 +36,22 @@ public net::NetworkChangeNotifier::NetworkChangeObserver, public PowerManagerClient::Observer { public: + // These values are persisted to logs. Entries should not be renumbered and + // numeric values should never be reused. + enum class StatusReportEvent { + kAppInstalled = 0, + kAppUpdated = 1, + kSessionActive = 2, + kSessionLocked = 3, + kDeviceOnline = 4, + kSuspendDone = 5, + kMaxValue = kSuspendDone, + }; + + // Histogram to log events that triggered status report. + static constexpr char kUMAStatusReportEvent[] = + "Supervision.StatusReport.Event"; + explicit EventBasedStatusReportingService(content::BrowserContext* context); ~EventBasedStatusReportingService() override; @@ -56,7 +72,9 @@ void SuspendDone(const base::TimeDelta& duration) override; private: - void RequestStatusReport(const std::string& reason); + void RequestStatusReport(StatusReportEvent event); + + void LogStatusReportEventUMA(StatusReportEvent event); // KeyedService: void Shutdown() override;
diff --git a/chrome/browser/chromeos/child_accounts/event_based_status_reporting_service_unittest.cc b/chrome/browser/chromeos/child_accounts/event_based_status_reporting_service_unittest.cc index fe11c98..68a52cc 100644 --- a/chrome/browser/chromeos/child_accounts/event_based_status_reporting_service_unittest.cc +++ b/chrome/browser/chromeos/child_accounts/event_based_status_reporting_service_unittest.cc
@@ -8,6 +8,7 @@ #include "base/bind.h" #include "base/macros.h" +#include "base/test/metrics/histogram_tester.h" #include "chrome/browser/chromeos/child_accounts/consumer_status_reporting_service.h" #include "chrome/browser/chromeos/child_accounts/consumer_status_reporting_service_factory.h" #include "chrome/browser/chromeos/profiles/profile_helper.h" @@ -117,6 +118,8 @@ ->GetAccountId(); } + base::HistogramTester histogram_tester_; + private: content::TestBrowserThreadBundle thread_bundle_; ArcAppTest arc_test_; @@ -137,6 +140,12 @@ app_host()->OnPackageAdded(arc::mojom::ArcPackageInfo::New()); EXPECT_EQ( 1, test_consumer_status_reporting_service()->performed_status_reports()); + + histogram_tester_.ExpectBucketCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, + EventBasedStatusReportingService::StatusReportEvent::kAppInstalled, 1); + histogram_tester_.ExpectTotalCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, 1); } TEST_F(EventBasedStatusReportingServiceTest, ReportWhenAppUpdate) { @@ -147,6 +156,12 @@ app_host()->OnPackageModified(arc::mojom::ArcPackageInfo::New()); EXPECT_EQ( 1, test_consumer_status_reporting_service()->performed_status_reports()); + + histogram_tester_.ExpectBucketCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, + EventBasedStatusReportingService::StatusReportEvent::kAppUpdated, 1); + histogram_tester_.ExpectTotalCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, 1); } TEST_F(EventBasedStatusReportingServiceTest, DoNotReportWhenUserJustSignIn) { @@ -157,6 +172,9 @@ session_manager()->SetSessionState(session_manager::SessionState::ACTIVE); EXPECT_EQ( 0, test_consumer_status_reporting_service()->performed_status_reports()); + + histogram_tester_.ExpectTotalCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, 0); } TEST_F(EventBasedStatusReportingServiceTest, ReportWhenSessionIsLocked) { @@ -170,6 +188,12 @@ session_manager()->SetSessionState(session_manager::SessionState::LOCKED); EXPECT_EQ( 1, test_consumer_status_reporting_service()->performed_status_reports()); + + histogram_tester_.ExpectBucketCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, + EventBasedStatusReportingService::StatusReportEvent::kSessionLocked, 1); + histogram_tester_.ExpectTotalCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, 1); } TEST_F(EventBasedStatusReportingServiceTest, ReportWhenSessionIsActive) { @@ -186,6 +210,15 @@ session_manager()->SetSessionState(session_manager::SessionState::ACTIVE); EXPECT_EQ( 2, test_consumer_status_reporting_service()->performed_status_reports()); + + histogram_tester_.ExpectBucketCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, + EventBasedStatusReportingService::StatusReportEvent::kSessionActive, 1); + histogram_tester_.ExpectBucketCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, + EventBasedStatusReportingService::StatusReportEvent::kSessionLocked, 1); + histogram_tester_.ExpectTotalCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, 2); } TEST_F(EventBasedStatusReportingServiceTest, ReportWhenDeviceGoesOnline) { @@ -199,6 +232,12 @@ net::NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET); EXPECT_EQ( 1, test_consumer_status_reporting_service()->performed_status_reports()); + + histogram_tester_.ExpectBucketCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, + EventBasedStatusReportingService::StatusReportEvent::kDeviceOnline, 1); + histogram_tester_.ExpectTotalCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, 1); } TEST_F(EventBasedStatusReportingServiceTest, ReportWhenSuspendIsDone) { @@ -209,6 +248,12 @@ power_manager_client()->SendSuspendDone(); EXPECT_EQ( 1, test_consumer_status_reporting_service()->performed_status_reports()); + + histogram_tester_.ExpectBucketCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, + EventBasedStatusReportingService::StatusReportEvent::kSuspendDone, 1); + histogram_tester_.ExpectTotalCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, 1); } TEST_F(EventBasedStatusReportingServiceTest, ReportForMultipleEvents) { @@ -240,6 +285,27 @@ power_manager_client()->SendSuspendDone(); EXPECT_EQ( 6, test_consumer_status_reporting_service()->performed_status_reports()); + + histogram_tester_.ExpectBucketCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, + EventBasedStatusReportingService::StatusReportEvent::kSessionLocked, 1); + histogram_tester_.ExpectBucketCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, + EventBasedStatusReportingService::StatusReportEvent::kSessionActive, 1); + histogram_tester_.ExpectBucketCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, + EventBasedStatusReportingService::StatusReportEvent::kDeviceOnline, 1); + histogram_tester_.ExpectBucketCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, + EventBasedStatusReportingService::StatusReportEvent::kAppInstalled, 1); + histogram_tester_.ExpectBucketCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, + EventBasedStatusReportingService::StatusReportEvent::kAppUpdated, 1); + histogram_tester_.ExpectBucketCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, + EventBasedStatusReportingService::StatusReportEvent::kSuspendDone, 1); + histogram_tester_.ExpectTotalCount( + EventBasedStatusReportingService::kUMAStatusReportEvent, 6); } } // namespace chromeos
diff --git a/chrome/browser/chromeos/child_accounts/parent_access_code/parent_access_code_authenticator.cc b/chrome/browser/chromeos/child_accounts/parent_access_code/parent_access_code_authenticator.cc new file mode 100644 index 0000000..1c7a85b --- /dev/null +++ b/chrome/browser/chromeos/child_accounts/parent_access_code/parent_access_code_authenticator.cc
@@ -0,0 +1,141 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chromeos/child_accounts/parent_access_code/parent_access_code_authenticator.h" + +#include <vector> + +#include "base/big_endian.h" +#include "base/logging.h" +#include "base/strings/stringprintf.h" + +namespace chromeos { + +ParentAccessCodeConfig::ParentAccessCodeConfig( + const std::string& shared_secret, + base::TimeDelta code_validity, + base::TimeDelta clock_drift_tolerance) + : shared_secret_(shared_secret), + code_validity_(code_validity), + clock_drift_tolerance_(clock_drift_tolerance) { + DCHECK(!shared_secret_.empty()); + DCHECK(code_validity_ >= base::TimeDelta::FromSeconds(60)); + DCHECK(code_validity_ <= base::TimeDelta::FromMinutes(60)); + DCHECK(clock_drift_tolerance_ <= base::TimeDelta::FromMinutes(30)); +} + +ParentAccessCodeConfig::ParentAccessCodeConfig( + const ParentAccessCodeConfig& rhs) = default; + +ParentAccessCodeConfig& ParentAccessCodeConfig::operator=( + const ParentAccessCodeConfig& rhs) = default; + +ParentAccessCodeConfig::~ParentAccessCodeConfig() = default; + +ParentAccessCode::ParentAccessCode(const std::string& code, + base::Time valid_from, + base::Time valid_to) + : code_(code), valid_from_(valid_from), valid_to_(valid_to) { + DCHECK_EQ(6u, code_.length()); + DCHECK_GT(valid_to_, valid_from_); +} + +ParentAccessCode::ParentAccessCode(const ParentAccessCode&) = default; + +ParentAccessCode& ParentAccessCode::operator=(const ParentAccessCode&) = + default; + +ParentAccessCode::~ParentAccessCode() = default; + +bool ParentAccessCode::operator==(const ParentAccessCode& rhs) const { + return code_ == rhs.code() && valid_from_ == rhs.valid_from() && + valid_to_ == rhs.valid_to(); +} + +bool ParentAccessCode::operator!=(const ParentAccessCode& rhs) const { + return code_ != rhs.code() || valid_from_ != rhs.valid_from() || + valid_to_ != rhs.valid_to(); +} + +std::ostream& operator<<(std::ostream& out, const ParentAccessCode& code) { + return out << code.code() << " [" << code.valid_from() << " - " + << code.valid_to() << "]"; +} + +// static +constexpr base::TimeDelta ParentAccessCodeAuthenticator::kCodeGranularity; + +ParentAccessCodeAuthenticator::ParentAccessCodeAuthenticator( + const ParentAccessCodeConfig& config) + : config_(config) { + bool result = hmac_.Init(config_.shared_secret()); + DCHECK(result); +} + +ParentAccessCodeAuthenticator::~ParentAccessCodeAuthenticator() = default; + +base::Optional<ParentAccessCode> ParentAccessCodeAuthenticator::Generate( + base::Time timestamp) { + // We find the beginning of the interval for the given timestamp and adjust by + // the granularity. + const int64_t interval = + timestamp.ToJavaTime() / config_.code_validity().InMilliseconds(); + const int64_t interval_beginning_timestamp = + interval * config_.code_validity().InMilliseconds(); + const int64_t adjusted_timestamp = + interval_beginning_timestamp / kCodeGranularity.InMilliseconds(); + + // The algorithm for PAC generation is using data in Big-endian byte order to + // feed HMAC. + std::string big_endian_timestamp(sizeof(adjusted_timestamp), 0); + base::WriteBigEndian(&big_endian_timestamp[0], adjusted_timestamp); + + std::vector<uint8_t> digest(hmac_.DigestLength()); + if (!hmac_.Sign(big_endian_timestamp, &digest[0], digest.size())) { + LOG(ERROR) << "Signing HMAC data to generate Parent Access Code failed"; + return base::nullopt; + } + + // Read 4 bytes in Big-endian order starting from |offset|. + const int8_t offset = digest.back() & 0xf; + int32_t result; + std::vector<uint8_t> slice(digest.begin() + offset, + digest.begin() + offset + sizeof(result)); + base::ReadBigEndian(reinterpret_cast<char*>(slice.data()), &result); + // Clear sign bit. + result &= 0x7fffffff; + + const base::Time valid_from = + base::Time::FromJavaTime(interval_beginning_timestamp); + return ParentAccessCode(base::StringPrintf("%06d", result % 1000000), + valid_from, valid_from + config_.code_validity()); +} + +base::Optional<ParentAccessCode> ParentAccessCodeAuthenticator::Validate( + const std::string& code, + base::Time timestamp) { + return ValidateInRange(code, timestamp - config_.clock_drift_tolerance(), + timestamp + config_.clock_drift_tolerance()); +} + +base::Optional<ParentAccessCode> ParentAccessCodeAuthenticator::ValidateInRange( + const std::string& code, + base::Time valid_from, + base::Time valid_to) { + DCHECK_GE(valid_to, valid_from); + const int64_t start_interval = + valid_from.ToJavaTime() / kCodeGranularity.InMilliseconds(); + const int64_t end_interval = + valid_to.ToJavaTime() / kCodeGranularity.InMilliseconds(); + for (int i = start_interval; i <= end_interval; ++i) { + const base::Time generation_timestamp = + base::Time::FromJavaTime(i * kCodeGranularity.InMilliseconds()); + base::Optional<ParentAccessCode> pac = Generate(generation_timestamp); + if (pac.has_value() && pac->code() == code) + return pac; + } + return base::nullopt; +} + +} // namespace chromeos
diff --git a/chrome/browser/chromeos/child_accounts/parent_access_code/parent_access_code_authenticator.h b/chrome/browser/chromeos/child_accounts/parent_access_code/parent_access_code_authenticator.h new file mode 100644 index 0000000..bd1aaac --- /dev/null +++ b/chrome/browser/chromeos/child_accounts/parent_access_code/parent_access_code_authenticator.h
@@ -0,0 +1,127 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_CHROMEOS_CHILD_ACCOUNTS_PARENT_ACCESS_CODE_PARENT_ACCESS_CODE_AUTHENTICATOR_H_ +#define CHROME_BROWSER_CHROMEOS_CHILD_ACCOUNTS_PARENT_ACCESS_CODE_PARENT_ACCESS_CODE_AUTHENTICATOR_H_ + +#include <memory> +#include <ostream> +#include <string> + +#include "base/macros.h" +#include "base/optional.h" +#include "base/time/time.h" +#include "crypto/hmac.h" + +namespace chromeos { + +// Configuration used to generate and verify Parent Access Code. +class ParentAccessCodeConfig { + public: + // To create valid ParentAccessCodeConfig: + // * |shared_secret| cannot be empty + // * |code_validity| needs to be in between 30s and 3600s + // * |clock_drift_tolerance| needs to be between 0 and 1800s + // The above restrictions are applied to ParentAccessCodeConfig policy that is + // the main source of this configuration. + ParentAccessCodeConfig(const std::string& shared_secret, + base::TimeDelta code_validity, + base::TimeDelta clock_drift_tolerance); + ParentAccessCodeConfig(const ParentAccessCodeConfig& rhs); + ParentAccessCodeConfig& operator=(const ParentAccessCodeConfig&); + ~ParentAccessCodeConfig(); + + // Secret shared between child and parent devices. + const std::string& shared_secret() const { return shared_secret_; } + + // Time that access code is valid for. + base::TimeDelta code_validity() const { return code_validity_; } + + // The allowed difference between the clock on child and parent devices. + base::TimeDelta clock_drift_tolerance() const { + return clock_drift_tolerance_; + } + + private: + std::string shared_secret_; + base::TimeDelta code_validity_; + base::TimeDelta clock_drift_tolerance_; +}; + +// Parent Access Code that can be used to authorize various actions on child +// user's device. +// Typical lifetime of the code is 10 minutes and clock difference between +// generating and validating device is half of the code lifetime. Clock +// difference is accounted for during code validation. +class ParentAccessCode { + public: + // To create valid ParentAccessCode: + // * |code| needs to be 6 characters long + // * |valid_to| needs to be greater than |valid_from| + ParentAccessCode(const std::string& code, + base::Time valid_from, + base::Time valid_to); + ParentAccessCode(const ParentAccessCode&); + ParentAccessCode& operator=(const ParentAccessCode&); + ~ParentAccessCode(); + + // Parent access code. + const std::string& code() const { return code_; } + + // Code validity start time. + base::Time valid_from() const { return valid_from_; } + + // Code expiration time. + base::Time valid_to() const { return valid_to_; } + + bool operator==(const ParentAccessCode&) const; + bool operator!=(const ParentAccessCode&) const; + friend std::ostream& operator<<(std::ostream&, const ParentAccessCode&); + + private: + std::string code_; + base::Time valid_from_; + base::Time valid_to_; +}; + +// Generates and validates ParentAccessCodes. +class ParentAccessCodeAuthenticator { + public: + // Granularity of which generation and verification are carried out. Should + // not exceed code validity period. + static constexpr base::TimeDelta kCodeGranularity = + base::TimeDelta::FromMinutes(1); + + explicit ParentAccessCodeAuthenticator(const ParentAccessCodeConfig& config); + ~ParentAccessCodeAuthenticator(); + + // Generates Parent Access Code from the given |timestamp|. Returns the code + // if generation was successful. + base::Optional<ParentAccessCode> Generate(base::Time timestamp); + + // Returns ParentAccessCode structure with validity information, if |code| is + // valid for the given timestamp. + base::Optional<ParentAccessCode> Validate(const std::string& code, + base::Time timestamp); + + private: + // Returns ParentAccessCode structure with validity information, if |code| is + // valid for the range [|valid_from|, |valid_to|). |valid_to| needs to be + // greater or equal to |valid_from|. + base::Optional<ParentAccessCode> ValidateInRange(const std::string& code, + base::Time valid_from, + base::Time valid_to); + + // Configuration used to generate and validate parent access code. + const ParentAccessCodeConfig config_; + + // Keyed-hash message authentication generator. + crypto::HMAC hmac_{crypto::HMAC::SHA1}; + + DISALLOW_COPY_AND_ASSIGN(ParentAccessCodeAuthenticator); +}; + +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_CHILD_ACCOUNTS_PARENT_ACCESS_CODE_PARENT_ACCESS_CODE_AUTHENTICATOR_H_
diff --git a/chrome/browser/chromeos/child_accounts/parent_access_code/parent_access_code_authenticator_unittest.cc b/chrome/browser/chromeos/child_accounts/parent_access_code/parent_access_code_authenticator_unittest.cc new file mode 100644 index 0000000..1b8625f --- /dev/null +++ b/chrome/browser/chromeos/child_accounts/parent_access_code/parent_access_code_authenticator_unittest.cc
@@ -0,0 +1,373 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chromeos/child_accounts/parent_access_code/parent_access_code_authenticator.h" + +#include <map> +#include <string> + +#include "base/macros.h" +#include "base/optional.h" +#include "base/time/time.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace chromeos { + +namespace { + +constexpr char kTestSharedSecret[] = "AIfVJHITSar8keeq3779V70dWiS1xbPv8g"; +constexpr base::TimeDelta kDefaultValidity = base::TimeDelta::FromMinutes(10); +constexpr base::TimeDelta kDefaultClockDrift = base::TimeDelta::FromMinutes(5); + +// Configuration that is currently used for PAC. +ParentAccessCodeConfig DefaultConfig() { + return ParentAccessCodeConfig(kTestSharedSecret, kDefaultValidity, + kDefaultClockDrift); +} + +// Populates |test_values| with test Parent Access Code data (timestamp - code +// value pairs) generated in Family Link Android app. +void GetTestValues(std::map<base::Time, std::string>* test_values) { + base::Time timestamp; + ASSERT_TRUE(base::Time::FromString("8 Jan 2019 16:58:07 PST", ×tamp)); + (*test_values)[timestamp] = "734261"; + ASSERT_TRUE(base::Time::FromString("14 Jan 2019 15:35:05 PST", ×tamp)); + (*test_values)[timestamp] = "472150"; + ASSERT_TRUE(base::Time::FromString("14 Jan 2019 15:42:49 PST", ×tamp)); + (*test_values)[timestamp] = "204984"; + ASSERT_TRUE(base::Time::FromString("14 Jan 2019 15:53:01 PST", ×tamp)); + (*test_values)[timestamp] = "157758"; + ASSERT_TRUE(base::Time::FromString("14 Jan 2019 16:00:00 PST", ×tamp)); + (*test_values)[timestamp] = "524186"; +} + +} // namespace + +class ParentAccessCodeAuthenticatorTest : public testing::Test { + protected: + ParentAccessCodeAuthenticatorTest() = default; + ~ParentAccessCodeAuthenticatorTest() override = default; + + // Verifies that |code| is valid for the given |timestamp|. + void Verify(base::Optional<ParentAccessCode> code, base::Time timestamp) { + ASSERT_TRUE(code.has_value()); + EXPECT_GE(timestamp, code->valid_from()); + EXPECT_LE(timestamp, code->valid_to()); + } + + private: + DISALLOW_COPY_AND_ASSIGN(ParentAccessCodeAuthenticatorTest); +}; + +TEST_F(ParentAccessCodeAuthenticatorTest, GenerateHardcodedCodeValues) { + // Test generation against Parent Access Code values generated in Family + // Link Android app. + std::map<base::Time, std::string> test_values; + ASSERT_NO_FATAL_FAILURE(GetTestValues(&test_values)); + + ParentAccessCodeAuthenticator gen(DefaultConfig()); + for (const auto& it : test_values) { + base::Optional<ParentAccessCode> code = gen.Generate(it.first); + ASSERT_NO_FATAL_FAILURE(Verify(code, it.first)); + EXPECT_EQ(it.second, code->code()); + } +} + +TEST_F(ParentAccessCodeAuthenticatorTest, GenerateInTheSameTimeBucket) { + // Test that the same code is generated for whole time bucket defined by code + // validity period. + base::Time timestamp; + ASSERT_TRUE(base::Time::FromString("14 Jan 2019 15:00:00 PST", ×tamp)); + const ParentAccessCodeConfig config = DefaultConfig(); + + ParentAccessCodeAuthenticator gen(config); + base::Optional<ParentAccessCode> first_code = gen.Generate(timestamp); + ASSERT_NO_FATAL_FAILURE(Verify(first_code, timestamp)); + + int range = (config.code_validity() / + ParentAccessCodeAuthenticator::kCodeGranularity) - + 1; + for (int i = 0; i < range; ++i) { + timestamp += ParentAccessCodeAuthenticator::kCodeGranularity; + base::Optional<ParentAccessCode> code = gen.Generate(timestamp); + ASSERT_NO_FATAL_FAILURE(Verify(code, timestamp)); + EXPECT_EQ(*first_code, *code); + } +} + +TEST_F(ParentAccessCodeAuthenticatorTest, GenerateInDifferentTimeBuckets) { + // Test that the different codes are generated for different time buckets + // defined by code validity period. + base::Time initial_timestamp; + ASSERT_TRUE( + base::Time::FromString("14 Jan 2019 15:00:00 PST", &initial_timestamp)); + + ParentAccessCodeAuthenticator gen(DefaultConfig()); + base::Optional<ParentAccessCode> first_code = gen.Generate(initial_timestamp); + ASSERT_NO_FATAL_FAILURE(Verify(first_code, initial_timestamp)); + + for (int i = 1; i < 10; ++i) { + // "Earlier" time bucket. + { + const base::Time timestamp = initial_timestamp - i * kDefaultValidity; + base::Optional<ParentAccessCode> code = gen.Generate(timestamp); + ASSERT_NO_FATAL_FAILURE(Verify(code, timestamp)); + EXPECT_NE(*first_code, *code); + } + // "Later" time bucket. + { + const base::Time timestamp = initial_timestamp + i * kDefaultValidity; + base::Optional<ParentAccessCode> code = gen.Generate(timestamp); + ASSERT_NO_FATAL_FAILURE(Verify(code, timestamp)); + EXPECT_NE(*first_code, *code); + } + } +} + +TEST_F(ParentAccessCodeAuthenticatorTest, GenerateWithSameTimestamp) { + // Test that codes generated with the same timestamp and config are the same. + const ParentAccessCodeConfig config = DefaultConfig(); + const base::Time timestamp = base::Time::Now(); + + ParentAccessCodeAuthenticator gen1(config); + base::Optional<ParentAccessCode> code1 = gen1.Generate(timestamp); + ASSERT_NO_FATAL_FAILURE(Verify(code1, timestamp)); + + ParentAccessCodeAuthenticator gen2(config); + base::Optional<ParentAccessCode> code2 = gen2.Generate(timestamp); + ASSERT_NO_FATAL_FAILURE(Verify(code2, timestamp)); + + EXPECT_EQ(*code1, *code2); +} + +TEST_F(ParentAccessCodeAuthenticatorTest, GenerateWithDifferentSharedSecret) { + // Test that codes generated with the different secrets are not the same. + const base::Time timestamp = base::Time::Now(); + + ParentAccessCodeAuthenticator gen1(ParentAccessCodeConfig( + "AAAAAAAAAAAAAAAAAAA", kDefaultValidity, kDefaultClockDrift)); + base::Optional<ParentAccessCode> code1 = gen1.Generate(timestamp); + ASSERT_NO_FATAL_FAILURE(Verify(code1, timestamp)); + + ParentAccessCodeAuthenticator gen2(ParentAccessCodeConfig( + "AAAAAAAAAAAAAAAAAAB", kDefaultValidity, kDefaultClockDrift)); + base::Optional<ParentAccessCode> code2 = gen2.Generate(timestamp); + ASSERT_NO_FATAL_FAILURE(Verify(code2, timestamp)); + + EXPECT_NE(*code1, *code2); +} + +TEST_F(ParentAccessCodeAuthenticatorTest, GenerateWithDifferentCodeValidity) { + // Test that codes generated with the different validity are not the same. + const base::Time timestamp = base::Time::Now(); + + ParentAccessCodeAuthenticator gen1(ParentAccessCodeConfig( + kTestSharedSecret, base::TimeDelta::FromMinutes(1), kDefaultClockDrift)); + base::Optional<ParentAccessCode> code1 = gen1.Generate(timestamp); + ASSERT_NO_FATAL_FAILURE(Verify(code1, timestamp)); + + ParentAccessCodeAuthenticator gen2(ParentAccessCodeConfig( + kTestSharedSecret, base::TimeDelta::FromMinutes(3), kDefaultClockDrift)); + base::Optional<ParentAccessCode> code2 = gen2.Generate(timestamp); + ASSERT_NO_FATAL_FAILURE(Verify(code2, timestamp)); + + EXPECT_NE(*code1, *code2); +} + +TEST_F(ParentAccessCodeAuthenticatorTest, + GenerateWihtDifferentClockDriftTolerance) { + // Test that clock drift tolerance does not affect code generation. + const base::Time timestamp = base::Time::Now(); + + ParentAccessCodeAuthenticator gen1(ParentAccessCodeConfig( + kTestSharedSecret, kDefaultValidity, base::TimeDelta::FromMinutes(1))); + base::Optional<ParentAccessCode> code1 = gen1.Generate(timestamp); + ASSERT_NO_FATAL_FAILURE(Verify(code1, timestamp)); + + ParentAccessCodeAuthenticator gen2(ParentAccessCodeConfig( + kTestSharedSecret, kDefaultValidity, base::TimeDelta::FromMinutes(10))); + base::Optional<ParentAccessCode> code2 = gen2.Generate(timestamp); + ASSERT_NO_FATAL_FAILURE(Verify(code2, timestamp)); + + EXPECT_EQ(*code1, *code2); +} + +TEST_F(ParentAccessCodeAuthenticatorTest, ValidateHardcodedCodeValues) { + // Test validation against Parent Access Code values generated in Family Link + // Android app. + std::map<base::Time, std::string> test_values; + ASSERT_NO_FATAL_FAILURE(GetTestValues(&test_values)); + + ParentAccessCodeAuthenticator gen(ParentAccessCodeConfig( + kTestSharedSecret, kDefaultValidity, base::TimeDelta::FromMinutes(0))); + for (const auto& it : test_values) { + base::Optional<ParentAccessCode> code = gen.Validate(it.second, it.first); + ASSERT_NO_FATAL_FAILURE(Verify(code, it.first)); + EXPECT_EQ(it.second, code->code()); + } +} + +TEST_F(ParentAccessCodeAuthenticatorTest, + ValidationAndGenerationOnDifferentAuthenticators) { + // Test validation against codes generated by separate + // ParentAccessCodeAuthenticator object in and outside of the valid time + // bucket. + const ParentAccessCodeConfig config(kTestSharedSecret, kDefaultValidity, + base::TimeDelta::FromMinutes(0)); + ParentAccessCodeAuthenticator generator(config); + ParentAccessCodeAuthenticator validator(config); + + base::Time generation_timestamp; + ASSERT_TRUE(base::Time::FromString("15 Jan 2019 00:00:00 PST", + &generation_timestamp)); + + base::Optional<ParentAccessCode> generated_code = + generator.Generate(generation_timestamp); + ASSERT_NO_FATAL_FAILURE(Verify(generated_code, generation_timestamp)); + + // Before valid period. + base::Optional<ParentAccessCode> validated_code = validator.Validate( + generated_code->code(), + generation_timestamp - base::TimeDelta::FromSeconds(1)); + EXPECT_FALSE(validated_code); + + // In valid period. + int range = + config.code_validity() / ParentAccessCodeAuthenticator::kCodeGranularity; + for (int i = 0; i < range; ++i) { + validated_code = validator.Validate( + generated_code->code(), + generation_timestamp + + i * ParentAccessCodeAuthenticator::kCodeGranularity); + ASSERT_TRUE(validated_code); + EXPECT_EQ(*generated_code, *validated_code); + } + + // After valid period. + validated_code = validator.Validate( + generated_code->code(), generation_timestamp + config.code_validity()); + EXPECT_FALSE(validated_code); +} + +TEST_F(ParentAccessCodeAuthenticatorTest, + ValidationAndGenerationOnSameAuthenticator) { + // Test generation and validation on the same ParentAccessCodeAuthenticator + // object in and outside of the valid time bucket. + const ParentAccessCodeConfig config(kTestSharedSecret, kDefaultValidity, + base::TimeDelta::FromMinutes(0)); + ParentAccessCodeAuthenticator authenticator(config); + + base::Time generation_timestamp; + ASSERT_TRUE(base::Time::FromString("15 Jan 2019 00:00:00 PST", + &generation_timestamp)); + + base::Optional<ParentAccessCode> generated_code = + authenticator.Generate(generation_timestamp); + ASSERT_NO_FATAL_FAILURE(Verify(generated_code, generation_timestamp)); + + // Before valid period. + base::Optional<ParentAccessCode> validated_code = authenticator.Validate( + generated_code->code(), + generation_timestamp - base::TimeDelta::FromSeconds(1)); + EXPECT_FALSE(validated_code); + + // In valid period. + int range = + config.code_validity() / ParentAccessCodeAuthenticator::kCodeGranularity; + for (int i = 0; i < range; ++i) { + validated_code = authenticator.Validate( + generated_code->code(), + generation_timestamp + + i * ParentAccessCodeAuthenticator::kCodeGranularity); + ASSERT_TRUE(validated_code); + EXPECT_EQ(*generated_code, *validated_code); + } + + // After valid period. + validated_code = authenticator.Validate( + generated_code->code(), generation_timestamp + config.code_validity()); + EXPECT_FALSE(validated_code); +} + +TEST_F(ParentAccessCodeAuthenticatorTest, ValidationWithClockDriftTolerance) { + // Test validation with clock drift tolerance. + ParentAccessCodeAuthenticator generator(DefaultConfig()); + ParentAccessCodeAuthenticator validator_with_tolerance(DefaultConfig()); + ParentAccessCodeAuthenticator validator_no_tolerance(ParentAccessCodeConfig( + kTestSharedSecret, kDefaultValidity, base::TimeDelta::FromMinutes(0))); + + // By default code will be valid [15:30:00-15:40:00). + // With clock drift tolerance code will be valid [15:25:00-15:45:00). + base::Time generation_timestamp; + ASSERT_TRUE(base::Time::FromString("15 Jan 2019 15:30:00 PST", + &generation_timestamp)); + + base::Optional<ParentAccessCode> generated_code = + generator.Generate(generation_timestamp); + ASSERT_NO_FATAL_FAILURE(Verify(generated_code, generation_timestamp)); + + // Both validators accept the code in valid period. + int range = + kDefaultValidity / ParentAccessCodeAuthenticator::kCodeGranularity; + base::Time timestamp; + base::Optional<ParentAccessCode> validated_code_no_tolerance; + base::Optional<ParentAccessCode> validated_code_with_tolerance; + for (int i = 0; i < range; ++i) { + timestamp = generation_timestamp + + i * ParentAccessCodeAuthenticator::kCodeGranularity; + + validated_code_no_tolerance = + validator_no_tolerance.Validate(generated_code->code(), timestamp); + ASSERT_TRUE(validated_code_no_tolerance); + + validated_code_with_tolerance = + validator_with_tolerance.Validate(generated_code->code(), timestamp); + ASSERT_TRUE(validated_code_with_tolerance); + + EXPECT_EQ(*validated_code_no_tolerance, *validated_code_with_tolerance); + } + + // Validator's device clock late by tolerated drift. + timestamp = generation_timestamp - kDefaultClockDrift / 2; + validated_code_no_tolerance = + validator_no_tolerance.Validate(generated_code->code(), timestamp); + EXPECT_FALSE(validated_code_no_tolerance); + + validated_code_with_tolerance = + validator_with_tolerance.Validate(generated_code->code(), timestamp); + EXPECT_TRUE(validated_code_with_tolerance); + + // Validator's device clock late outside of tolerated drift. + timestamp = generation_timestamp - kDefaultClockDrift - + base::TimeDelta::FromSeconds(1); + validated_code_no_tolerance = + validator_no_tolerance.Validate(generated_code->code(), timestamp); + EXPECT_FALSE(validated_code_no_tolerance); + + validated_code_with_tolerance = + validator_with_tolerance.Validate(generated_code->code(), timestamp); + EXPECT_FALSE(validated_code_with_tolerance); + + // Validator's device clock ahead by tolerated drift. + timestamp = generation_timestamp + kDefaultValidity + kDefaultClockDrift / 2; + validated_code_no_tolerance = + validator_no_tolerance.Validate(generated_code->code(), timestamp); + EXPECT_FALSE(validated_code_no_tolerance); + + validated_code_with_tolerance = + validator_with_tolerance.Validate(generated_code->code(), timestamp); + EXPECT_TRUE(validated_code_with_tolerance); + + // Validator's device clock ahead outside of tolerated drift. + timestamp = generation_timestamp + kDefaultValidity + kDefaultClockDrift; + validated_code_no_tolerance = + validator_no_tolerance.Validate(generated_code->code(), timestamp); + EXPECT_FALSE(validated_code_no_tolerance); + + validated_code_with_tolerance = + validator_with_tolerance.Validate(generated_code->code(), timestamp); + EXPECT_FALSE(validated_code_with_tolerance); +} + +} // namespace chromeos
diff --git a/chrome/browser/chromeos/customization/customization_document_browsertest.cc b/chrome/browser/chromeos/customization/customization_document_browsertest.cc index 8513557..f115bae8 100644 --- a/chrome/browser/chromeos/customization/customization_document_browsertest.cc +++ b/chrome/browser/chromeos/customization/customization_document_browsertest.cc
@@ -254,8 +254,8 @@ } } -INSTANTIATE_TEST_CASE_P(StringSequence, - CustomizationVPDTest, - testing::ValuesIn(kVPDInitialLocales)); +INSTANTIATE_TEST_SUITE_P(StringSequence, + CustomizationVPDTest, + testing::ValuesIn(kVPDInitialLocales)); } // namespace chromeos
diff --git a/chrome/browser/chromeos/fileapi/external_file_url_loader_factory.cc b/chrome/browser/chromeos/fileapi/external_file_url_loader_factory.cc index a4beac2..def4285 100644 --- a/chrome/browser/chromeos/fileapi/external_file_url_loader_factory.cc +++ b/chrome/browser/chromeos/fileapi/external_file_url_loader_factory.cc
@@ -112,7 +112,11 @@ // be called when the read is complete. if (read_size == net::ERR_IO_PENDING) return; - OnWroteData(read_size); + net::Error write_error = FinishWrite(read_size); + if (write_error != net::OK) { + CompleteWithResult(write_error); + return; + } } CompleteWithResult(net::OK); } @@ -120,23 +124,24 @@ int64_t total_bytes_written() { return total_bytes_written_; } private: - void OnWroteData(int read_size) { + net::Error FinishWrite(int read_size) { MojoResult result = producer_handle_->EndWriteData(std::max<int>(0, read_size)); - if (read_size <= 0) { - CompleteWithResult(static_cast<net::Error>(read_size)); - return; - } - if (result != MOJO_RESULT_OK) { - CompleteWithResult(MojoResultToErrorCode(result)); - return; - } + if (read_size <= 0) + return static_cast<net::Error>(read_size); + if (result != MOJO_RESULT_OK) + return MojoResultToErrorCode(result); remaining_bytes_ -= read_size; total_bytes_written_ += read_size; + return net::OK; } void OnPendingReadComplete(int read_result) { - OnWroteData(read_result); + net::Error result = FinishWrite(read_result); + if (result != net::OK) { + CompleteWithResult(result); + return; + } Write(); }
diff --git a/chrome/browser/chromeos/first_run/goodies_displayer_browsertest.cc b/chrome/browser/chromeos/first_run/goodies_displayer_browsertest.cc index 123a12ba..9cfed79 100644 --- a/chrome/browser/chromeos/first_run/goodies_displayer_browsertest.cc +++ b/chrome/browser/chromeos/first_run/goodies_displayer_browsertest.cc
@@ -151,9 +151,9 @@ ExpectTabCounts(browser2, 1, 0); } -INSTANTIATE_TEST_CASE_P(/* no prefix */, - GoodiesDisplayerBrowserTest, - testing::Values(true, false)); +INSTANTIATE_TEST_SUITE_P(/* no prefix */, + GoodiesDisplayerBrowserTest, + testing::Values(true, false)); } // namespace chromeos
diff --git a/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc b/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc index 25dbcd1a..25f4068 100644 --- a/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc +++ b/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc
@@ -271,8 +271,8 @@ TestImpl(GetParam()); } -INSTANTIATE_TEST_CASE_P(CaptivePortalAuthenticationIgnoresProxy, - NetworkPortalDetectorImplBrowserTestIgnoreProxy, - testing::Bool()); +INSTANTIATE_TEST_SUITE_P(CaptivePortalAuthenticationIgnoresProxy, + NetworkPortalDetectorImplBrowserTestIgnoreProxy, + testing::Bool()); } // namespace chromeos
diff --git a/chrome/browser/chromeos/policy/auto_enrollment_client_impl_unittest.cc b/chrome/browser/chromeos/policy/auto_enrollment_client_impl_unittest.cc index 8bf3780..9cbc7bca1 100644 --- a/chrome/browser/chromeos/policy/auto_enrollment_client_impl_unittest.cc +++ b/chrome/browser/chromeos/policy/auto_enrollment_client_impl_unittest.cc
@@ -815,10 +815,10 @@ Mock::VerifyAndClearExpectations(service_.get()); } -INSTANTIATE_TEST_CASE_P(FRE, - AutoEnrollmentClientImplTest, - testing::Values(AutoEnrollmentProtocol::kFRE)); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P(FRE, + AutoEnrollmentClientImplTest, + testing::Values(AutoEnrollmentProtocol::kFRE)); +INSTANTIATE_TEST_SUITE_P( InitialEnrollment, AutoEnrollmentClientImplTest, testing::Values(AutoEnrollmentProtocol::kInitialEnrollment));
diff --git a/chrome/browser/chromeos/policy/blocking_login_browsertest.cc b/chrome/browser/chromeos/policy/blocking_login_browsertest.cc index d195f35a..4ee40e0 100644 --- a/chrome/browser/chromeos/policy/blocking_login_browsertest.cc +++ b/chrome/browser/chromeos/policy/blocking_login_browsertest.cc
@@ -328,8 +328,8 @@ // TODO(poromov): Disabled because it has become flaky due to incorrect mock // network requests - re-enable this when https://crbug.com/580537 is fixed. -INSTANTIATE_TEST_CASE_P(DISABLED_BlockingLoginTestInstance, - BlockingLoginTest, - testing::ValuesIn(kBlockinLoginTestCases)); +INSTANTIATE_TEST_SUITE_P(DISABLED_BlockingLoginTestInstance, + BlockingLoginTest, + testing::ValuesIn(kBlockinLoginTestCases)); } // namespace chromeos
diff --git a/chrome/browser/chromeos/policy/device_auto_update_time_restrictions_decoder_unittest.cc b/chrome/browser/chromeos/policy/device_auto_update_time_restrictions_decoder_unittest.cc index 354c5de..f27ceb4 100644 --- a/chrome/browser/chromeos/policy/device_auto_update_time_restrictions_decoder_unittest.cc +++ b/chrome/browser/chromeos/policy/device_auto_update_time_restrictions_decoder_unittest.cc
@@ -58,17 +58,18 @@ result.value().milliseconds()); } -INSTANTIATE_TEST_CASE_P(ZeroHours, - WeeklyTimeDictionaryDecoderTest, - testing::Values(std::make_tuple("Monday", 1, 0, 20))); +INSTANTIATE_TEST_SUITE_P(ZeroHours, + WeeklyTimeDictionaryDecoderTest, + testing::Values(std::make_tuple("Monday", 1, 0, 20))); -INSTANTIATE_TEST_CASE_P(ZeroMins, - WeeklyTimeDictionaryDecoderTest, - testing::Values(std::make_tuple("Sunday", 7, 10, 0))); +INSTANTIATE_TEST_SUITE_P(ZeroMins, + WeeklyTimeDictionaryDecoderTest, + testing::Values(std::make_tuple("Sunday", 7, 10, 0))); -INSTANTIATE_TEST_CASE_P(RandomCase, - WeeklyTimeDictionaryDecoderTest, - testing::Values(std::make_tuple("Thursday", 4, 3, 10))); +INSTANTIATE_TEST_SUITE_P( + RandomCase, + WeeklyTimeDictionaryDecoderTest, + testing::Values(std::make_tuple("Thursday", 4, 3, 10))); using TestIntervalTuple = tuple<string /* start day_of_week string */, int /* start day_of_week_int */, @@ -133,18 +134,18 @@ EXPECT_TRUE(equal_vectors); } -INSTANTIATE_TEST_CASE_P(EmptyList, - WeeklyTimeIntervalListDecoderTest, - testing::Values(vector<TestIntervalTuple>())); +INSTANTIATE_TEST_SUITE_P(EmptyList, + WeeklyTimeIntervalListDecoderTest, + testing::Values(vector<TestIntervalTuple>())); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( OneInterval, WeeklyTimeIntervalListDecoderTest, testing::Values(vector<TestIntervalTuple>{ std::make_tuple("Monday", 1, 10, 20, "Tuesday", 2, 20, 100), })); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( MultipleIntervals, WeeklyTimeIntervalListDecoderTest, testing::Values(vector<TestIntervalTuple>{
diff --git a/chrome/browser/chromeos/policy/device_cloud_policy_initializer_unittest.cc b/chrome/browser/chromeos/policy/device_cloud_policy_initializer_unittest.cc index bfca918..f10da031 100644 --- a/chrome/browser/chromeos/policy/device_cloud_policy_initializer_unittest.cc +++ b/chrome/browser/chromeos/policy/device_cloud_policy_initializer_unittest.cc
@@ -184,7 +184,7 @@ EXPECT_EQ(GetParam().auth_mechanism_after_oobe, config.auth_mechanism); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ZeroTouchFlag, DeviceCloudPolicyInitializerTest, ::testing::Values(
diff --git a/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc b/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc index 294f826..cde9da47 100644 --- a/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc +++ b/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc
@@ -849,11 +849,11 @@ ExpectFailedEnrollment(EnrollmentStatus::ROBOT_REFRESH_STORE_FAILED); } -INSTANTIATE_TEST_CASE_P(Cert, - DeviceCloudPolicyManagerChromeOSEnrollmentTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(Cert, + DeviceCloudPolicyManagerChromeOSEnrollmentTest, + ::testing::Values(false, true)); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Cert, DeviceCloudPolicyManagerChromeOSEnrollmentBlankSystemSaltTest, ::testing::Values(false, true));
diff --git a/chrome/browser/chromeos/policy/device_local_account_browsertest.cc b/chrome/browser/chromeos/policy/device_local_account_browsertest.cc index 4507c11..96f82ce 100644 --- a/chrome/browser/chromeos/policy/device_local_account_browsertest.cc +++ b/chrome/browser/chromeos/policy/device_local_account_browsertest.cc
@@ -2801,7 +2801,8 @@ WaitForSessionStart(); } -INSTANTIATE_TEST_CASE_P(TermsOfServiceDownloadTestInstance, - TermsOfServiceDownloadTest, testing::Bool()); +INSTANTIATE_TEST_SUITE_P(TermsOfServiceDownloadTestInstance, + TermsOfServiceDownloadTest, + testing::Bool()); } // namespace policy
diff --git a/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc b/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc index 559ca71..ac65679 100644 --- a/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc +++ b/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc
@@ -2632,9 +2632,8 @@ base::test::ScopedFeatureList scoped_feature_list_; }; -// Fails on all chromeos builders https://crbug.com/891573 TEST_F(ConsumerDeviceStatusCollectorTimeLimitEnabledTest, - DISABLED_ReportingActivityTimesSessionTransistions) { + ReportingActivityTimesSessionTransistions) { DeviceStateTransitions test_states[] = { DeviceStateTransitions::kEnterSessionActive, DeviceStateTransitions::kPeriodicCheckTriggered, @@ -2657,9 +2656,8 @@ device_status_.active_period(0).user_email()); } -// Fails on all chromeos builders https://crbug.com/891573 TEST_F(ConsumerDeviceStatusCollectorTimeLimitEnabledTest, - DISABLED_ReportingActivityTimesSleepTransistions) { + ReportingActivityTimesSleepTransistions) { DeviceStateTransitions test_states[] = { DeviceStateTransitions::kEnterSessionActive, DeviceStateTransitions::kPeriodicCheckTriggered, @@ -2681,9 +2679,8 @@ device_status_.active_period(0).user_email()); } -// Fails on all chromeos builders https://crbug.com/891573 TEST_F(ConsumerDeviceStatusCollectorTimeLimitEnabledTest, - DISABLED_ReportingActivityTimesIdleTransitions) { + ReportingActivityTimesIdleTransitions) { DeviceStateTransitions test_states[] = { DeviceStateTransitions::kEnterSessionActive, DeviceStateTransitions::kPeriodicCheckTriggered, @@ -2707,9 +2704,7 @@ device_status_.active_period(0).user_email()); } -// Fails on all chromeos builders https://crbug.com/891573 -TEST_F(ConsumerDeviceStatusCollectorTimeLimitEnabledTest, - DISABLED_ActivityKeptInPref) { +TEST_F(ConsumerDeviceStatusCollectorTimeLimitEnabledTest, ActivityKeptInPref) { EXPECT_TRUE( profile_pref_service_.GetDictionary(prefs::kUserActivityTimes)->empty()); @@ -2746,9 +2741,8 @@ ExpectChildScreenTimeMilliseconds(12 * ActivePeriodMilliseconds()); } -// Fails on all chromeos builders https://crbug.com/891573 TEST_F(ConsumerDeviceStatusCollectorTimeLimitEnabledTest, - DISABLED_ActivityNotWrittenToLocalState) { + ActivityNotWrittenToLocalState) { EXPECT_TRUE(local_state_.GetDictionary(prefs::kDeviceActivityTimes)->empty()); DeviceStateTransitions test_states[] = {
diff --git a/chrome/browser/chromeos/policy/display_resolution_handler_browsertest.cc b/chrome/browser/chromeos/policy/display_resolution_handler_browsertest.cc index e4cd4fe8..780a447 100644 --- a/chrome/browser/chromeos/policy/display_resolution_handler_browsertest.cc +++ b/chrome/browser/chromeos/policy/display_resolution_handler_browsertest.cc
@@ -368,7 +368,7 @@ << "Initial primary display scale after policy was set and unset"; } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( PolicyDeviceDisplayResolution, DeviceDisplayResolutionTest, testing::Values(PolicyValue{1920, 1080, 200, false, 200}, @@ -460,11 +460,11 @@ << "Initial primary display scale after reboot"; } -INSTANTIATE_TEST_CASE_P(PolicyDeviceDisplayResolution, - DisplayResolutionBootTest, - testing::Values(PolicyValue{1920, 1080, 200, false, - 200}, - PolicyValue{800, 600, 50, false, 50})); +INSTANTIATE_TEST_SUITE_P(PolicyDeviceDisplayResolution, + DisplayResolutionBootTest, + testing::Values(PolicyValue{1920, 1080, 200, false, + 200}, + PolicyValue{800, 600, 50, false, 50})); class DeviceDisplayResolutionRecommendedTest : public DeviceDisplayResolutionTestBase { @@ -568,7 +568,7 @@ << "Internal display scale after user operation"; } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( PolicyDeviceDisplayResolution, DeviceDisplayResolutionRecommendedTest, testing::Values(PolicyValue{1920, 1080, 200, false, 200},
diff --git a/chrome/browser/chromeos/policy/display_rotation_default_handler_browsertest.cc b/chrome/browser/chromeos/policy/display_rotation_default_handler_browsertest.cc index 39e479d..7f472f5 100644 --- a/chrome/browser/chromeos/policy/display_rotation_default_handler_browsertest.cc +++ b/chrome/browser/chromeos/policy/display_rotation_default_handler_browsertest.cc
@@ -245,12 +245,12 @@ << ", and policy was removed."; } -INSTANTIATE_TEST_CASE_P(PolicyDisplayRotationDefault, - DisplayRotationDefaultTest, - testing::Values(display::Display::ROTATE_0, - display::Display::ROTATE_90, - display::Display::ROTATE_180, - display::Display::ROTATE_270)); +INSTANTIATE_TEST_SUITE_P(PolicyDisplayRotationDefault, + DisplayRotationDefaultTest, + testing::Values(display::Display::ROTATE_0, + display::Display::ROTATE_90, + display::Display::ROTATE_180, + display::Display::ROTATE_270)); // This class tests that the policy is reapplied after a reboot. To persist from // PRE_Reboot to Reboot, the policy is inserted into a FakeSessionManagerClient. @@ -328,11 +328,11 @@ EXPECT_EQ(policy_rotation, GetRotationOfFirstDisplay()); } -INSTANTIATE_TEST_CASE_P(PolicyDisplayRotationDefault, - DisplayRotationBootTest, - testing::Values(display::Display::ROTATE_0, - display::Display::ROTATE_90, - display::Display::ROTATE_180, - display::Display::ROTATE_270)); +INSTANTIATE_TEST_SUITE_P(PolicyDisplayRotationDefault, + DisplayRotationBootTest, + testing::Values(display::Display::ROTATE_0, + display::Display::ROTATE_90, + display::Display::ROTATE_180, + display::Display::ROTATE_270)); } // namespace policy
diff --git a/chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc b/chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc index 195fb2f..4e4f520 100644 --- a/chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc +++ b/chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc
@@ -825,9 +825,9 @@ certificate_importer_->GetAndResetImportCount()); } -INSTANTIATE_TEST_CASE_P(NetworkConfigurationUpdaterTestWithParamInstance, - NetworkConfigurationUpdaterTestWithParam, - testing::Values(key::kDeviceOpenNetworkConfiguration, - key::kOpenNetworkConfiguration)); +INSTANTIATE_TEST_SUITE_P(NetworkConfigurationUpdaterTestWithParamInstance, + NetworkConfigurationUpdaterTestWithParam, + testing::Values(key::kDeviceOpenNetworkConfiguration, + key::kOpenNetworkConfiguration)); } // namespace policy
diff --git a/chrome/browser/chromeos/policy/signin_profile_apps_policy_browsertest.cc b/chrome/browser/chromeos/policy/signin_profile_apps_policy_browsertest.cc index 1d7291a7..6732e80 100644 --- a/chrome/browser/chromeos/policy/signin_profile_apps_policy_browsertest.cc +++ b/chrome/browser/chromeos/policy/signin_profile_apps_policy_browsertest.cc
@@ -304,13 +304,13 @@ ->GetInstalledExtension(kTrivialExtensionId)); } -INSTANTIATE_TEST_CASE_P(, - SigninProfileAppsPolicyPerChannelTest, - testing::Values(version_info::Channel::UNKNOWN, - version_info::Channel::CANARY, - version_info::Channel::DEV, - version_info::Channel::BETA, - version_info::Channel::STABLE)); +INSTANTIATE_TEST_SUITE_P(, + SigninProfileAppsPolicyPerChannelTest, + testing::Values(version_info::Channel::UNKNOWN, + version_info::Channel::CANARY, + version_info::Channel::DEV, + version_info::Channel::BETA, + version_info::Channel::STABLE)); namespace {
diff --git a/chrome/browser/chromeos/policy/site_isolation_flag_handling_browsertest.cc b/chrome/browser/chromeos/policy/site_isolation_flag_handling_browsertest.cc index 0a51a12b..049c5f0 100644 --- a/chrome/browser/chromeos/policy/site_isolation_flag_handling_browsertest.cc +++ b/chrome/browser/chromeos/policy/site_isolation_flag_handling_browsertest.cc
@@ -401,8 +401,8 @@ EXPECT_EQ(GetParam().expected_flags_for_user, flags_for_user); } -INSTANTIATE_TEST_CASE_P(, - SiteIsolationFlagHandlingTest, - ::testing::ValuesIn(kTestCases)); +INSTANTIATE_TEST_SUITE_P(, + SiteIsolationFlagHandlingTest, + ::testing::ValuesIn(kTestCases)); } // namespace chromeos
diff --git a/chrome/browser/chromeos/policy/unaffiliated_arc_allowed_browsertest.cc b/chrome/browser/chromeos/policy/unaffiliated_arc_allowed_browsertest.cc index ef19f8e..d34d10c0 100644 --- a/chrome/browser/chromeos/policy/unaffiliated_arc_allowed_browsertest.cc +++ b/chrome/browser/chromeos/policy/unaffiliated_arc_allowed_browsertest.cc
@@ -143,7 +143,7 @@ << "affiliated users."; } -INSTANTIATE_TEST_CASE_P(Blub, - UnaffiliatedArcAllowedTest, - ::testing::Values(Params(true), Params(false))); +INSTANTIATE_TEST_SUITE_P(Blub, + UnaffiliatedArcAllowedTest, + ::testing::Values(Params(true), Params(false))); } // namespace policy
diff --git a/chrome/browser/chromeos/policy/user_affiliation_browsertest.cc b/chrome/browser/chromeos/policy/user_affiliation_browsertest.cc index 0515747..baa2e5cc 100644 --- a/chrome/browser/chromeos/policy/user_affiliation_browsertest.cc +++ b/chrome/browser/chromeos/policy/user_affiliation_browsertest.cc
@@ -301,16 +301,16 @@ ASSERT_NO_FATAL_FAILURE(VerifyAffiliationExpectations()); } -INSTANTIATE_TEST_CASE_P(AffiliationCheck, - UserAffiliationBrowserTest, - // affiliated active_directory - // | | - // +----------+ ______ +---------+ - // | / \______ | - ::testing::Values(Params(true, true), // \ / - Params(false, true), // \ / - Params(true, false), // X - Params(false, false)), // / \<--! - PrintParam); // \_/ +INSTANTIATE_TEST_SUITE_P(AffiliationCheck, + UserAffiliationBrowserTest, + // affiliated active_directory + // | | + // +----------+ ______ +---------+ + // | / \______ | + ::testing::Values(Params(true, true), // \ / + Params(false, true), // \ / + Params(true, false), // X + Params(false, false)), // / \<--! + PrintParam); // \_/ } // namespace policy
diff --git a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos_unittest.cc b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos_unittest.cc index 781817d..d933863 100644 --- a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos_unittest.cc +++ b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos_unittest.cc
@@ -446,7 +446,7 @@ // TODO(agawronska): Remove test instantiation with kDMServerOAuthForChildUser // once it is enabled by default. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( /* no prefix */, UserCloudPolicyManagerChromeOSTest, testing::Values(std::vector<base::Feature>(), @@ -1027,7 +1027,7 @@ // TODO(agawronska): Remove test instantiation with kDMServerOAuthForChildUser // once it is enabled by default. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( /* no prefix */, UserCloudPolicyManagerChromeOSChildTest, testing::Values(std::vector<base::Feature>{
diff --git a/chrome/browser/chromeos/system/automatic_reboot_manager_unittest.cc b/chrome/browser/chromeos/system/automatic_reboot_manager_unittest.cc index 7e5f19a1..68f25fe 100644 --- a/chrome/browser/chromeos/system/automatic_reboot_manager_unittest.cc +++ b/chrome/browser/chromeos/system/automatic_reboot_manager_unittest.cc
@@ -2253,7 +2253,7 @@ FastForwardUntilNoTasksRemain(false); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( AutomaticRebootManagerTestInstance, AutomaticRebootManagerTest, ::testing::Values(
diff --git a/chrome/browser/extensions/active_tab_apitest.cc b/chrome/browser/extensions/active_tab_apitest.cc index e916dba..7452270 100644 --- a/chrome/browser/extensions/active_tab_apitest.cc +++ b/chrome/browser/extensions/active_tab_apitest.cc
@@ -167,9 +167,9 @@ } } -INSTANTIATE_TEST_CASE_P(ExtensionActiveTabTest, - ExtensionActiveTabTest, - testing::Bool()); +INSTANTIATE_TEST_SUITE_P(ExtensionActiveTabTest, + ExtensionActiveTabTest, + testing::Bool()); // Tests the behavior of activeTab and its relation to an extension's ability to // xhr file urls and inject scripts in file frames.
diff --git a/chrome/browser/extensions/api/platform_keys/platform_keys_apitest_nss.cc b/chrome/browser/extensions/api/platform_keys/platform_keys_apitest_nss.cc index f6d2d6778..6c2854a49 100644 --- a/chrome/browser/extensions/api/platform_keys/platform_keys_apitest_nss.cc +++ b/chrome/browser/extensions/api/platform_keys/platform_keys_apitest_nss.cc
@@ -352,7 +352,7 @@ ASSERT_TRUE(RunExtensionTest("permissionTests")) << message_; } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Unmanaged, UnmanagedPlatformKeysTest, ::testing::Values(UnmanagedPlatformKeysTestParams( @@ -402,7 +402,7 @@ << message_; } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ManagedWithoutPermission, ManagedWithoutPermissionPlatformKeysTest, ::testing::Values( @@ -461,7 +461,7 @@ << message_; } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ManagedWithPermission, ManagedWithPermissionPlatformKeysTest, ::testing::Values(
diff --git a/chrome/browser/extensions/api/storage/policy_value_store_unittest.cc b/chrome/browser/extensions/api/storage/policy_value_store_unittest.cc index 9d132c6..c0ff25c 100644 --- a/chrome/browser/extensions/api/storage/policy_value_store_unittest.cc +++ b/chrome/browser/extensions/api/storage/policy_value_store_unittest.cc
@@ -86,10 +86,9 @@ } // namespace -INSTANTIATE_TEST_CASE_P( - PolicyValueStoreTest, - ValueStoreTest, - testing::Values(&Param)); +INSTANTIATE_TEST_SUITE_P(PolicyValueStoreTest, + ValueStoreTest, + testing::Values(&Param)); class PolicyValueStoreTest : public testing::Test { public:
diff --git a/chrome/browser/extensions/api/storage/settings_apitest.cc b/chrome/browser/extensions/api/storage/settings_apitest.cc index 4805dfc..4b1e25f 100644 --- a/chrome/browser/extensions/api/storage/settings_apitest.cc +++ b/chrome/browser/extensions/api/storage/settings_apitest.cc
@@ -598,12 +598,12 @@ ASSERT_TRUE(RunExtensionTest("settings/storage_area")) << message_; } -INSTANTIATE_TEST_CASE_P(StorageAreaNativeBindings, - StorageAreaApiTest, - ::testing::Values(true)); +INSTANTIATE_TEST_SUITE_P(StorageAreaNativeBindings, + StorageAreaApiTest, + ::testing::Values(true)); -INSTANTIATE_TEST_CASE_P(StorageAreaJSBindings, - StorageAreaApiTest, - ::testing::Values(false)); +INSTANTIATE_TEST_SUITE_P(StorageAreaJSBindings, + StorageAreaApiTest, + ::testing::Values(false)); } // namespace extensions
diff --git a/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_apitest.cc b/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_apitest.cc index 6fa8e727..516413f 100644 --- a/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_apitest.cc +++ b/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_apitest.cc
@@ -878,7 +878,7 @@ expect_success, error_message); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( _, WebrtcLoggingPrivateApiStartEventLoggingTestFeatureAndPolicyEnabled, ::testing::Bool()); @@ -920,7 +920,7 @@ expect_success, error_message); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( FeatureEnabled, WebrtcLoggingPrivateApiStartEventLoggingTestFeatureOrPolicyDisabled, ::testing::Bool());
diff --git a/chrome/browser/extensions/api_binding_perf_browsertest.cc b/chrome/browser/extensions/api_binding_perf_browsertest.cc index 45ac31b..fde1940b 100644 --- a/chrome/browser/extensions/api_binding_perf_browsertest.cc +++ b/chrome/browser/extensions/api_binding_perf_browsertest.cc
@@ -126,12 +126,12 @@ LOG(INFO) << "Executed in " << time_elapsed.InMillisecondsF() << " ms"; } -INSTANTIATE_TEST_CASE_P(Native, - APIBindingPerfBrowserTest, - ::testing::Values(NATIVE_BINDINGS)); -INSTANTIATE_TEST_CASE_P(JavaScript, - APIBindingPerfBrowserTest, - ::testing::Values(JAVASCRIPT_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(Native, + APIBindingPerfBrowserTest, + ::testing::Values(NATIVE_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(JavaScript, + APIBindingPerfBrowserTest, + ::testing::Values(JAVASCRIPT_BINDINGS)); } // namespace } // namespace extensions
diff --git a/chrome/browser/extensions/content_verifier_hash_fetch_behavior_browsertest.cc b/chrome/browser/extensions/content_verifier_hash_fetch_behavior_browsertest.cc index 78149cd..2fcd687 100644 --- a/chrome/browser/extensions/content_verifier_hash_fetch_behavior_browsertest.cc +++ b/chrome/browser/extensions/content_verifier_hash_fetch_behavior_browsertest.cc
@@ -853,8 +853,8 @@ EXPECT_TRUE(HasValidVerifiedContents()); } -INSTANTIATE_TEST_CASE_P(FetchBehaviorTests, - ContentVerifierHashTest, - testing::Values(kEnforce, kEnforceStrict)); +INSTANTIATE_TEST_SUITE_P(FetchBehaviorTests, + ContentVerifierHashTest, + testing::Values(kEnforce, kEnforceStrict)); } // namespace extensions
diff --git a/chrome/browser/extensions/cross_origin_read_blocking_browsertest.cc b/chrome/browser/extensions/cross_origin_read_blocking_browsertest.cc index 6029bd6..05c6e19 100644 --- a/chrome/browser/extensions/cross_origin_read_blocking_browsertest.cc +++ b/chrome/browser/extensions/cross_origin_read_blocking_browsertest.cc
@@ -1138,14 +1138,14 @@ } } -INSTANTIATE_TEST_CASE_P(AllowlistingDisabled, - CrossOriginReadBlockingExtensionAllowlistingTest, - ::testing::Values(AllowlistingParam(false, false))); -INSTANTIATE_TEST_CASE_P(Allowlisted, - CrossOriginReadBlockingExtensionAllowlistingTest, - ::testing::Values(AllowlistingParam(true, true))); -INSTANTIATE_TEST_CASE_P(NotAllowlisted, - CrossOriginReadBlockingExtensionAllowlistingTest, - ::testing::Values(AllowlistingParam(true, false))); +INSTANTIATE_TEST_SUITE_P(AllowlistingDisabled, + CrossOriginReadBlockingExtensionAllowlistingTest, + ::testing::Values(AllowlistingParam(false, false))); +INSTANTIATE_TEST_SUITE_P(Allowlisted, + CrossOriginReadBlockingExtensionAllowlistingTest, + ::testing::Values(AllowlistingParam(true, true))); +INSTANTIATE_TEST_SUITE_P(NotAllowlisted, + CrossOriginReadBlockingExtensionAllowlistingTest, + ::testing::Values(AllowlistingParam(true, false))); } // namespace extensions
diff --git a/chrome/browser/extensions/execute_script_apitest.cc b/chrome/browser/extensions/execute_script_apitest.cc index 4c6ed44..19e98f7 100644 --- a/chrome/browser/extensions/execute_script_apitest.cc +++ b/chrome/browser/extensions/execute_script_apitest.cc
@@ -197,6 +197,7 @@ ASSERT_TRUE(RunSubtest("domsubtreemodified3")) << message_; } -INSTANTIATE_TEST_CASE_P(ExecuteScriptApiTest, - DestructiveScriptTest, - ::testing::Range(0, kDestructiveScriptTestBucketCount)); +INSTANTIATE_TEST_SUITE_P(ExecuteScriptApiTest, + DestructiveScriptTest, + ::testing::Range(0, + kDestructiveScriptTestBucketCount));
diff --git a/chrome/browser/extensions/extension_bindings_apitest.cc b/chrome/browser/extensions/extension_bindings_apitest.cc index 607a611..c21541c 100644 --- a/chrome/browser/extensions/extension_bindings_apitest.cc +++ b/chrome/browser/extensions/extension_bindings_apitest.cc
@@ -640,19 +640,19 @@ // Run core bindings API tests with both native and JS-based bindings. This // ensures we have some minimum level of coverage while in the experimental // phase, when native bindings may be enabled on trunk but not at 100% stable. -INSTANTIATE_TEST_CASE_P(Native, - ExtensionBindingsApiTest, - ::testing::Values(NATIVE_BINDINGS)); -INSTANTIATE_TEST_CASE_P(JavaScript, - ExtensionBindingsApiTest, - ::testing::Values(JAVASCRIPT_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(Native, + ExtensionBindingsApiTest, + ::testing::Values(NATIVE_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(JavaScript, + ExtensionBindingsApiTest, + ::testing::Values(JAVASCRIPT_BINDINGS)); -INSTANTIATE_TEST_CASE_P(Native, - FramesExtensionBindingsApiTest, - ::testing::Values(NATIVE_BINDINGS)); -INSTANTIATE_TEST_CASE_P(JavaScript, - FramesExtensionBindingsApiTest, - ::testing::Values(JAVASCRIPT_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(Native, + FramesExtensionBindingsApiTest, + ::testing::Values(NATIVE_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(JavaScript, + FramesExtensionBindingsApiTest, + ::testing::Values(JAVASCRIPT_BINDINGS)); } // namespace } // namespace extensions
diff --git a/chrome/browser/extensions/extension_keybinding_apitest.cc b/chrome/browser/extensions/extension_keybinding_apitest.cc index a2d7040..99b0142 100644 --- a/chrome/browser/extensions/extension_keybinding_apitest.cc +++ b/chrome/browser/extensions/extension_keybinding_apitest.cc
@@ -1093,6 +1093,6 @@ "commands.onCommand")); } -INSTANTIATE_TEST_CASE_P(, IncognitoCommandsApiTest, testing::Bool()); +INSTANTIATE_TEST_SUITE_P(, IncognitoCommandsApiTest, testing::Bool()); } // namespace extensions
diff --git a/chrome/browser/extensions/extension_message_bubble_controller_unittest.cc b/chrome/browser/extensions/extension_message_bubble_controller_unittest.cc index 4da06134..e28ea61 100644 --- a/chrome/browser/extensions/extension_message_bubble_controller_unittest.cc +++ b/chrome/browser/extensions/extension_message_bubble_controller_unittest.cc
@@ -500,8 +500,9 @@ EXPECT_TRUE(controller->ShouldShow()); } -INSTANTIATE_TEST_CASE_P(ExtensionMessageBubbleTest, - ExtensionMessageBubbleTestWithParam, testing::Bool()); +INSTANTIATE_TEST_SUITE_P(ExtensionMessageBubbleTest, + ExtensionMessageBubbleTestWithParam, + testing::Bool()); // The feature this is meant to test is only enacted on Windows, but it should // pass on all platforms.
diff --git a/chrome/browser/extensions/extension_messages_apitest.cc b/chrome/browser/extensions/extension_messages_apitest.cc index dcaf35d2..a2d7726 100644 --- a/chrome/browser/extensions/extension_messages_apitest.cc +++ b/chrome/browser/extensions/extension_messages_apitest.cc
@@ -1188,12 +1188,12 @@ EXPECT_EQ(0u, tls_channel_id_from_send_message.size()); } -INSTANTIATE_TEST_CASE_P(NativeBindingsNoChannelID, - ExternallyConnectableMessagingTestNoChannelID, - ::testing::Values(NATIVE_BINDINGS)); -INSTANTIATE_TEST_CASE_P(JavaScriptBindingsNoChannelID, - ExternallyConnectableMessagingTestNoChannelID, - ::testing::Values(JAVASCRIPT_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(NativeBindingsNoChannelID, + ExternallyConnectableMessagingTestNoChannelID, + ::testing::Values(NATIVE_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(JavaScriptBindingsNoChannelID, + ExternallyConnectableMessagingTestNoChannelID, + ::testing::Values(JAVASCRIPT_BINDINGS)); // Tests a web connectable extension that receives TLS channel id, but // immediately closes its background page upon receipt of a message. @@ -1317,12 +1317,12 @@ #endif // !defined(OS_WIN) - http://crbug.com/350517. -INSTANTIATE_TEST_CASE_P(NativeBindings, - ExternallyConnectableMessagingTest, - ::testing::Values(NATIVE_BINDINGS)); -INSTANTIATE_TEST_CASE_P(JavaScriptBindings, - ExternallyConnectableMessagingTest, - ::testing::Values(JAVASCRIPT_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(NativeBindings, + ExternallyConnectableMessagingTest, + ::testing::Values(NATIVE_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(JavaScriptBindings, + ExternallyConnectableMessagingTest, + ::testing::Values(JAVASCRIPT_BINDINGS)); // Tests that messages sent in the unload handler of a window arrive. IN_PROC_BROWSER_TEST_P(MessagingApiTest, MessagingOnUnload) { @@ -1366,12 +1366,12 @@ ASSERT_TRUE(RunExtensionTest("messaging/large_messages")); } -INSTANTIATE_TEST_CASE_P(NativeBindings, - MessagingApiTest, - ::testing::Values(NATIVE_BINDINGS)); -INSTANTIATE_TEST_CASE_P(JavaScriptBindings, - MessagingApiTest, - ::testing::Values(JAVASCRIPT_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(NativeBindings, + MessagingApiTest, + ::testing::Values(NATIVE_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(JavaScriptBindings, + MessagingApiTest, + ::testing::Values(JAVASCRIPT_BINDINGS)); } // namespace
diff --git a/chrome/browser/extensions/extension_protocols_unittest.cc b/chrome/browser/extensions/extension_protocols_unittest.cc index 4816246..982221f 100644 --- a/chrome/browser/extensions/extension_protocols_unittest.cc +++ b/chrome/browser/extensions/extension_protocols_unittest.cc
@@ -837,12 +837,12 @@ EXPECT_EQ(net::OK, DoRequestOrLoad(extension.get(), "background.js").result()); } -INSTANTIATE_TEST_CASE_P(Extensions, - ExtensionProtocolsTest, - ::testing::ValuesIn(kTestModes)); +INSTANTIATE_TEST_SUITE_P(Extensions, + ExtensionProtocolsTest, + ::testing::ValuesIn(kTestModes)); -INSTANTIATE_TEST_CASE_P(Extensions, - ExtensionProtocolsIncognitoTest, - ::testing::ValuesIn(kTestModes)); +INSTANTIATE_TEST_SUITE_P(Extensions, + ExtensionProtocolsIncognitoTest, + ::testing::ValuesIn(kTestModes)); } // namespace extensions
diff --git a/chrome/browser/extensions/extension_tabs_apitest.cc b/chrome/browser/extensions/extension_tabs_apitest.cc index 354e7b2..b0eaaa2 100644 --- a/chrome/browser/extensions/extension_tabs_apitest.cc +++ b/chrome/browser/extensions/extension_tabs_apitest.cc
@@ -309,7 +309,7 @@ << message_; } -INSTANTIATE_TEST_CASE_P(, IncognitoExtensionApiTabTest, testing::Bool()); +INSTANTIATE_TEST_SUITE_P(, IncognitoExtensionApiTabTest, testing::Bool()); // Adding a new test? Awesome. But API tests are the old hotness. The new // hotness is extension_function_test_utils. See tabs_test.cc for an example.
diff --git a/chrome/browser/extensions/service_worker_apitest.cc b/chrome/browser/extensions/service_worker_apitest.cc index 5d5480b..acdb50c 100644 --- a/chrome/browser/extensions/service_worker_apitest.cc +++ b/chrome/browser/extensions/service_worker_apitest.cc
@@ -1538,47 +1538,47 @@ // Run with both native and JS-based bindings. This ensures that both stable // (JS) and experimental (native) phases work correctly with worker scripts // while we launch native bindings to stable. -INSTANTIATE_TEST_CASE_P(ServiceWorkerTestWithNativeBindings, - ServiceWorkerTest, - ::testing::Values(NATIVE_BINDINGS)); -INSTANTIATE_TEST_CASE_P(ServiceWorkerTestWithJSBindings, - ServiceWorkerTest, - ::testing::Values(JAVASCRIPT_BINDINGS)); -INSTANTIATE_TEST_CASE_P(ServiceWorkerBackgroundSyncTestWithNativeBindings, - ServiceWorkerBackgroundSyncTest, - ::testing::Values(NATIVE_BINDINGS)); -INSTANTIATE_TEST_CASE_P(ServiceWorkerBackgroundSyncTestWithJSBindings, - ServiceWorkerBackgroundSyncTest, - ::testing::Values(JAVASCRIPT_BINDINGS)); -INSTANTIATE_TEST_CASE_P(ServiceWorkerPushMessagingTestWithNativeBindings, - ServiceWorkerPushMessagingTest, - ::testing::Values(NATIVE_BINDINGS)); -INSTANTIATE_TEST_CASE_P(ServiceWorkerPushMessagingTestWithJSBindings, - ServiceWorkerPushMessagingTest, - ::testing::Values(JAVASCRIPT_BINDINGS)); -INSTANTIATE_TEST_CASE_P(ServiceWorkerLazyBackgroundTestWithNativeBindings, - ServiceWorkerLazyBackgroundTest, - ::testing::Values(NATIVE_BINDINGS)); -INSTANTIATE_TEST_CASE_P(ServiceWorkerLazyBackgroundTestWithJSBindings, - ServiceWorkerLazyBackgroundTest, - ::testing::Values(JAVASCRIPT_BINDINGS)); -INSTANTIATE_TEST_CASE_P(ServiceWorkerTestWithNativeBindings, - ServiceWorkerBasedBackgroundTest, - ::testing::Values(NATIVE_BINDINGS)); -INSTANTIATE_TEST_CASE_P(ServiceWorkerTestWithJSBindings, - ServiceWorkerBasedBackgroundTest, - ::testing::Values(JAVASCRIPT_BINDINGS)); -INSTANTIATE_TEST_CASE_P(ServiceWorkerTestWithNativeBindings, - ServiceWorkerOnStartupEventTest, - ::testing::Values(NATIVE_BINDINGS)); -INSTANTIATE_TEST_CASE_P(ServiceWorkerTestWithJSBindings, - ServiceWorkerOnStartupEventTest, - ::testing::Values(JAVASCRIPT_BINDINGS)); -INSTANTIATE_TEST_CASE_P(ServiceWorkerTestWithNativeBindings, - ServiceWorkerRegistrationAtStartupTest, - ::testing::Values(NATIVE_BINDINGS)); -INSTANTIATE_TEST_CASE_P(ServiceWorkerTestWithJSBindings, - ServiceWorkerRegistrationAtStartupTest, - ::testing::Values(JAVASCRIPT_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(ServiceWorkerTestWithNativeBindings, + ServiceWorkerTest, + ::testing::Values(NATIVE_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(ServiceWorkerTestWithJSBindings, + ServiceWorkerTest, + ::testing::Values(JAVASCRIPT_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(ServiceWorkerBackgroundSyncTestWithNativeBindings, + ServiceWorkerBackgroundSyncTest, + ::testing::Values(NATIVE_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(ServiceWorkerBackgroundSyncTestWithJSBindings, + ServiceWorkerBackgroundSyncTest, + ::testing::Values(JAVASCRIPT_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(ServiceWorkerPushMessagingTestWithNativeBindings, + ServiceWorkerPushMessagingTest, + ::testing::Values(NATIVE_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(ServiceWorkerPushMessagingTestWithJSBindings, + ServiceWorkerPushMessagingTest, + ::testing::Values(JAVASCRIPT_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(ServiceWorkerLazyBackgroundTestWithNativeBindings, + ServiceWorkerLazyBackgroundTest, + ::testing::Values(NATIVE_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(ServiceWorkerLazyBackgroundTestWithJSBindings, + ServiceWorkerLazyBackgroundTest, + ::testing::Values(JAVASCRIPT_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(ServiceWorkerTestWithNativeBindings, + ServiceWorkerBasedBackgroundTest, + ::testing::Values(NATIVE_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(ServiceWorkerTestWithJSBindings, + ServiceWorkerBasedBackgroundTest, + ::testing::Values(JAVASCRIPT_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(ServiceWorkerTestWithNativeBindings, + ServiceWorkerOnStartupEventTest, + ::testing::Values(NATIVE_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(ServiceWorkerTestWithJSBindings, + ServiceWorkerOnStartupEventTest, + ::testing::Values(JAVASCRIPT_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(ServiceWorkerTestWithNativeBindings, + ServiceWorkerRegistrationAtStartupTest, + ::testing::Values(NATIVE_BINDINGS)); +INSTANTIATE_TEST_SUITE_P(ServiceWorkerTestWithJSBindings, + ServiceWorkerRegistrationAtStartupTest, + ::testing::Values(JAVASCRIPT_BINDINGS)); } // namespace extensions
diff --git a/chrome/browser/extensions/updater/update_service_browsertest.cc b/chrome/browser/extensions/updater/update_service_browsertest.cc index 7e2c0b8f..af8f073 100644 --- a/chrome/browser/extensions/updater/update_service_browsertest.cc +++ b/chrome/browser/extensions/updater/update_service_browsertest.cc
@@ -57,7 +57,7 @@ // This test is parameterized for using JSON or XML serialization. |true| means // JSON serialization is used. -INSTANTIATE_TEST_CASE_P(Parameterized, UpdateServiceTest, testing::Bool()); +INSTANTIATE_TEST_SUITE_P(Parameterized, UpdateServiceTest, testing::Bool()); IN_PROC_BROWSER_TEST_P(UpdateServiceTest, NoUpdate) { // Verify that UpdateService runs correctly when there's no update. @@ -648,9 +648,9 @@ // This test is parameterized for using JSON or XML serialization. |true| means // JSON serialization is used. -INSTANTIATE_TEST_CASE_P(Parameterized, - PolicyUpdateServiceTest, - testing::Bool()); +INSTANTIATE_TEST_SUITE_P(Parameterized, + PolicyUpdateServiceTest, + testing::Bool()); // Tests that if CheckForExternalUpdates() fails, then we retry reinstalling // corrupted policy extensions. For example: if network is unavailable,
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 6923bf5..4fffff4 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -68,7 +68,7 @@ }, { "name": "allow-insecure-localhost", - // "owners": [ "your-team" ], + "owners": [ "security-dev" ], "expiry_milestone": 76 }, { @@ -1694,7 +1694,7 @@ }, { "name": "enable-potentially-annoying-security-features", - // "owners": [ "your-team" ], + "owners": [ "security-dev" ], "expiry_milestone": 76 }, { @@ -2102,6 +2102,11 @@ "expiry_milestone": 76 }, { + "name": "enable-webgl2-compute-context", + "owners": [ "webgl-team@google.com" ], + "expiry_milestone": 77 + }, + { "name": "enable-webgl-draft-extensions", // "owners": [ "your-team" ], "expiry_milestone": 76 @@ -3250,7 +3255,7 @@ }, { "name": "unsafely-treat-insecure-origin-as-secure", - // "owners": [ "your-team" ], + "owners": [ "security-dev" ], "expiry_milestone": 76 }, {
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index d8bf89c..b9b1c92 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -3588,6 +3588,14 @@ #endif // defined(OS_WIN) || defined(OS_LINUX) +#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) + +const char kWebGL2ComputeContextName[] = "WebGL 2.0 Compute"; +const char kWebGL2ComputeContextDescription[] = + "Enable the use of WebGL 2.0 Compute API."; + +#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) + #if defined(OS_WIN) || defined(OS_MACOSX) const char kAutomaticTabDiscardingName[] = "Automatic tab discarding";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 76bece469..a80b3e4 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -2158,6 +2158,13 @@ #endif // defined(OS_WIN) || defined(OS_LINUX) +#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) + +extern const char kWebGL2ComputeContextName[]; +extern const char kWebGL2ComputeContextDescription[]; + +#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) + extern const char kExperimentalUiName[]; extern const char kExperimentalUiDescription[];
diff --git a/chrome/browser/media/webrtc/webrtc_event_log_manager_common_unittest.cc b/chrome/browser/media/webrtc/webrtc_event_log_manager_common_unittest.cc index e984b60..93fc01e 100644 --- a/chrome/browser/media/webrtc/webrtc_event_log_manager_common_unittest.cc +++ b/chrome/browser/media/webrtc/webrtc_event_log_manager_common_unittest.cc
@@ -466,7 +466,7 @@ ASSERT_EQ(writer->path(), path_); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Compression, LogFileWriterTest, ::testing::Values(WebRtcEventLogCompression::NONE,
diff --git a/chrome/browser/media/webrtc/webrtc_event_log_manager_unittest.cc b/chrome/browser/media/webrtc/webrtc_event_log_manager_unittest.cc index 47b3a4c7..0f5b847 100644 --- a/chrome/browser/media/webrtc/webrtc_event_log_manager_unittest.cc +++ b/chrome/browser/media/webrtc/webrtc_event_log_manager_unittest.cc
@@ -3366,9 +3366,9 @@ EXPECT_EQ(written_web_app_id, expected_web_app_id); } -INSTANTIATE_TEST_CASE_P(UploadCompleteResult, - WebRtcEventLogManagerTest, - ::testing::Bool()); +INSTANTIATE_TEST_SUITE_P(UploadCompleteResult, + WebRtcEventLogManagerTest, + ::testing::Bool()); TEST_F(WebRtcEventLogManagerTestCacheClearing, ClearCacheForBrowserContextRemovesPendingFilesInRange) { @@ -3708,9 +3708,9 @@ EXPECT_EQ(OnWebRtcEventLogWrite(key, "log"), std::make_pair(false, false)); } -INSTANTIATE_TEST_CASE_P(, - WebRtcEventLogManagerTestWithRemoteLoggingDisabled, - ::testing::Bool()); +INSTANTIATE_TEST_SUITE_P(, + WebRtcEventLogManagerTestWithRemoteLoggingDisabled, + ::testing::Bool()); // This test is redundant; it is provided for completeness; see following tests. TEST_F(WebRtcEventLogManagerTestPolicy, StartsEnabledAllowsRemoteLogging) { @@ -4199,7 +4199,7 @@ WaitForPendingTasks(&run_loop); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( UploadSupportingConnectionTypes, WebRtcEventLogManagerTestForNetworkConnectivity, ::testing::Combine(
diff --git a/chrome/browser/media/webrtc/webrtc_webcam_browsertest.cc b/chrome/browser/media/webrtc/webrtc_webcam_browsertest.cc index fa0e532..db5eeb4 100644 --- a/chrome/browser/media/webrtc/webrtc_webcam_browsertest.cc +++ b/chrome/browser/media/webrtc/webrtc_webcam_browsertest.cc
@@ -113,6 +113,6 @@ GetUserMediaAndGetStreamSize(tab, kVideoCallConstraints1080p)); } -INSTANTIATE_TEST_CASE_P(WebRtcWebcamBrowserTests, - WebRtcWebcamBrowserTest, - testing::ValuesIn(kTargetVideoCaptureImplementations)); +INSTANTIATE_TEST_SUITE_P(WebRtcWebcamBrowserTests, + WebRtcWebcamBrowserTest, + testing::ValuesIn(kTargetVideoCaptureImplementations));
diff --git a/chrome/browser/metrics/antivirus_metrics_provider_win_unittest.cc b/chrome/browser/metrics/antivirus_metrics_provider_win_unittest.cc index 22ecdf8e..82d7fca5 100644 --- a/chrome/browser/metrics/antivirus_metrics_provider_win_unittest.cc +++ b/chrome/browser/metrics/antivirus_metrics_provider_win_unittest.cc
@@ -136,7 +136,7 @@ expected_result, 1); } -INSTANTIATE_TEST_CASE_P(, AntiVirusMetricsProviderTest, ::testing::Bool()); +INSTANTIATE_TEST_SUITE_P(, AntiVirusMetricsProviderTest, ::testing::Bool()); TEST_F(AntiVirusMetricsProviderSimpleTest, StripProductVersion) { Testcase testcases[] = {
diff --git a/chrome/browser/metrics/metrics_reporting_state_browsertest.cc b/chrome/browser/metrics/metrics_reporting_state_browsertest.cc index cd189d1..3032d6c 100644 --- a/chrome/browser/metrics/metrics_reporting_state_browsertest.cc +++ b/chrome/browser/metrics/metrics_reporting_state_browsertest.cc
@@ -132,6 +132,6 @@ EXPECT_EQ(!is_metrics_reporting_enabled_initial_value(), value_after_change); } -INSTANTIATE_TEST_CASE_P(MetricsReportingStateTests, - MetricsReportingStateTest, - testing::Bool()); +INSTANTIATE_TEST_SUITE_P(MetricsReportingStateTests, + MetricsReportingStateTest, + testing::Bool());
diff --git a/chrome/browser/metrics/process_memory_metrics_emitter_unittest.cc b/chrome/browser/metrics/process_memory_metrics_emitter_unittest.cc index cf15b0d..bd99f8c 100644 --- a/chrome/browser/metrics/process_memory_metrics_emitter_unittest.cc +++ b/chrome/browser/metrics/process_memory_metrics_emitter_unittest.cc
@@ -619,12 +619,12 @@ CheckMemoryUkmEntryMetrics(expected_entries); } -INSTANTIATE_TEST_CASE_P(SinglePtype, - ProcessMemoryMetricsEmitterTest, - testing::Values(ProcessType::BROWSER, - ProcessType::RENDERER, - ProcessType::GPU, - ProcessType::UTILITY)); +INSTANTIATE_TEST_SUITE_P(SinglePtype, + ProcessMemoryMetricsEmitterTest, + testing::Values(ProcessType::BROWSER, + ProcessType::RENDERER, + ProcessType::GPU, + ProcessType::UTILITY)); TEST_F(ProcessMemoryMetricsEmitterTest, CollectsExtensionProcessUKMs) { MetricMap expected_metrics = GetExpectedRendererMetrics();
diff --git a/chrome/browser/metrics/ukm_browsertest.cc b/chrome/browser/metrics/ukm_browsertest.cc index 7283ada..d6dfa33 100644 --- a/chrome/browser/metrics/ukm_browsertest.cc +++ b/chrome/browser/metrics/ukm_browsertest.cc
@@ -1095,7 +1095,7 @@ } // Run UKM browser test suite with Unified Consent enabled and disabled. -INSTANTIATE_TEST_CASE_P(, UkmBrowserTest, testing::Bool()); +INSTANTIATE_TEST_SUITE_P(, UkmBrowserTest, testing::Bool()); IN_PROC_BROWSER_TEST_P(UkmBrowserTestWithSyncTransport, SyncFeatureCheck) { MetricsConsentOverride metrics_consent(true); @@ -1197,7 +1197,7 @@ #endif // !OS_CHROMEOS // Run UKM browser test suite with Unified Consent enabled and disabled. -INSTANTIATE_TEST_CASE_P(, UkmBrowserTestWithSyncTransport, testing::Bool()); +INSTANTIATE_TEST_SUITE_P(, UkmBrowserTestWithSyncTransport, testing::Bool()); IN_PROC_BROWSER_TEST_P(UkmConsentParamBrowserTest, GroupPolicyConsentCheck) { // Note we are not using the synthetic MetricsConsentOverride since we are @@ -1222,8 +1222,8 @@ } // Verify UKM is enabled/disabled for both potential settings of group policy. -INSTANTIATE_TEST_CASE_P(UkmConsentParamBrowserTests, - UkmConsentParamBrowserTest, - testing::Bool()); +INSTANTIATE_TEST_SUITE_P(UkmConsentParamBrowserTests, + UkmConsentParamBrowserTest, + testing::Bool()); } // namespace metrics
diff --git a/chrome/browser/no_best_effort_tasks_browsertest.cc b/chrome/browser/no_best_effort_tasks_browsertest.cc index c2eef97..35696c8 100644 --- a/chrome/browser/no_best_effort_tasks_browsertest.cc +++ b/chrome/browser/no_best_effort_tasks_browsertest.cc
@@ -4,17 +4,35 @@ #include "base/base_switches.h" #include "base/command_line.h" +#include "base/files/file_path.h" #include "base/macros.h" +#include "base/path_service.h" #include "base/run_loop.h" +#include "base/strings/string_piece.h" +#include "base/strings/stringprintf.h" #include "build/build_config.h" +#include "build/buildflag.h" +#include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" +#include "chrome/common/chrome_paths.h" #include "chrome/test/base/in_process_browser_test.h" +#include "chrome/test/base/ui_test_utils.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents_observer.h" +#include "content/public/test/browser_test_utils.h" #include "content/public/test/test_utils.h" +#include "net/dns/mock_host_resolver.h" #include "testing/gtest/include/gtest/gtest.h" +#if BUILDFLAG(ENABLE_EXTENSIONS) +#include "chrome/browser/extensions/unpacked_installer.h" +#include "extensions/browser/extension_registry.h" +#include "extensions/browser/extension_system.h" +#include "extensions/browser/test_extension_registry_observer.h" +#include "extensions/common/extension.h" +#endif + namespace { class RunLoopUntilLoadedAndPainted : public content::WebContentsObserver { @@ -63,11 +81,25 @@ private: void SetUpCommandLine(base::CommandLine* command_line) override { command_line->AppendSwitch(switches::kDisableBackgroundTasks); + InProcessBrowserTest::SetUpCommandLine(command_line); + } + + void SetUpOnMainThread() override { + // Redirect all DNS requests back to localhost (to the embedded test + // server). + host_resolver()->AddRule("*", "127.0.0.1"); + InProcessBrowserTest::SetUpOnMainThread(); } DISALLOW_COPY_AND_ASSIGN(NoBestEffortTasksTest); }; +#if BUILDFLAG(ENABLE_EXTENSIONS) +constexpr base::StringPiece kExtensionId = "ddchlicdkolnonkihahngkmmmjnjlkkf"; +constexpr base::TimeDelta kSendMessageRetryPeriod = + base::TimeDelta::FromMilliseconds(250); +#endif + } // namespace // Verify that it is possible to load and paint the initial about:blank page @@ -99,3 +131,74 @@ RunLoopUntilLoadedAndPainted run_until_loaded_and_painted(web_contents); run_until_loaded_and_painted.Run(); } + +// Verify that an extension can be loaded and perform basic messaging without +// running BEST_EFFORT tasks. Regression test for http://crbug.com/177163#c112. +#if BUILDFLAG(ENABLE_EXTENSIONS) +IN_PROC_BROWSER_TEST_F(NoBestEffortTasksTest, LoadExtensionAndSendMessages) { + ASSERT_TRUE(embedded_test_server()->Start()); + + // Load the extension, waiting until the ExtensionRegistry reports that its + // renderer has been started. + base::FilePath extension_dir; + const bool have_test_data_dir = + base::PathService::Get(chrome::DIR_TEST_DATA, &extension_dir); + ASSERT_TRUE(have_test_data_dir); + extension_dir = extension_dir.AppendASCII("extensions") + .AppendASCII("no_best_effort_tasks_test_extension"); + extensions::UnpackedInstaller::Create( + extensions::ExtensionSystem::Get(browser()->profile()) + ->extension_service()) + ->Load(extension_dir); + auto* const extension = + extensions::TestExtensionRegistryObserver( + extensions::ExtensionRegistry::Get(browser()->profile())) + .WaitForExtensionReady(); + ASSERT_TRUE(extension); + ASSERT_EQ(kExtensionId, extension->id()); + + // Navigate to a test page, waiting until complete. Note that the hostname + // here must match the pattern found in the extension's manifest file, or it + // will not be able to send/receive messaging from the test web page (due to + // extension permissions). + ui_test_utils::NavigateToURL( + browser(), + embedded_test_server()->GetURL("fake.chromium.org", "/empty.html")); + + // Execute JavaScript in the test page, to send a ping message to the + // extension and await the reply. The chrome.runtime.sendMessage() operation + // can fail if the extension's background page hasn't finished running yet + // (i.e., there is no message listener yet). Thus, use a retry loop. + const std::string request_reply_javascript = base::StringPrintf( + "new Promise((resolve, reject) => {\n" + " chrome.runtime.sendMessage(\n" + " '%s',\n" + " {ping: true},\n" + " response => {\n" + " if (response) {\n" + " resolve(response);\n" + " } else {\n" + " reject(chrome.runtime.lastError.message);\n" + " }\n" + " });\n" + "})", + extension->id().c_str()); + for (;;) { + const auto result = + content::EvalJs(browser()->tab_strip_model()->GetActiveWebContents(), + request_reply_javascript); + if (result.error.empty()) { + LOG(INFO) << "Got a response from the extension."; + EXPECT_TRUE(result.value.FindBoolKey("pong").value_or(false)); + break; + } + // An error indicates the extension's message listener isn't up yet. Wait a + // little before trying again. + LOG(INFO) << "Waiting for the extension's message listener..."; + base::RunLoop run_loop; + base::SequencedTaskRunnerHandle::Get()->PostDelayedTask( + FROM_HERE, run_loop.QuitClosure(), kSendMessageRetryPeriod); + run_loop.Run(); + } +} +#endif // BUILDFLAG(ENABLE_EXTENSIONS)
diff --git a/chrome/browser/notifications/displayed_notifications_dispatch_callback.h b/chrome/browser/notifications/displayed_notifications_dispatch_callback.h index 5ff9a47..5b6212d 100644 --- a/chrome/browser/notifications/displayed_notifications_dispatch_callback.h +++ b/chrome/browser/notifications/displayed_notifications_dispatch_callback.h
@@ -6,6 +6,7 @@ #define CHROME_BROWSER_NOTIFICATIONS_DISPLAYED_NOTIFICATIONS_DISPATCH_CALLBACK_H_ #include <set> +#include <string> #include "base/callback.h" @@ -19,7 +20,7 @@ // the ids of the currently displayed notifications, otherwise the value of // |notification_ids| should be ignored. using GetDisplayedNotificationsCallback = - base::Callback<void(std::unique_ptr<std::set<std::string>> notification_ids, - bool supports_synchronization)>; + base::OnceCallback<void(std::set<std::string> notification_ids, + bool supports_synchronization)>; #endif // CHROME_BROWSER_NOTIFICATIONS_DISPLAYED_NOTIFICATIONS_DISPATCH_CALLBACK_H_
diff --git a/chrome/browser/notifications/notification_display_service.h b/chrome/browser/notifications/notification_display_service.h index f630aa4..9c3b0a6 100644 --- a/chrome/browser/notifications/notification_display_service.h +++ b/chrome/browser/notifications/notification_display_service.h
@@ -35,11 +35,9 @@ // ability to query which notifications are still being displayed. // // TODO(peter): Rename |supports_synchronization| to |supported|. - // TODO(peter): Change this to be a base::OnceCallback, remove use of the - // std::unique_ptr<> in favor of move semantics. using DisplayedNotificationsCallback = - base::Callback<void(std::unique_ptr<std::set<std::string>>, - bool /* supports_synchronization */)>; + base::OnceCallback<void(std::set<std::string>, + bool /* supports_synchronization */)>; // Returns an instance of the display service for the given |profile|. static NotificationDisplayService* GetForProfile(Profile* profile);
diff --git a/chrome/browser/notifications/notification_display_service_impl.cc b/chrome/browser/notifications/notification_display_service_impl.cc index d0368f1..8e86371 100644 --- a/chrome/browser/notifications/notification_display_service_impl.cc +++ b/chrome/browser/notifications/notification_display_service_impl.cc
@@ -262,7 +262,8 @@ DisplayedNotificationsCallback callback) { if (!bridge_initialized_) { actions_.push(base::BindOnce(&NotificationDisplayServiceImpl::GetDisplayed, - weak_factory_.GetWeakPtr(), callback)); + weak_factory_.GetWeakPtr(), + std::move(callback))); return; }
diff --git a/chrome/browser/notifications/notification_display_service_tester.cc b/chrome/browser/notifications/notification_display_service_tester.cc index b23374bd..b2c6005 100644 --- a/chrome/browser/notifications/notification_display_service_tester.cc +++ b/chrome/browser/notifications/notification_display_service_tester.cc
@@ -43,7 +43,7 @@ void Close(Profile* profile, const std::string& notification_id) override {} void GetDisplayed(Profile* profile, GetDisplayedNotificationsCallback callback) const override { - auto displayed_notifications = std::make_unique<std::set<std::string>>(); + std::set<std::string> displayed_notifications; std::move(callback).Run(std::move(displayed_notifications), false /* supports_synchronization */); }
diff --git a/chrome/browser/notifications/notification_platform_bridge_android.cc b/chrome/browser/notifications/notification_platform_bridge_android.cc index 58f530d..cc4bf7a 100644 --- a/chrome/browser/notifications/notification_platform_bridge_android.cc +++ b/chrome/browser/notifications/notification_platform_bridge_android.cc
@@ -326,11 +326,10 @@ void NotificationPlatformBridgeAndroid::GetDisplayed( Profile* profile, GetDisplayedNotificationsCallback callback) const { - auto displayed_notifications = std::make_unique<std::set<std::string>>(); + std::set<std::string> displayed_notifications; base::PostTaskWithTraits( FROM_HERE, {content::BrowserThread::UI}, - base::BindOnce(std::move(callback), - base::Passed(&displayed_notifications), + base::BindOnce(std::move(callback), std::move(displayed_notifications), false /* supports_synchronization */)); }
diff --git a/chrome/browser/notifications/notification_platform_bridge_chromeos.cc b/chrome/browser/notifications/notification_platform_bridge_chromeos.cc index 1a7b07d2..8c38034 100644 --- a/chrome/browser/notifications/notification_platform_bridge_chromeos.cc +++ b/chrome/browser/notifications/notification_platform_bridge_chromeos.cc
@@ -66,7 +66,8 @@ // Right now, this is only used to get web notifications that were created by // and have outlived a previous browser process. Ash itself doesn't outlive // the browser process, so there's no need to implement. - std::move(callback).Run(std::make_unique<std::set<std::string>>(), false); + std::set<std::string> displayed_notifications; + std::move(callback).Run(std::move(displayed_notifications), false); } void NotificationPlatformBridgeChromeOs::SetReadyCallback(
diff --git a/chrome/browser/notifications/notification_platform_bridge_linux.cc b/chrome/browser/notifications/notification_platform_bridge_linux.cc index c3d1c536..bb0f94a 100644 --- a/chrome/browser/notifications/notification_platform_bridge_linux.cc +++ b/chrome/browser/notifications/notification_platform_bridge_linux.cc
@@ -741,11 +741,11 @@ bool incognito, GetDisplayedNotificationsCallback callback) const { DCHECK(task_runner_->RunsTasksInCurrentSequence()); - auto displayed = std::make_unique<std::set<std::string>>(); + std::set<std::string> displayed; for (const auto& pair : notifications_) { NotificationData* data = pair.first; if (data->profile_id == profile_id && data->is_incognito == incognito) - displayed->insert(data->notification_id); + displayed.insert(data->notification_id); } base::PostTaskWithTraits( FROM_HERE, {content::BrowserThread::UI},
diff --git a/chrome/browser/notifications/notification_platform_bridge_mac.mm b/chrome/browser/notifications/notification_platform_bridge_mac.mm index 2ad35ce5..38097df 100644 --- a/chrome/browser/notifications/notification_platform_bridge_mac.mm +++ b/chrome/browser/notifications/notification_platform_bridge_mac.mm
@@ -10,6 +10,7 @@ #include "base/bind.h" #include "base/bind_helpers.h" #include "base/callback.h" +#include "base/callback_helpers.h" #include "base/i18n/number_formatting.h" #include "base/mac/bundle_locations.h" #include "base/mac/foundation_util.h" @@ -553,9 +554,11 @@ incognito:(BOOL)incognito notificationCenter:(NSUserNotificationCenter*)notificationCenter callback:(GetDisplayedNotificationsCallback)callback { + // Create a copyable version of the OnceCallback because ObjectiveC blocks + // copy all referenced variables via copy constructor. + auto copyable_callback = base::AdaptCallbackForRepeating(std::move(callback)); auto reply = ^(NSArray* alerts) { - std::unique_ptr<std::set<std::string>> displayedNotifications = - std::make_unique<std::set<std::string>>(); + std::set<std::string> displayedNotifications; for (NSUserNotification* toast in [notificationCenter deliveredNotifications]) { @@ -566,18 +569,18 @@ boolValue]; if ([toastProfileId isEqualToString:profileId] && incognito == incognitoNotification) { - displayedNotifications->insert(base::SysNSStringToUTF8([toast.userInfo + displayedNotifications.insert(base::SysNSStringToUTF8([toast.userInfo objectForKey:notification_constants::kNotificationId])); } } for (NSString* alert in alerts) - displayedNotifications->insert(base::SysNSStringToUTF8(alert)); + displayedNotifications.insert(base::SysNSStringToUTF8(alert)); base::PostTaskWithTraits( FROM_HERE, {content::BrowserThread::UI}, - base::Bind(callback, base::Passed(&displayedNotifications), - true /* supports_synchronization */)); + base::BindOnce(copyable_callback, std::move(displayedNotifications), + true /* supports_synchronization */)); }; [[self serviceProxy] getDisplayedAlertsForProfileId:profileId
diff --git a/chrome/browser/notifications/notification_platform_bridge_mac_unittest.mm b/chrome/browser/notifications/notification_platform_bridge_mac_unittest.mm index d980de7..bda17840 100644 --- a/chrome/browser/notifications/notification_platform_bridge_mac_unittest.mm +++ b/chrome/browser/notifications/notification_platform_bridge_mac_unittest.mm
@@ -70,13 +70,11 @@ return [builder buildUserNotification]; } - static void StoreNotificationCount( - int* out_notification_count, - std::unique_ptr<std::set<std::string>> notifications, - bool supports_synchronization) { + static void StoreNotificationCount(int* out_notification_count, + std::set<std::string> notifications, + bool supports_synchronization) { DCHECK(out_notification_count); - DCHECK(notifications); - *out_notification_count = notifications->size(); + *out_notification_count = notifications.size(); } std::unique_ptr<Notification> CreateBanner(const char* title,
diff --git a/chrome/browser/notifications/notification_platform_bridge_message_center.cc b/chrome/browser/notifications/notification_platform_bridge_message_center.cc index 531fd715..b29f3bcc 100644 --- a/chrome/browser/notifications/notification_platform_bridge_message_center.cc +++ b/chrome/browser/notifications/notification_platform_bridge_message_center.cc
@@ -132,10 +132,9 @@ Profile* profile, GetDisplayedNotificationsCallback callback) const { DCHECK_EQ(profile, profile_); - - auto displayed_notifications = std::make_unique<std::set<std::string>>( + auto displayed_notifications = g_browser_process->notification_ui_manager()->GetAllIdsByProfile( - NotificationUIManager::GetProfileID(profile_))); + NotificationUIManager::GetProfileID(profile_)); base::PostTaskWithTraits( FROM_HERE, {content::BrowserThread::UI},
diff --git a/chrome/browser/notifications/notification_platform_bridge_win.cc b/chrome/browser/notifications/notification_platform_bridge_win.cc index c847753..12aba339 100644 --- a/chrome/browser/notifications/notification_platform_bridge_win.cc +++ b/chrome/browser/notifications/notification_platform_bridge_win.cc
@@ -549,7 +549,7 @@ std::vector<mswr::ComPtr<winui::Notifications::IToastNotification>> notifications = GetNotifications(profile_id, incognito); - auto displayed_notifications = std::make_unique<std::set<std::string>>(); + std::set<std::string> displayed_notifications; for (const auto& notification : notifications) { NotificationLaunchId launch_id( GetNotificationLaunchId(notification.Get())); @@ -564,7 +564,7 @@ continue; } LogGetDisplayedLaunchIdStatus(GetDisplayedLaunchIdStatus::SUCCESS); - displayed_notifications->insert(launch_id.notification_id()); + displayed_notifications.insert(launch_id.notification_id()); } base::PostTaskWithTraits(
diff --git a/chrome/browser/notifications/notification_platform_bridge_win_interactive_uitest.cc b/chrome/browser/notifications/notification_platform_bridge_win_interactive_uitest.cc index 78d7dee..21b23ac 100644 --- a/chrome/browser/notifications/notification_platform_bridge_win_interactive_uitest.cc +++ b/chrome/browser/notifications/notification_platform_bridge_win_interactive_uitest.cc
@@ -120,11 +120,10 @@ quit_task.Run(); } - void DisplayedNotifications( - const base::RepeatingClosure& quit_task, - std::unique_ptr<std::set<std::string>> displayed_notifications, - bool supports_synchronization) { - displayed_notifications_ = *displayed_notifications; + void DisplayedNotifications(const base::RepeatingClosure& quit_task, + std::set<std::string> displayed_notifications, + bool supports_synchronization) { + displayed_notifications_ = std::move(displayed_notifications); quit_task.Run(); }
diff --git a/chrome/browser/notifications/platform_notification_service_impl.cc b/chrome/browser/notifications/platform_notification_service_impl.cc index b63f0a4..2fb6444 100644 --- a/chrome/browser/notifications/platform_notification_service_impl.cc +++ b/chrome/browser/notifications/platform_notification_service_impl.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/notifications/platform_notification_service_impl.h" +#include <set> #include <utility> #include <vector> @@ -212,19 +213,19 @@ void PlatformNotificationServiceImpl::GetDisplayedNotifications( BrowserContext* browser_context, - const DisplayedNotificationsCallback& callback) { + DisplayedNotificationsCallback callback) { DCHECK_CURRENTLY_ON(BrowserThread::UI); Profile* profile = Profile::FromBrowserContext(browser_context); // Tests will not have a message center. if (!profile || profile->AsTestingProfile()) { - auto displayed_notifications = std::make_unique<std::set<std::string>>(); - callback.Run(std::move(displayed_notifications), - false /* supports_synchronization */); + std::set<std::string> displayed_notifications; + std::move(callback).Run(std::move(displayed_notifications), + false /* supports_synchronization */); return; } NotificationDisplayServiceFactory::GetForProfile(profile)->GetDisplayed( - callback); + std::move(callback)); } int64_t PlatformNotificationServiceImpl::ReadNextPersistentNotificationId(
diff --git a/chrome/browser/notifications/platform_notification_service_impl.h b/chrome/browser/notifications/platform_notification_service_impl.h index cc1e4db..837a09c 100644 --- a/chrome/browser/notifications/platform_notification_service_impl.h +++ b/chrome/browser/notifications/platform_notification_service_impl.h
@@ -67,7 +67,7 @@ const std::string& notification_id) override; void GetDisplayedNotifications( content::BrowserContext* browser_context, - const DisplayedNotificationsCallback& callback) override; + DisplayedNotificationsCallback callback) override; int64_t ReadNextPersistentNotificationId( content::BrowserContext* browser_context) override; void RecordNotificationUkmEvent(
diff --git a/chrome/browser/notifications/stub_alert_dispatcher_mac.mm b/chrome/browser/notifications/stub_alert_dispatcher_mac.mm index f4e1988..a959dfd0 100644 --- a/chrome/browser/notifications/stub_alert_dispatcher_mac.mm +++ b/chrome/browser/notifications/stub_alert_dispatcher_mac.mm
@@ -54,20 +54,19 @@ incognito:(BOOL)incognito notificationCenter:(NSUserNotificationCenter*)notificationCenter callback:(GetDisplayedNotificationsCallback)callback { - std::unique_ptr<std::set<std::string>> displayedNotifications = - std::make_unique<std::set<std::string>>(); + std::set<std::string> displayedNotifications; for (NSUserNotification* toast in [notificationCenter deliveredNotifications]) { NSString* toastProfileId = [toast.userInfo objectForKey:notification_constants::kNotificationProfileId]; if ([toastProfileId isEqualToString:profileId]) { - displayedNotifications->insert(base::SysNSStringToUTF8([toast.userInfo + displayedNotifications.insert(base::SysNSStringToUTF8([toast.userInfo objectForKey:notification_constants::kNotificationId])); } } - callback.Run(std::move(displayedNotifications), - true /* supports_synchronization */); + std::move(callback).Run(std::move(displayedNotifications), + true /* supports_synchronization */); } - (NSArray*)alerts {
diff --git a/chrome/browser/notifications/stub_notification_display_service.cc b/chrome/browser/notifications/stub_notification_display_service.cc index 2206e24..d1de138 100644 --- a/chrome/browser/notifications/stub_notification_display_service.cc +++ b/chrome/browser/notifications/stub_notification_display_service.cc
@@ -208,11 +208,10 @@ void StubNotificationDisplayService::GetDisplayed( DisplayedNotificationsCallback callback) { - std::unique_ptr<std::set<std::string>> notifications = - std::make_unique<std::set<std::string>>(); + std::set<std::string> notifications; for (const auto& notification_data : notifications_) - notifications->insert(notification_data.notification.id()); + notifications.insert(notification_data.notification.id()); std::move(callback).Run(std::move(notifications), true /* supports_synchronization */);
diff --git a/chrome/browser/printing/cloud_print/privet_notifications.cc b/chrome/browser/printing/cloud_print/privet_notifications.cc index 196bd9d5..39b3868 100644 --- a/chrome/browser/printing/cloud_print/privet_notifications.cc +++ b/chrome/browser/printing/cloud_print/privet_notifications.cc
@@ -252,12 +252,12 @@ void PrivetNotificationService::AddNotification( int devices_active, bool device_added, - std::unique_ptr<std::set<std::string>> displayed_notifications, + std::set<std::string> displayed_notifications, bool supports_synchronization) { // If the UI is already open or a device was removed, we'll update the // existing notification but not add a new one. const bool notification_exists = - base::ContainsKey(*displayed_notifications, kPrivetNotificationID); + base::ContainsKey(displayed_notifications, kPrivetNotificationID); const bool add_new_notification = device_added && !local_discovery::LocalDiscoveryUIHandler::GetHasVisible();
diff --git a/chrome/browser/printing/cloud_print/privet_notifications.h b/chrome/browser/printing/cloud_print/privet_notifications.h index 29e601b..6e5b84d 100644 --- a/chrome/browser/printing/cloud_print/privet_notifications.h +++ b/chrome/browser/printing/cloud_print/privet_notifications.h
@@ -122,11 +122,10 @@ void OnNotificationsEnabledChanged(); void StartLister(); - void AddNotification( - int devices_active, - bool device_added, - std::unique_ptr<std::set<std::string>> displayed_notifications, - bool supports_synchronization); + void AddNotification(int devices_active, + bool device_added, + std::set<std::string> displayed_notifications, + bool supports_synchronization); // Virtual for testing. The returned delegate is refcounted. virtual PrivetNotificationDelegate* CreateNotificationDelegate(
diff --git a/chrome/browser/push_messaging/push_messaging_notification_manager.cc b/chrome/browser/push_messaging/push_messaging_notification_manager.cc index b2aab90..fd0a4890 100644 --- a/chrome/browser/push_messaging/push_messaging_notification_manager.cc +++ b/chrome/browser/push_messaging/push_messaging_notification_manager.cc
@@ -7,6 +7,7 @@ #include <stddef.h> #include <bitset> +#include <utility> #include "base/bind.h" #include "base/bind_helpers.h" @@ -103,12 +104,12 @@ void PushMessagingNotificationManager::EnforceUserVisibleOnlyRequirements( const GURL& origin, int64_t service_worker_registration_id, - const base::Closure& message_handled_closure) { + base::OnceClosure message_handled_closure) { DCHECK_CURRENTLY_ON(BrowserThread::UI); #if defined(OS_CHROMEOS) if (ShouldSkipUserVisibleOnlyRequirements(origin)) { - message_handled_closure.Run(); + std::move(message_handled_closure).Run(); return; } #endif @@ -117,39 +118,18 @@ scoped_refptr<PlatformNotificationContext> notification_context = GetStoragePartition(profile_, origin)->GetPlatformNotificationContext(); - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::BindOnce( - &PlatformNotificationContext:: - ReadAllNotificationDataForServiceWorkerRegistration, - notification_context, origin, service_worker_registration_id, - base::Bind(&PushMessagingNotificationManager:: - DidGetNotificationsFromDatabaseIOProxy, - weak_factory_.GetWeakPtr(), origin, - service_worker_registration_id, message_handled_closure))); -} - -// static -void PushMessagingNotificationManager::DidGetNotificationsFromDatabaseIOProxy( - const base::WeakPtr<PushMessagingNotificationManager>& ui_weak_ptr, - const GURL& origin, - int64_t service_worker_registration_id, - const base::Closure& message_handled_closure, - bool success, - const std::vector<NotificationDatabaseData>& data) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::UI}, + notification_context->ReadAllNotificationDataForServiceWorkerRegistration( + origin, service_worker_registration_id, base::BindOnce( &PushMessagingNotificationManager::DidGetNotificationsFromDatabase, - ui_weak_ptr, origin, service_worker_registration_id, - message_handled_closure, success, data)); + weak_factory_.GetWeakPtr(), origin, service_worker_registration_id, + std::move(message_handled_closure))); } void PushMessagingNotificationManager::DidGetNotificationsFromDatabase( const GURL& origin, int64_t service_worker_registration_id, - const base::Closure& message_handled_closure, + base::OnceClosure message_handled_closure, bool success, const std::vector<NotificationDatabaseData>& data) { DCHECK_CURRENTLY_ON(BrowserThread::UI); @@ -201,7 +181,7 @@ base::BindOnce(&PushMessagingNotificationManager::ProcessSilentPush, weak_factory_.GetWeakPtr(), origin, service_worker_registration_id, - message_handled_closure)); + std::move(message_handled_closure))); return; } @@ -216,7 +196,7 @@ content::mojom::PushUserVisibleStatus::NOT_REQUIRED_BUT_SHOWN); } - message_handled_closure.Run(); + std::move(message_handled_closure).Run(); } bool PushMessagingNotificationManager::IsTabVisible( @@ -255,7 +235,7 @@ void PushMessagingNotificationManager::ProcessSilentPush( const GURL& origin, int64_t service_worker_registration_id, - const base::Closure& message_handled_closure, + base::OnceClosure message_handled_closure, bool silent_push_allowed) { DCHECK_CURRENTLY_ON(BrowserThread::UI); @@ -263,7 +243,7 @@ if (silent_push_allowed) { RecordUserVisibleStatus(content::mojom::PushUserVisibleStatus:: REQUIRED_BUT_NOT_SHOWN_USED_GRACE); - message_handled_closure.Run(); + std::move(message_handled_closure).Run(); return; } @@ -283,45 +263,26 @@ int64_t next_persistent_notification_id = PlatformNotificationServiceImpl::GetInstance() ->ReadNextPersistentNotificationId(profile_); - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::BindOnce(&PlatformNotificationContext::WriteNotificationData, - notification_context, next_persistent_notification_id, - service_worker_registration_id, origin, database_data, - base::Bind(&PushMessagingNotificationManager:: - DidWriteNotificationDataIOProxy, - weak_factory_.GetWeakPtr(), origin, - database_data.notification_data, - message_handled_closure))); -} -// static -void PushMessagingNotificationManager::DidWriteNotificationDataIOProxy( - const base::WeakPtr<PushMessagingNotificationManager>& ui_weak_ptr, - const GURL& origin, - const blink::PlatformNotificationData& notification_data, - const base::Closure& message_handled_closure, - bool success, - const std::string& notification_id) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::UI}, + notification_context->WriteNotificationData( + next_persistent_notification_id, service_worker_registration_id, origin, + database_data, base::BindOnce( &PushMessagingNotificationManager::DidWriteNotificationData, - ui_weak_ptr, origin, notification_data, message_handled_closure, - success, notification_id)); + weak_factory_.GetWeakPtr(), origin, database_data.notification_data, + std::move(message_handled_closure))); } void PushMessagingNotificationManager::DidWriteNotificationData( const GURL& origin, const blink::PlatformNotificationData& notification_data, - const base::Closure& message_handled_closure, + base::OnceClosure message_handled_closure, bool success, const std::string& notification_id) { DCHECK_CURRENTLY_ON(BrowserThread::UI); if (!success) { DLOG(ERROR) << "Writing forced notification to database should not fail"; - message_handled_closure.Run(); + std::move(message_handled_closure).Run(); return; } @@ -333,7 +294,7 @@ profile_, notification_id, GURL() /* service_worker_scope */, origin, notification_data, blink::NotificationResources()); - message_handled_closure.Run(); + std::move(message_handled_closure).Run(); } #if defined(OS_CHROMEOS)
diff --git a/chrome/browser/push_messaging/push_messaging_notification_manager.h b/chrome/browser/push_messaging/push_messaging_notification_manager.h index 13c0b53..626d82a 100644 --- a/chrome/browser/push_messaging/push_messaging_notification_manager.h +++ b/chrome/browser/push_messaging/push_messaging_notification_manager.h
@@ -53,7 +53,7 @@ void EnforceUserVisibleOnlyRequirements( const GURL& origin, int64_t service_worker_registration_id, - const base::Closure& message_handled_closure); + base::OnceClosure message_handled_closure); private: FRIEND_TEST_ALL_PREFIXES(PushMessagingNotificationManagerTest, IsTabVisible); @@ -63,18 +63,10 @@ PushMessagingNotificationManagerTest, SkipEnforceUserVisibleOnlyRequirementsForAndroidMessages); - static void DidGetNotificationsFromDatabaseIOProxy( - const base::WeakPtr<PushMessagingNotificationManager>& ui_weak_ptr, - const GURL& origin, - int64_t service_worker_registration_id, - const base::Closure& message_handled_closure, - bool success, - const std::vector<content::NotificationDatabaseData>& data); - void DidGetNotificationsFromDatabase( const GURL& origin, int64_t service_worker_registration_id, - const base::Closure& message_handled_closure, + base::OnceClosure message_handled_closure, bool success, const std::vector<content::NotificationDatabaseData>& data); @@ -87,21 +79,13 @@ void ProcessSilentPush(const GURL& origin, int64_t service_worker_registration_id, - const base::Closure& message_handled_closure, + base::OnceClosure message_handled_closure, bool silent_push_allowed); - static void DidWriteNotificationDataIOProxy( - const base::WeakPtr<PushMessagingNotificationManager>& ui_weak_ptr, - const GURL& origin, - const blink::PlatformNotificationData& notification_data, - const base::Closure& message_handled_closure, - bool success, - const std::string& notification_id); - void DidWriteNotificationData( const GURL& origin, const blink::PlatformNotificationData& notification_data, - const base::Closure& message_handled_closure, + base::OnceClosure message_handled_closure, bool success, const std::string& notification_id);
diff --git a/chrome/browser/push_messaging/push_messaging_service_impl.cc b/chrome/browser/push_messaging/push_messaging_service_impl.cc index d13249f..80cbb47 100644 --- a/chrome/browser/push_messaging/push_messaging_service_impl.cc +++ b/chrome/browser/push_messaging/push_messaging_service_impl.cc
@@ -331,8 +331,7 @@ switches::kAllowSilentPush)) { notification_manager_.EnforceUserVisibleOnlyRequirements( requesting_origin, service_worker_registration_id, - base::AdaptCallbackForRepeating( - completion_closure_runner.Release())); + completion_closure_runner.Release()); } break; case content::mojom::PushDeliveryStatus::SERVICE_WORKER_ERROR:
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_am.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_am.xtb index 9dc4c513..f81c2ed 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_am.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_am.xtb
@@ -936,6 +936,7 @@ <translation id="8153880621934657047">በሠንጠረዥ ውስጥ አይደሉም።</translation> <translation id="817440585505441544">{COUNT,plural, =1{ሰረዘዘብጥ}one{# ሰረዘዘብጦች}other{# ሰረዘዘብጦች}}</translation> <translation id="8179976553408161302">አስገባ</translation> +<translation id="8183813379996435469">የChromeVox ቋንቋን በራስ-ሰር አግኝ እና ቀይር።</translation> <translation id="8184828902145951186">ረድፍ</translation> <translation id="8186185314313222077">ሙሉ ማያ ገጽ ቀያይር</translation> <translation id="8199231515320852133">የአሁኑ ሕዋስ ራስጌዎችን አስታውቅ</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ar.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ar.xtb index 94f88bd7..ec704ceb 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ar.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ar.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">ليس بداخل الجدول.</translation> <translation id="817440585505441544">{COUNT,plural, =1{شرطة سفلية واحدة}zero{# underscores}two{شرطتان سفليتان (#)}few{# شرطات سفلية}many{# شرطة سفلية}other{# من الشرطات السفلية}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">يمكن رصد لغة ChromeVox وتبديلها تلقائيًا.</translation> <translation id="8184828902145951186">الصف</translation> <translation id="8186185314313222077">تبديل وضع ملء الشاشة</translation> <translation id="8199231515320852133">الإعلان عن عناوين الخلية الحالية</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bg.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bg.xtb index 04d2f5d..e54fa82b 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bg.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bg.xtb
@@ -936,6 +936,7 @@ <translation id="8153880621934657047">Не сте в таблицата.</translation> <translation id="817440585505441544">{COUNT,plural, =1{долна черта}other{# долни черти}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">Автоматично откриване и превключване на езика на ChromeVox.</translation> <translation id="8184828902145951186">ред</translation> <translation id="8186185314313222077">превключване на режима на цял екран</translation> <translation id="8199231515320852133">Съобщаване на заглавките за текущата клетка</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bn.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bn.xtb index ef587a6..e329eb1 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bn.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bn.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">সারণীর ভিতরে নয়৷</translation> <translation id="817440585505441544">{COUNT,plural, =1{আন্ডারস্কোর}one{#টি আন্ডারস্কোর}other{#টি আন্ডারস্কোর}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">নিজে থেকেই শনাক্ত করে ChromeVox-এর ভাষা পরিবর্তন করবে।</translation> <translation id="8184828902145951186">সারি</translation> <translation id="8186185314313222077">পূর্ণ স্ক্রিন টগল করুন</translation> <translation id="8199231515320852133">বর্তমান কক্ষের শিরোলেখ ঘোষণা করুন</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ca.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ca.xtb index 41d1f15..19280b9 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ca.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ca.xtb
@@ -936,6 +936,7 @@ <translation id="8153880621934657047">No sou dins la taula.</translation> <translation id="817440585505441544">{COUNT,plural, =1{ratlla baixa}other{# ratlles baixes}}</translation> <translation id="8179976553408161302">Retorn</translation> +<translation id="8183813379996435469">Detecta i canvia automàticament l'idioma de ChromeVox.</translation> <translation id="8184828902145951186">fila</translation> <translation id="8186185314313222077">activa la pantalla completa</translation> <translation id="8199231515320852133">Presenta les capçaleres de la cel·la actual.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_cs.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_cs.xtb index 5d27dfcc..b09c0d6 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_cs.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_cs.xtb
@@ -936,6 +936,7 @@ <translation id="8153880621934657047">Mimo tabulku.</translation> <translation id="817440585505441544">{COUNT,plural, =1{podtržítko}few{# podtržítka}many{# underscores}other{# podtržítek}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">Automaticky zjistit a přepnout jazyk nástroje ChromeVox</translation> <translation id="8184828902145951186">řádek</translation> <translation id="8186185314313222077">přepnout zobrazení na celou obrazovku</translation> <translation id="8199231515320852133">Oznámit záhlaví aktuální buňky</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_da.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_da.xtb index aae49b28..c59b7e44 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_da.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_da.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">Ikke i tabel.</translation> <translation id="817440585505441544">{COUNT,plural, =1{understregning}one{# understregninger}other{# understregninger}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">Registrer og skift automatisk ChromeVox-sprog.</translation> <translation id="8184828902145951186">rk</translation> <translation id="8186185314313222077">slå fuld skærm til eller fra</translation> <translation id="8199231515320852133">Offentliggør overskrifterne for den aktuelle celle</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_de.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_de.xtb index 58025e25..3e2c50b 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_de.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_de.xtb
@@ -936,6 +936,7 @@ <translation id="8153880621934657047">Nicht in der Tabelle</translation> <translation id="817440585505441544">{COUNT,plural, =1{Unterstrich}other{# Unterstriche}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">ChromeVox-Sprache automatisch erkennen und wechseln.</translation> <translation id="8184828902145951186">Zeile</translation> <translation id="8186185314313222077">Vollbildmodus an oder aus</translation> <translation id="8199231515320852133">Überschriften der aktuellen Zelle ansagen</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es-419.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es-419.xtb index d7c7b321..05840d96 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es-419.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es-419.xtb
@@ -845,89 +845,89 @@ <translation id="8037651341025652929">Conclusión</translation> <translation id="8042761080832772327">Editar texto, entrada de búsqueda</translation> <translation id="8049189770492311300">Temporizador</translation> -<translation id="8056782883599416672">{"ar": "Árabe", - "as": "Asamés", - "aw": "Avadhi", - "be": "Bengalí", - "bg": "Búlgaro", - "bh": "Bihari", - "bo": "Tibetano", - "br": "Braj", - "ca": "Catalán", - "ckb": "Sorani", - "cs": "Checo", - "cy": "Galés", - "da": "Danés", - "de": "Alemán", - "de_CH": "Alemán (Suiza)", - "de_DE": "Alemán (Alemania)", - "dra": "Drávida", - "el": "Griego", - "en": "Inglés", - "en_CA": "Inglés (Canadá)", - "en_GB": "Inglés (Reino Unido)", - "en_US": "Inglés (Estados Unidos)", - "eo": "Esperanto", - "es": "Español", - "et": "Estonio", - "fa": "Persa", - "fr": "Francés", - "fr_CA": "Francés (Canadá)", - "fr_FR": "Francés (Francia)", - "fi": "Finés", - "ga": "Irlandés", - "gd": "Gaélico", - "gon": "Gondi", - "gu": "Gujarati", - "he": "Hebreo", - "hi": "Hindi", - "hr": "Corata", - "hu": "Húngaro", - "hy": "Armenio", - "is": "Islandés", - "it": "Italiano", - "iu": "Lenguas inuit", - "ka": "Canarés", - "kh": "Khasi", - "ko": "Coreano", - "kok": "Konkani", - "kru": "Kurukh", - "ks": "Cachemir", - "lt": "Lituano", - "lv": "Letón", - "mao": "Maorí", - "ml": "Malayalam", - "mt": "Maltés", - "mwr": "Marwari", - "mn": "Mongol", - "mun": "Munda", - "nb": "Noruego (bokmål)", - "ne": "Nepalés", - "nl": "Neerlandés", - "no": "Noruego", - "or": "Oriya", - "pi": "Pali", - "pl": "Polaco", - "pt": "Portugués", - "pu": "Panyabí", - "ro": "Rumano", - "ru": "Ruso", - "sa": "Sánscrito", - "si": "Sindhi", - "sin": "Cingalés", - "sk": "Eslovaco", - "sl": "Eslovenio", - "sr": "Serbio", - "sv": "Sueco", - "ta": "Tamil", - "te": "Telugu", - "tr": "Turco", - "tsn": "Afrikaans", - "uk": "Ucraniano", - "ur": "Urdu", - "vi": "Vietnamita", - "zh": "Chino", - "zh_TW": "Chino (tradicional)"}</translation> +<translation id="8056782883599416672">{"ar": "árabe", + "as": "asamés", + "aw": "avadhi", + "be": "bengalí", + "bg": "búlgaro", + "bh": "bihari", + "bo": "tibetano", + "br": "braj", + "ca": "catalán", + "ckb": "sorani", + "cs": "checo", + "cy": "galés", + "da": "danés", + "de": "alemán", + "de_CH": "alemán (Suiza)", + "de_DE": "alemán (Alemania)", + "dra": "drávida", + "el": "griego", + "en": "inglés", + "en_CA": "inglés (Canadá)", + "en_GB": "inglés (Reino Unido)", + "en_US": "inglés (Estados Unidos)", + "eo": "esperanto", + "es": "español", + "et": "estonio", + "fa": "persa", + "fr": "francés", + "fr_CA": "francés (Canadá)", + "fr_FR": "francés (Francia)", + "fi": "finés", + "ga": "irlandés", + "gd": "gaélico", + "gon": "gondi", + "gu": "gujarati", + "he": "hebreo", + "hi": "hindi", + "hr": "corata", + "hu": "húngaro", + "hy": "armenio", + "is": "islandés", + "it": "italiano", + "iu": "lenguas inuit", + "ka": "canarés", + "kh": "khasi", + "ko": "coreano", + "kok": "konkani", + "kru": "kurukh", + "ks": "cachemir", + "lt": "lituano", + "lv": "letón", + "mao": "maorí", + "ml": "malayalam", + "mt": "maltés", + "mwr": "marwari", + "mn": "mongol", + "mun": "munda", + "nb": "noruego (bokmål)", + "ne": "nepalés", + "nl": "neerlandés", + "no": "noruego", + "or": "oriya", + "pi": "pali", + "pl": "polaco", + "pt": "portugués", + "pu": "panyabí", + "ro": "rumano", + "ru": "ruso", + "sa": "sánscrito", + "si": "sindhi", + "sin": "cingalés", + "sk": "eslovaco", + "sl": "eslovenio", + "sr": "serbio", + "sv": "sueco", + "ta": "tamil", + "te": "telugu", + "tr": "turco", + "tsn": "afrikaans", + "uk": "ucraniano", + "ur": "urdu", + "vi": "vietnamita", + "zh": "chino", + "zh_TW": "chino (tradicional)"}</translation> <translation id="8065607967589909823">La selección es</translation> <translation id="8066678206530322333">Banner</translation> <translation id="8076492880354921740">Pestañas</translation> @@ -937,6 +937,7 @@ <translation id="8153880621934657047">No está dentro de la tabla.</translation> <translation id="817440585505441544">{COUNT,plural, =1{guion bajo}other{# guiones bajos}}</translation> <translation id="8179976553408161302">Intro</translation> +<translation id="8183813379996435469">Detectar y cambiar automáticamente el idioma de ChromeVox</translation> <translation id="8184828902145951186">fila</translation> <translation id="8186185314313222077">activar o desactivar pantalla completa</translation> <translation id="8199231515320852133">Indicar los encabezados de la celda actual</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es.xtb index a451834e..639b4d4 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">No está dentro de la tabla.</translation> <translation id="817440585505441544">{COUNT,plural, =1{guion bajo}other{# guiones bajos}}</translation> <translation id="8179976553408161302">Intro</translation> +<translation id="8183813379996435469">Detecta y cambia el idioma de ChromeVox automáticamente.</translation> <translation id="8184828902145951186">fila</translation> <translation id="8186185314313222077">activar pantalla completa</translation> <translation id="8199231515320852133">Indica los encabezados de la celda actual</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_et.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_et.xtb index 8269e57..7c702316 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_et.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_et.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">Ei ole tabelis.</translation> <translation id="817440585505441544">{COUNT,plural, =1{alljoon}other{# alljoont}}</translation> <translation id="8179976553408161302">Sisestusklahv</translation> +<translation id="8183813379996435469">ChromeVoxi keele automaatne tuvastamine ja vahetamine</translation> <translation id="8184828902145951186">rida</translation> <translation id="8186185314313222077">lülitab täisekraani sisse/välja</translation> <translation id="8199231515320852133">Esita praeguse lahtri päised</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fa.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fa.xtb index 34c8125..67b9c99c 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fa.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fa.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">خارج از جدول</translation> <translation id="817440585505441544">{COUNT,plural, =1{زیرخط}one{# زیرخط}other{# زیرخط}}</translation> <translation id="8179976553408161302">ورود</translation> +<translation id="8183813379996435469">زبان ChromeVox را بهطور خودکار شناسایی کنید و تغییر دهید.</translation> <translation id="8184828902145951186">ردیف</translation> <translation id="8186185314313222077">جابهجایی به حالت تمام صفحه</translation> <translation id="8199231515320852133">اعلان عناوین سلول کنونی</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fi.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fi.xtb index 1bf81f8..8dcac10 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fi.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fi.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">Et ole taulukossa.</translation> <translation id="817440585505441544">{COUNT,plural, =1{alaviiva}other{# alaviivaa}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">Tunnista ja vaihda ChromeVox-kieli automaattisesti.</translation> <translation id="8184828902145951186">rivi</translation> <translation id="8186185314313222077">Ota koko näytön tila käyttöön tai poista se käytöstä.</translation> <translation id="8199231515320852133">Ilmoita nykyisen solun otsikot</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fil.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fil.xtb index 266a92d..6e10a4e4 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fil.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fil.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">Wala sa loob ng talahanayan.</translation> <translation id="817440585505441544">{COUNT,plural, =1{underscore}one{# underscore}other{# na underscore}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">Awtomatikong i-detect at palitan ang wika ng ChromeVox.</translation> <translation id="8184828902145951186">row</translation> <translation id="8186185314313222077">i-toggle ang full screen</translation> <translation id="8199231515320852133">Ianunsyo ang mga header ng kasalukuyang cell</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fr.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fr.xtb index d2f7511..da4088d 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fr.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fr.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">Hors du tableau</translation> <translation id="817440585505441544">{COUNT,plural, =1{trait de soulignement}one{# trait de soulignement}other{# traits de soulignement}}</translation> <translation id="8179976553408161302">Entrée</translation> +<translation id="8183813379996435469">Détecter et modifier automatiquement la langue utilisée avec ChromeVox</translation> <translation id="8184828902145951186">ligne</translation> <translation id="8186185314313222077">activer/désactiver le mode plein écran</translation> <translation id="8199231515320852133">Énoncer les en-têtes de la cellule actuelle</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_gu.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_gu.xtb index f8e4d51..b1d7c45 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_gu.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_gu.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">કોષ્ટકની અંદર નથી</translation> <translation id="817440585505441544">{COUNT,plural, =1{અંડરસ્કોર}one{# અંડરસ્કોર}other{# અંડરસ્કોર}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">ChromeVox ભાષા ઑટોમૅટિક રીતે શોધો અને તેના પર સ્વિચ કરો.</translation> <translation id="8184828902145951186">પંક્તિ</translation> <translation id="8186185314313222077">પૂર્ણ સ્ક્રીન ટોગલ કરો</translation> <translation id="8199231515320852133">ચાલુ કોષના મથાળાની ઘોષણા કરો</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb index 6ca3946..3d0d70c 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">तालिका में नहीं है.</translation> <translation id="817440585505441544">{COUNT,plural, =1{अंडरस्कोर}one{# अंडरस्कोर}other{# अंडरस्कोर}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">ChromeVox भाषा का अपने आप पता लगाएं और बदलें.</translation> <translation id="8184828902145951186">पंक्ति</translation> <translation id="8186185314313222077">पूर्ण स्क्रीन टॉगल करें</translation> <translation id="8199231515320852133">वर्तमान सेल के शीर्षलेखों को प्रदर्शित करें</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hu.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hu.xtb index dcf76d5..e133688 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hu.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hu.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">Nem táblázatban van.</translation> <translation id="817440585505441544">{COUNT,plural, =1{alulvonás}other{# alulvonás}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">A ChromeVox nyelvének automatikus észlelése és váltása.</translation> <translation id="8184828902145951186">sor</translation> <translation id="8186185314313222077">váltás teljes képernyős módra</translation> <translation id="8199231515320852133">Aktuális cella fejléceinek felolvasása</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_it.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_it.xtb index 645f2ac..7c4c43d 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_it.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_it.xtb
@@ -936,6 +936,7 @@ <translation id="8153880621934657047">Non sei all'interno della tabella.</translation> <translation id="817440585505441544">{COUNT,plural, =1{carattere di sottolineatura}other{# caratteri di sottolineatura}}</translation> <translation id="8179976553408161302">Invio</translation> +<translation id="8183813379996435469">Rileva e cambia automaticamente la lingua di ChromeVox.</translation> <translation id="8184828902145951186">riga</translation> <translation id="8186185314313222077">attiva/disattiva schermo intero</translation> <translation id="8199231515320852133">Pronuncia le intestazioni della cella corrente</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_iw.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_iw.xtb index 8726106..6d18cf3 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_iw.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_iw.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">לא בתוך טבלה.</translation> <translation id="817440585505441544">{COUNT,plural, =1{קו תחתון}two{# סימני קו תחתון}many{# סימני קו תחתון}other{# סימני קו תחתון}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">זיהוי ושינוי אוטומטיים של שפת ChromeVox.</translation> <translation id="8184828902145951186">שורה</translation> <translation id="8186185314313222077">החלפה של מצב מסך מלא</translation> <translation id="8199231515320852133">הכרזה על הכותרות של התא הנוכחי</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ja.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ja.xtb index 77578de..2a89ecb 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ja.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ja.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">表の中ではありません。</translation> <translation id="817440585505441544">{COUNT,plural, =1{アンダースコア}other{# 個のアンダースコア}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">ChromeVox の言語を自動的に検出して切り替える。</translation> <translation id="8184828902145951186">行</translation> <translation id="8186185314313222077">全画面表示の切り替え</translation> <translation id="8199231515320852133">現在のセルの見出しを読み上げる</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb index c1cd1f8b..3df2f61 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">ಕೋಷ್ಟಕದ ಒಳಗೆ ಇಲ್ಲ.</translation> <translation id="817440585505441544">{COUNT,plural, =1{ಅಂಡರ್ಸ್ಕೋರ್}one{# ಅಂಡರ್ಸ್ಕೋರ್ಗಳು}other{# ಅಂಡರ್ಸ್ಕೋರ್ಗಳು}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">ChromeVox ಭಾಷೆಯನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪತ್ತೆಮಾಡಿ ಮತ್ತು ಬದಲಿಸಿ.</translation> <translation id="8184828902145951186">ಸಾಲು</translation> <translation id="8186185314313222077">ಪೂರ್ಣ ಪರದೆಯನ್ನು ಟಾಗಲ್ ಮಾಡಿ</translation> <translation id="8199231515320852133">ಪ್ರಸ್ತುತ ಸೆಲ್ನ ಶಿರೋನಾಮೆಗಳನ್ನು ಪ್ರಕಟಿಸಿ</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ko.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ko.xtb index 0d07d77f..f580904 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ko.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ko.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">표 내부가 아닙니다.</translation> <translation id="817440585505441544">{COUNT,plural, =1{밑줄}other{밑줄 기호 #개}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">ChromeVox 언어를 자동으로 감지하고 전환합니다.</translation> <translation id="8184828902145951186">행</translation> <translation id="8186185314313222077">전체화면 전환</translation> <translation id="8199231515320852133">현재 셀의 헤더 알림</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lv.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lv.xtb index 4f15aae..b5225d5 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lv.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lv.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">Nav tabulas iekšpusē.</translation> <translation id="817440585505441544">{COUNT,plural, =1{pasvītra}zero{# pasvītru}one{# pasvītra}other{# pasvītras}}</translation> <translation id="8179976553408161302">Ievadīt</translation> +<translation id="8183813379996435469">Automātiski noteikt un pārslēgt ChromeVox valodu.</translation> <translation id="8184828902145951186">rinda</translation> <translation id="8186185314313222077">pārslēgt pilnekrāna režīmu</translation> <translation id="8199231515320852133">Paziņot pašreizējās šūnas virsrakstus</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ml.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ml.xtb index a4059319..db63105 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ml.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ml.xtb
@@ -844,7 +844,7 @@ <translation id="8037651341025652929">നിഗമനം</translation> <translation id="8042761080832772327">വാചകം എഡിറ്റുചെയ്യുക, തിരയൽ എൻട്രി</translation> <translation id="8049189770492311300">ടൈമർ</translation> -<translation id="8056782883599416672">{"ar": "അറബിക്ക്", +<translation id="8056782883599416672">{"ar": "അറബിക്", "as": "അസമീസ്", "aw": "അവധി", "be": "ബംഗാളി", @@ -891,7 +891,7 @@ "ko": "കൊറിയന്", "kok": "കൊങ്കണി", "kru": "കുറൂക്ക്", - "ks": "കാശ്മീരി", + "ks": "കശ്മീരി", "lt": "ലിത്വാനിയന്", "lv": "ലാറ്റ്വിയൻ", "mao": "മാവോരി", @@ -936,6 +936,7 @@ <translation id="8153880621934657047">പട്ടികയ്ക്കുള്ളിലല്ല.</translation> <translation id="817440585505441544">{COUNT,plural, =1{അടിവര}other{# അടിവരകൾ}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">സ്വയമേവ കണ്ടെത്തി, ChromeVox ഭാഷയിലേക്ക് മാറുന്നു.</translation> <translation id="8184828902145951186">വരി</translation> <translation id="8186185314313222077">പൂർണ്ണ സ്ക്രീൻ ടോഗിൾ ചെയ്യുക</translation> <translation id="8199231515320852133">നിലവിലുള്ള സെല്ലിന്റെ ശീർഷകങ്ങൾ അറിയിക്കുക</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb index b4438eb..2e79ef49 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb
@@ -936,6 +936,7 @@ <translation id="8153880621934657047">सारणीमध्ये नाही.</translation> <translation id="817440585505441544">{COUNT,plural, =1{अंडरस्कोअर}one{# अंडरस्कोअर}other{# अंडरस्कोअर}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">ChromeVox भाषा आपोआप शोधा आणि स्विच करा.</translation> <translation id="8184828902145951186">पंक्ती</translation> <translation id="8186185314313222077">फुल स्क्रीन टॉगल करा</translation> <translation id="8199231515320852133">सध्याच्या सेलची शीर्षके घोषित करा</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_nl.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_nl.xtb index 22a8fabc..47fd1f9 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_nl.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_nl.xtb
@@ -935,6 +935,7 @@ <translation id="8153880621934657047">Niet in tabel.</translation> <translation id="817440585505441544">{COUNT,plural, =1{underscore}other{# underscores}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">De ChromeVox-taal automatisch detecteren en schakelen.</translation> <translation id="8184828902145951186">rij</translation> <translation id="8186185314313222077">volledig scherm in- of uitschakelen</translation> <translation id="8199231515320852133">De koppen van de huidige cel melden</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_no.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_no.xtb index c65af78..d7c548f 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_no.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_no.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">Ikke inne i tabellen.</translation> <translation id="817440585505441544">{COUNT,plural, =1{understrek}other{# understreker}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">Oppdag og bytt ChromeVox-språk automatisk.</translation> <translation id="8184828902145951186">rad</translation> <translation id="8186185314313222077">slå av/på fullskjerm</translation> <translation id="8199231515320852133">Kunngjør overskriftene i den nåværende cellen</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-BR.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-BR.xtb index 6076b84..04c74e2 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-BR.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-BR.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">Não está dentro da tabela.</translation> <translation id="817440585505441544">{COUNT,plural, =1{sublinhado}one{# sublinhados}other{# sublinhados}}</translation> <translation id="8179976553408161302">Entrar</translation> +<translation id="8183813379996435469">Detectar e alternar automaticamente o idioma do ChromeVox.</translation> <translation id="8184828902145951186">linha</translation> <translation id="8186185314313222077">alternar para o modo tela cheia</translation> <translation id="8199231515320852133">Anunciar cabeçalhos da célula atual</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ro.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ro.xtb index fe3b8191..ce1058a 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ro.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ro.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">Nu vă aflați în interiorul tabelului.</translation> <translation id="817440585505441544">{COUNT,plural, =1{caracter de subliniere}few{# caractere de subliniere}other{# de caractere de subliniere}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">Detectează și comută automat limba ChromeVox.</translation> <translation id="8184828902145951186">rând</translation> <translation id="8186185314313222077">activează/dezactivează ecranul complet</translation> <translation id="8199231515320852133">Anunță anteturile celulei curente</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb index 0d682ea..bb617e8 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">Ошибка. Перейдите в таблицу.</translation> <translation id="817440585505441544">{COUNT,plural, =1{символ подчеркивания}one{# символ подчеркивания}few{# символа подчеркивания}many{# символов подчеркивания}other{# underscores}}</translation> <translation id="8179976553408161302">ВВОД</translation> +<translation id="8183813379996435469">Автоматически определять и переключать язык ChromeVox</translation> <translation id="8184828902145951186">стрк</translation> <translation id="8186185314313222077">включить полноэкранный режим</translation> <translation id="8199231515320852133">Назвать заголовки текущей ячейки</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sl.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sl.xtb index e908c918..3f15b1a 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sl.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sl.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">Zunaj tabele.</translation> <translation id="817440585505441544">{COUNT,plural, =1{podčrtaj}one{# podčrtaj}two{# podčrtaja}few{# podčrtaji}other{# podčrtajev}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">Samodejno zaznaj in preklopi jezik ChromeVoxa.</translation> <translation id="8184828902145951186">vrstica</translation> <translation id="8186185314313222077">preklop celozaslonskega načina</translation> <translation id="8199231515320852133">Obvestilo o glavah trenutne celice</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sr.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sr.xtb index dd34de1a..2fa590a 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sr.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sr.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">Нисте унутар табеле.</translation> <translation id="817440585505441544">{COUNT,plural, =1{доња црта}one{# доња црта}few{# доње црте}other{# доњих црта}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">Аутоматски откривај и мењај језик ChromeVox-а.</translation> <translation id="8184828902145951186">ред</translation> <translation id="8186185314313222077">укључи/искључи цео екран</translation> <translation id="8199231515320852133">Објављивање заглавља актуелне ћелије</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sv.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sv.xtb index 35dd59a..b2602ca5 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sv.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sv.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">Inte i tabellen.</translation> <translation id="817440585505441544">{COUNT,plural, =1{understreck}other{# understreck}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">Identifiera och byt ChromeVox-språk automatiskt.</translation> <translation id="8184828902145951186">rad</translation> <translation id="8186185314313222077">helskärmsläge av/på</translation> <translation id="8199231515320852133">Läs upp rubriker för den aktuella cellen</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sw.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sw.xtb index dff9d3a..aabd70e0 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sw.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sw.xtb
@@ -936,6 +936,7 @@ <translation id="8153880621934657047">Haimo ndani ya jedwali.</translation> <translation id="817440585505441544">{COUNT,plural, =1{kistari cha chini}other{vistari # vya chini}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">Tambua na ubadilishe lugha ya ChromeVox kiotomatiki.</translation> <translation id="8184828902145951186">safu mlalo</translation> <translation id="8186185314313222077">geuza skrini nzima</translation> <translation id="8199231515320852133">Tangaza vichwa vya kisanduku cha sasa</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ta.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ta.xtb index 5688048..4644eb2b 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ta.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ta.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">அட்டவணையின் உள்ளே கிடையாது.</translation> <translation id="817440585505441544">{COUNT,plural, =1{அடிக்கோடு}other{# அடிக்கோடுகள்}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">ChromeVox மொழியைத் தானாகக் கண்டறிந்து, அதற்கு மாறு.</translation> <translation id="8184828902145951186">வரிசை</translation> <translation id="8186185314313222077">முழுத்திரை நிலையை மாற்றும்</translation> <translation id="8199231515320852133">நடப்புக் கலத்தின் தலைப்புகளை அறிவிக்கும்</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_te.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_te.xtb index 797977a..56600cba 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_te.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_te.xtb
@@ -11,7 +11,7 @@ <translation id="1025074108959230262">స్టిక్కీ మోడ్ నిలిపివేయబడింది</translation> <translation id="1031961866430398710">తర్వాత</translation> <translation id="1038643060055067718">పంక్తులు:</translation> -<translation id="1038795173450935438">పేజీలోని అంశాల మధ్య ముందుకు వెళ్లడానికి, శోధన + కుడివైపు బాణాన్ని లేదా వెనుకకు వెళ్లడానికి శోధన + ఎడమవైపు బాణాన్ని నొక్కండి. తర్వాతి పంక్తికి వెళ్లడానికి, శోధన + క్రిందివైపు బాణాన్ని నొక్కండి. మునుపటి పంక్తికి వెళ్లడానికి, శోధన + ఎగువవైపు బాణాన్ని ఉపయోగించండి. మీరు క్లిక్ చేయాలనుకునే అంశానికి చేరుకున్నప్పుడు, శోధన + స్పేస్ను క్లిక్ చేయండి.</translation> +<translation id="1038795173450935438">పేజీలోని అంశాల మధ్య ముందుకు వెళ్లడానికి, శోధన + కుడివైపు బాణాన్ని లేదా వెనుకకు వెళ్లడానికి శోధన + ఎడమవైపు బాణాన్ని నొక్కండి. తర్వాతి పంక్తికి వెళ్లడానికి, శోధన + కిందివైపు బాణాన్ని నొక్కండి. మునుపటి పంక్తికి వెళ్లడానికి, శోధన + ఎగువవైపు బాణాన్ని ఉపయోగించండి. మీరు క్లిక్ చేయాలనుకునే అంశానికి చేరుకున్నప్పుడు, శోధన + స్పేస్ను క్లిక్ చేయండి.</translation> <translation id="1044777062731150180">ముఖ్య శీర్షికలు లేవు</translation> <translation id="106222400312645156">rwhdr</translation> <translation id="1065552602950927991">ఇన్పుట్ చెల్లదు</translation> @@ -35,7 +35,7 @@ <translation id="1201402288615127009">తరువాత</translation> <translation id="1206619573307042055">marquee</translation> <translation id="1213216066620407844">ChromeVox - Chromeకు వాయిస్ను ఇస్తోంది</translation> -<translation id="1225437811932752266">అభినందనలు! మీరు ChromeVoxను ఉపయోగించడం కోసం ముఖ్యమైన వాటి గురించి తెలుసుకున్నారు. మీరు శోధన+పూర్ణ విరామం నొక్కడం ద్వారా ఎప్పుడైనా ChromeVox ఆదేశం మెనూను తెరవవచ్చని గుర్తుంచుకోండి. ChromeVox మరియు Chrome OS గురించి మరింత తెలుసుకోవాలంటే, కింది కథనాలను సందర్శించండి. +<translation id="1225437811932752266">అభినందనలు! మీరు ChromeVoxను ఉపయోగించడం కోసం ముఖ్యమైన వాటి గురించి తెలుసుకున్నారు. మీరు శోధన+పూర్ణ విరామం నొక్కడం ద్వారా ఎప్పుడైనా ChromeVox ఆదేశం మెనూను తెరవవచ్చని గుర్తుంచుకోండి. ChromeVox మరియు Chrome OS గురించి మరింత తెలుసుకోవడానికి, కింది కథనాలను సందర్శించండి. మీరు ట్యుటోరియల్ను ముగించి ఉంటే, ChromeVoxను ఉపయోగించి 'మూసివేయి' బటన్కు నావిగేట్ చేసి, దానిని క్లిక్ చేయండి.</translation> <translation id="1229276918471378188">మునుపటి జంప్</translation> <translation id="1236794971743289975">ఎండ్నోట్</translation> @@ -57,7 +57,7 @@ <translation id="1360699455582016846">రూటింగ్ కీ <ph name="ROUTING_KEY_NUMBER" /> కింద ఉన్న అంశాన్ని క్లిక్ చేయండి</translation> <translation id="136718599399906424">తరువాత పట్టిక అడ్డు వరుస</translation> <translation id="1377925789329510816">ఇది చివరి ముఖ్యశీర్షిక. మొదటి ముఖ్యశీర్షికకు సర్దుబాటు చేసేందుకు, శోధన+H నొక్కండి లేదా ఈ పేజీలోని రెండవ ముఖ్యశీర్షికకు వెళ్లేందుకు, శోధన+Shift+Hను నొక్కండి.</translation> -<translation id="1383876407941801731">శోధించు</translation> +<translation id="1383876407941801731">వెతుకు</translation> <translation id="1385214448885562192">ఆమోదించడానికి enterని లేదా రద్దు చేయడానికి escapeని, తరువాత దాని కోసం క్రిందికి మరియు మునుపటి దాని కోసం పైకి నొక్కండి.</translation> <translation id="1396114365388024581">tablst</translation> <translation id="1439316808600711881">rgn</translation> @@ -363,7 +363,7 @@ <translation id="404803211695627272"><ph name="V1" />-<ph name="V2" /></translation> <translation id="4054936709456751127">sts</translation> <translation id="4058278702844053247">పేజీ లోడ్ కావడం ప్రోగ్రెస్లో ఉంది</translation> -<translation id="4065205963140826639">ఇప్పుడు తర్వాతి బటన్ను కనుగొనడానికి శోధన + కుడివైపు బాణాన్ని ఉపయోగించి, ఆపై దానిని క్లిక్ చేయడానికి శోధన + Space నొక్కడం ప్రయత్నించండి.</translation> +<translation id="4065205963140826639">'తర్వాత' బటన్ను కనుగొనడానికి శోధన + కుడివైపు బాణాన్ని ఉపయోగించి, ఆపై దానిని క్లిక్ చేయడానికి శోధన + Space నొక్కడం ప్రయత్నించండి.</translation> <translation id="4081085052247739398">{COUNT,plural, =1{టిల్డ్ గుర్తు}other{# టిల్డ్ గుర్తులు}}</translation> <translation id="4086311032171418648">తెలుసుకునే మోడ్ ఆపివేయబడుతోంది.</translation> <translation id="409334809956508737">మునుపటి ఆబ్జెక్ట్</translation> @@ -435,7 +435,7 @@ <translation id="4623097797855662355">ఆఖరిమాట</translation> <translation id="463135993322337640">కొత్తవి ఏమిటో కనుగొనడం కోసం ChromeVox o, n నొక్కండి</translation> <translation id="4647836961514597010">రంగు ఎంపిక</translation> -<translation id="4652110509054054146">Home లేదా End బదులుగా Search Left లేదా Rightను, Control Home లేదా Endకు బదులుగా Search Control Left లేదా Rightను, Page Up లేదా Downకు బదులుగా Search Up లేదా Downను ఉపయోగించండి.</translation> +<translation id="4652110509054054146">Home లేదా End బదులుగా Search Left లేదా Rightని, Control Home లేదా Endకి బదులుగా Search Control Left లేదా Rightని, Page Up లేదా Downకి బదులుగా Search Up లేదా Downని ఉపయోగించండి.</translation> <translation id="4660783501463101648">క్లాసిక్ తీసివేయబడింది. కీబోర్డ్ టోగుల్ ద్వారా తిరిగి ChromeVox క్లాసిక్కు మారడం అనేది తీసివేయబడింది.</translation> <translation id="4661075872484491155">tree</translation> <translation id="4668929960204016307">,</translation> @@ -619,14 +619,14 @@ <translation id="5955304353782037793">app</translation> <translation id="5956928062748260866">డైలాగ్</translation> <translation id="5963413905009737549">విభాగం</translation> -<translation id="5968607524793740041">సందర్భోచిత మెనూను చూపుతుంది</translation> +<translation id="5968607524793740041">సందర్భ మెనూను చూపుతుంది</translation> <translation id="5983179082906765664">నావిగేషన్ గ్రాన్యులారిటీని పెంచండి</translation> <translation id="5992285135956208197">గ్రాఫిక్స్ పత్రం</translation> <translation id="5999630716831179808">వాయిస్లు</translation> <translation id="6006050241733874051">ఫారమ్</translation> <translation id="6006064078185310784">{COUNT,plural, =1{బ్యాక్స్లాష్ గుర్తు}other{# బ్యాక్స్లాష్ గుర్తులు}}</translation> <translation id="6037602951055904232">ముందుకు ప్యాన్ చేయండి</translation> -<translation id="6042826534790431634">సక్రియం చేయడం కోసం శోధన+స్పేస్ నొక్కండి.</translation> +<translation id="6042826534790431634">యాక్టివేట్ చేయడం కోసం శోధన+స్పేస్ నొక్కండి.</translation> <translation id="6044160928851315051">స్క్రీన్ను కాంతిహీనంగా చేస్తుంది</translation> <translation id="605761629541007221">బోల్డ్ ముగింపు</translation> <translation id="6065293622157674001">వ్యాకరణ దోషం ప్రారంభం</translation> @@ -676,7 +676,7 @@ <translation id="6493991254603208962">ప్రకాశాన్ని తగ్గిస్తుంది</translation> <translation id="6508059270146105198">బ్రెయిలీ డిస్ప్లేను పేజీ దిగువకు తరలించండి</translation> <translation id="6536864053412760904">గణిత ML టోకెన్</translation> -<translation id="6540201937398578274">ChromeVoxలో, శోధన కీ అనేది మాడిఫైయర్ కీ. చాలా వరకు ChromeVox సత్వరమార్గాలు శోధన కీతో ప్రారంభమవుతాయి. అలాగే మీరు నావిగేషన్ కోసం ఎక్కువగా బాణం కీలను ఉపయోగిస్తారు.</translation> +<translation id="6540201937398578274">ChromeVoxలో, శోధన కీ అనేది మాడిఫైయర్ కీ. చాలా వరకు ChromeVox షార్ట్కట్లు శోధన కీతో ప్రారంభమవుతాయి. అలాగే మీరు నావిగేషన్ కోసం ఎక్కువగా బాణం కీలను ఉపయోగిస్తారు.</translation> <translation id="6550720799683018100">దిగువ జాబితా నుండి ఎంపికను ఎంచుకోవడం ద్వారా ప్రస్తుత కీమ్యాప్ను మార్చండి.</translation> <translation id="6561818612645211875">ప్రస్తుత అడ్డు వరుస ప్రారంభానికి వెళ్లండి</translation> <translation id="6583174818554398774">వివరాల స్థాయి వద్ద తర్వాతి దానికి తరలించండి</translation> @@ -937,6 +937,7 @@ <translation id="8153880621934657047">లోపల పట్టిక కాదు.</translation> <translation id="817440585505441544">{COUNT,plural, =1{అండర్స్కోర్ గుర్తు}other{# అండర్స్కోర్ గుర్తులు}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">ChromeVox భాషను ఆటోమేటిక్గా గుర్తించి, మార్చాలి.</translation> <translation id="8184828902145951186">అడ్డు</translation> <translation id="8186185314313222077">పూర్తి స్క్రీన్ను టోగుల్ చేస్తుంది</translation> <translation id="8199231515320852133">ప్రస్తుత సెల్ యొక్క ముఖ్య శీర్షికలను తెలియజేయండి</translation> @@ -1038,7 +1039,7 @@ <translation id="9153606228985488238">స్వర స్థాయి <ph name="PERCENT" /> శాతం</translation> <translation id="9160096769946561184">ప్రస్తుత నిలువు వరుస యొక్క చివరకు వెళ్లండి</translation> <translation id="9173115498289768110">వాల్యూమ్ <ph name="PERCENT" /> శాతం</translation> -<translation id="9178973770513562274">బ్రౌజ్ చేయడానికి పైకి మరియు క్రిందికి బాణం కీలను ఉపయోగించండి లేదా శోధించడానికి టైప్ చేయండి.</translation> +<translation id="9178973770513562274">బ్రౌజ్ చేయడానికి పైకి మరియు కిందికి బాణం కీలను ఉపయోగించండి లేదా వెతకడానికి టైప్ చేయండి.</translation> <translation id="9192904702577636854">మార్కీ</translation> <translation id="9212322457209634662">తరువాత విభాగం లేదు.</translation> <translation id="923331726185079994">ChromeVox నవీకరించబడింది</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_th.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_th.xtb index 12b2dec..b575fc9 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_th.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_th.xtb
@@ -936,6 +936,7 @@ <translation id="8153880621934657047">ไม่ได้อยู่ในตาราง</translation> <translation id="817440585505441544">{COUNT,plural, =1{เครื่องหมายขีดล่าง}other{# เครื่องหมายขีดล่าง}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">ตรวจหาและเปลี่ยนภาษาของ ChromeVox โดยอัตโนมัติ</translation> <translation id="8184828902145951186">แถว</translation> <translation id="8186185314313222077">เปลี่ยนเป็นเต็มหน้าจอ</translation> <translation id="8199231515320852133">แจ้งส่วนหัวของเซลล์ปัจจุบัน</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_tr.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_tr.xtb index 0c3ec17..561bef0 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_tr.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_tr.xtb
@@ -936,6 +936,7 @@ <translation id="8153880621934657047">Tablonun içinde değil.</translation> <translation id="817440585505441544">{COUNT,plural, =1{alt çizgi}other{# alt çizgi}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">ChromeVox dilini otomatik olarak algıla ve değiştir.</translation> <translation id="8184828902145951186">satır</translation> <translation id="8186185314313222077">tam ekrana geç</translation> <translation id="8199231515320852133">Mevcut hücrenin üst bilgilerini söyle</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_uk.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_uk.xtb index c515ecb..08cd05d 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_uk.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_uk.xtb
@@ -936,6 +936,7 @@ <translation id="8153880621934657047">Не всередині таблиці.</translation> <translation id="817440585505441544">{COUNT,plural, =1{підкреслення}one{# підкреслення}few{# підкреслення}many{# підкреслень}other{# underscores}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">Автоматично виявляти та вмикати мову ChromeVox.</translation> <translation id="8184828902145951186">рядок</translation> <translation id="8186185314313222077">увімкнути або вимкнути повноекранний режим</translation> <translation id="8199231515320852133">Повідомити заголовки поточної клітинки</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_vi.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_vi.xtb index d108655..24e2a522 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_vi.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_vi.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">Không phải bên trong bảng.</translation> <translation id="817440585505441544">{COUNT,plural, =1{dấu gạch dưới}other{# dấu gạch dưới}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">Tự động phát hiện và chuyển đổi ngôn ngữ của ChromeVox.</translation> <translation id="8184828902145951186">hàng</translation> <translation id="8186185314313222077">chuyển đổi chế độ toàn màn hình</translation> <translation id="8199231515320852133">Thông báo các tiêu đề của ô hiện tại</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-CN.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-CN.xtb index 009c17f..1432a32 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-CN.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-CN.xtb
@@ -936,6 +936,7 @@ <translation id="8153880621934657047">不在表格内。</translation> <translation id="817440585505441544">{COUNT,plural, =1{1个下划线}other{#个下划线}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">自动检测和切换 ChromeVox 语言。</translation> <translation id="8184828902145951186">行</translation> <translation id="8186185314313222077">切换全屏模式</translation> <translation id="8199231515320852133">读出当前单元格的标题</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-TW.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-TW.xtb index 6205da34..cebaabc 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-TW.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-TW.xtb
@@ -937,6 +937,7 @@ <translation id="8153880621934657047">不在表格內。</translation> <translation id="817440585505441544">{COUNT,plural, =1{底線}other{# 個底線}}</translation> <translation id="8179976553408161302">Enter</translation> +<translation id="8183813379996435469">自動偵測與切換 ChromeVox 語言。</translation> <translation id="8184828902145951186">列</translation> <translation id="8186185314313222077">切換全螢幕</translation> <translation id="8199231515320852133">朗讀目前儲存格的標題</translation>
diff --git a/chrome/browser/resources/settings/settings_main/settings_main.html b/chrome/browser/resources/settings/settings_main/settings_main.html index a9720497..2811210 100644 --- a/chrome/browser/resources/settings/settings_main/settings_main.html +++ b/chrome/browser/resources/settings/settings_main/settings_main.html
@@ -48,6 +48,7 @@ padding-top: 12px; /* The next element spills over this element. This ensures the link * is clickable. */ + position: relative; z-index: 1; } </style>
diff --git a/chrome/browser/safe_browsing/certificate_reporting_service_browsertest.cc b/chrome/browser/safe_browsing/certificate_reporting_service_browsertest.cc index 556e8f8e..06e888ad 100644 --- a/chrome/browser/safe_browsing/certificate_reporting_service_browsertest.cc +++ b/chrome/browser/safe_browsing/certificate_reporting_service_browsertest.cc
@@ -263,9 +263,9 @@ DISALLOW_COPY_AND_ASSIGN(CertificateReportingServiceBrowserTest); }; -INSTANTIATE_TEST_CASE_P(, - CertificateReportingServiceBrowserTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + CertificateReportingServiceBrowserTest, + ::testing::Values(false, true)); // Tests that report send attempt should be cancelled when extended // reporting is not opted in.
diff --git a/chrome/browser/safe_browsing/certificate_reporting_service_factory.cc b/chrome/browser/safe_browsing/certificate_reporting_service_factory.cc index 8272b90..b726182 100644 --- a/chrome/browser/safe_browsing/certificate_reporting_service_factory.cc +++ b/chrome/browser/safe_browsing/certificate_reporting_service_factory.cc
@@ -90,6 +90,10 @@ content::BrowserContext* profile) const { safe_browsing::SafeBrowsingService* safe_browsing_service = g_browser_process->safe_browsing_service(); + // In unit tests the safe browsing service can be null, if this happens, + // return null instead of crashing. + if (!safe_browsing_service) + return nullptr; return new CertificateReportingService( safe_browsing_service, url_loader_factory_.get() ? url_loader_factory_
diff --git a/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_impl_win_unittest.cc b/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_impl_win_unittest.cc index 9327664..f7148533 100644 --- a/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_impl_win_unittest.cc +++ b/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_impl_win_unittest.cc
@@ -214,10 +214,10 @@ controller->RemoveObserver(&mock_observer_); } -INSTANTIATE_TEST_CASE_P(All, - ChromeCleanerControllerSimpleTest, - Values(MetricsStatus::kDisabled, - MetricsStatus::kEnabled)); +INSTANTIATE_TEST_SUITE_P(All, + ChromeCleanerControllerSimpleTest, + Values(MetricsStatus::kDisabled, + MetricsStatus::kEnabled)); enum class CleanerProcessStatus { kFetchFailure, @@ -659,7 +659,7 @@ CrashPoint::kAfterResponseReceived}; // Tests where the process gets past the startup phase and finds UwS to clean. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( CleanerFindsUwS, ChromeCleanerControllerTest, Combine(Values(CleanerProcessStatus::kFetchSuccessValidProcess), @@ -684,7 +684,7 @@ // clean. Since we don't progress to any stage where the parameters after // UwsFoundStatus are used, their values would not change the test behaviour, // so we can save time by only testing one arbitrary value for each. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( CleanerFindsNothing, ChromeCleanerControllerTest, Combine(Values(CleanerProcessStatus::kFetchSuccessValidProcess), @@ -699,7 +699,7 @@ // Tests where the process fails before starting a scan. This never gets far // enough to collect results, so we can save time by not repeating the tests // for every possible combination of results parameters. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( CleanerFailsToStart, ChromeCleanerControllerTest, Combine(Values(CleanerProcessStatus::kFetchFailure, @@ -834,15 +834,16 @@ SwReporterInvocationResult::kCleanupToBeOffered); } -INSTANTIATE_TEST_CASE_P(All, - ChromeCleanerControllerReporterInteractionTest, - Values(ChromeCleanerController::State::kIdle, - ChromeCleanerController::State::kReporterRunning, - ChromeCleanerController::State::kScanning, - ChromeCleanerController::State::kInfected, - ChromeCleanerController::State::kCleaning, - ChromeCleanerController::State::kRebootRequired), - chrome_cleaner::GetParamNameForTest()); +INSTANTIATE_TEST_SUITE_P( + All, + ChromeCleanerControllerReporterInteractionTest, + Values(ChromeCleanerController::State::kIdle, + ChromeCleanerController::State::kReporterRunning, + ChromeCleanerController::State::kScanning, + ChromeCleanerController::State::kInfected, + ChromeCleanerController::State::kCleaning, + ChromeCleanerController::State::kRebootRequired), + chrome_cleaner::GetParamNameForTest()); } // namespace } // namespace safe_browsing
diff --git a/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_dialog_controller_impl_browsertest_win.cc b/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_dialog_controller_impl_browsertest_win.cc index 56b8bc7..80e9962a 100644 --- a/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_dialog_controller_impl_browsertest_win.cc +++ b/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_dialog_controller_impl_browsertest_win.cc
@@ -135,7 +135,7 @@ run_loop.Run(); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( WithVaryingSeeds, ChromeCleanerPromptUserTest, ::testing::Combine(
diff --git a/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_reboot_dialog_controller_impl_browsertest_win.cc b/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_reboot_dialog_controller_impl_browsertest_win.cc index 4fb223d..7673bb6 100644 --- a/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_reboot_dialog_controller_impl_browsertest_win.cc +++ b/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_reboot_dialog_controller_impl_browsertest_win.cc
@@ -211,9 +211,9 @@ } #if defined(GOOGLE_CHROME_BUILD) -INSTANTIATE_TEST_CASE_P(Default, - ChromeCleanerRebootFlowTest, - ::testing::Bool()); +INSTANTIATE_TEST_SUITE_P(Default, + ChromeCleanerRebootFlowTest, + ::testing::Bool()); #endif // defined(GOOGLE_CHROME_BUILD) class ChromeCleanerRebootDialogResponseTest : public InProcessBrowserTest {
diff --git a/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_runner_win_unittest.cc b/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_runner_win_unittest.cc index d8a1a06..a5430249 100644 --- a/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_runner_win_unittest.cc +++ b/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_runner_win_unittest.cc
@@ -226,7 +226,7 @@ command_line_.HasSwitch(chrome_cleaner::kQuarantineSwitch)); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( All, ChromeCleanerRunnerSimpleTest, Combine(Values(ChromeCleanerRunner::ChromeMetricsStatus::kEnabled, @@ -454,7 +454,7 @@ cleaner_process_options_.ExpectedExitCode(prompt_acceptance_to_send_)); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( NoUwsFound, ChromeCleanerRunnerTest, Combine( @@ -475,7 +475,7 @@ Values(PromptAcceptance::DENIED)), chrome_cleaner::GetParamNameForTest()); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( UwsFound, ChromeCleanerRunnerTest, Combine(
diff --git a/chrome/browser/safe_browsing/chrome_cleaner/reporter_runner_browsertest_win.cc b/chrome/browser/safe_browsing/chrome_cleaner/reporter_runner_browsertest_win.cc index 179ed56..1fe5065 100644 --- a/chrome/browser/safe_browsing/chrome_cleaner/reporter_runner_browsertest_win.cc +++ b/chrome/browser/safe_browsing/chrome_cleaner/reporter_runner_browsertest_win.cc
@@ -156,7 +156,7 @@ // Tests for kUserInitiatedChromeCleanupsFeature enabled (all invocation types // are allowed). -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( PolicyControl, ReporterRunnerPolicyTest, ::testing::Values(ReporterRunnerPolicyTestParams(false, false), @@ -925,7 +925,7 @@ // Tests for kUserInitiatedChromeCleanupsFeature enabled (all invocation types // are allowed) without an enterprise policy set. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( UserInitiatedRunsEnabled, ReporterRunnerTest, ::testing::Combine( @@ -941,7 +941,7 @@ // Tests for kUserInitiatedChromeCleanupsFeature enabled (all invocation types // are allowed) with enterprise policies forcing reporting to be either enabled // or disabled. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( UserInitiatedRunsEnabledWithPolicy, ReporterRunnerTest, ::testing::Combine(
diff --git a/chrome/browser/safe_browsing/chrome_cleaner/settings_resetter_browsertest_win.cc b/chrome/browser/safe_browsing/chrome_cleaner/settings_resetter_browsertest_win.cc index 4743d70..bbb854c 100644 --- a/chrome/browser/safe_browsing/chrome_cleaner/settings_resetter_browsertest_win.cc +++ b/chrome/browser/safe_browsing/chrome_cleaner/settings_resetter_browsertest_win.cc
@@ -203,12 +203,13 @@ EXPECT_EQ(!reset_expected, ProfileIsTagged(profile3)); } -INSTANTIATE_TEST_CASE_P(Default, - ChromeCleanerResetTaggedProfilesTest, - testing::Values(CleanupCompletionState::kNotAvailable, - CleanupCompletionState::kNotCompleted, - CleanupCompletionState::kCompleted, - CleanupCompletionState::kInvalidValue)); +INSTANTIATE_TEST_SUITE_P( + Default, + ChromeCleanerResetTaggedProfilesTest, + testing::Values(CleanupCompletionState::kNotAvailable, + CleanupCompletionState::kNotCompleted, + CleanupCompletionState::kCompleted, + CleanupCompletionState::kInvalidValue)); } // namespace } // namespace safe_browsing
diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc index d288e64..7a90921 100644 --- a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc +++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
@@ -36,6 +36,7 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_tabstrip.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" +#include "chrome/common/chrome_features.h" #include "chrome/common/pref_names.h" #include "chrome/common/url_constants.h" #include "chrome/test/base/in_process_browser_test.h" @@ -462,16 +463,41 @@ // Proceed through the HTTPS interstitial. ui_test_utils::NavigateToURL(browser(), url); - EXPECT_TRUE(WaitForReady(browser())); - InterstitialPage* https_warning = browser() - ->tab_strip_model() - ->GetActiveWebContents() - ->GetInterstitialPage(); + + // TODO(carlosil, crbug.com/448486): This function is overly complicated + // due to the need to support combinations of safe browsing and SSL + // interstitials being committed navigations or overlays. Since most SSL + // specific code is only used in this function, it is stuck here for now. + // Once both SSL and SB committed interstitials launch, this function can + // use the general case interstitial code, and should be cleaned up. + content::WebContents* contents = + browser()->tab_strip_model()->GetActiveWebContents(); + content::InterstitialPageDelegate* ssl_blocking_page; + + if (base::FeatureList::IsEnabled(features::kSSLCommittedInterstitials)) { + EXPECT_TRUE(WaitForRenderFrameReady(contents->GetMainFrame())); + security_interstitials::SecurityInterstitialTabHelper* helper = + security_interstitials::SecurityInterstitialTabHelper:: + FromWebContents(contents); + EXPECT_TRUE(helper); + ssl_blocking_page = + helper->GetBlockingPageForCurrentlyCommittedNavigationForTesting(); + } else { + EXPECT_TRUE(WaitForReady(browser())); + ssl_blocking_page = browser() + ->tab_strip_model() + ->GetActiveWebContents() + ->GetInterstitialPage() + ->GetDelegateForTesting(); + } EXPECT_EQ(SSLBlockingPage::kTypeForTesting, - https_warning->GetDelegateForTesting()->GetTypeForTesting()); - https_warning->Proceed(); - content::WaitForInterstitialDetach( - browser()->tab_strip_model()->GetActiveWebContents()); + ssl_blocking_page->GetTypeForTesting()); + ssl_blocking_page->CommandReceived(base::IntToString( + security_interstitials::SecurityInterstitialCommand::CMD_PROCEED)); + if (base::FeatureList::IsEnabled(features::kSSLCommittedInterstitials)) + EXPECT_TRUE(WaitForRenderFrameReady(contents->GetMainFrame())); + else + content::WaitForInterstitialDetach(contents); return SetupWarningAndNavigateToURL(url, browser()); }
diff --git a/chrome/browser/safe_browsing/safe_browsing_service.h b/chrome/browser/safe_browsing/safe_browsing_service.h index 1571211..e2d98337 100644 --- a/chrome/browser/safe_browsing/safe_browsing_service.h +++ b/chrome/browser/safe_browsing/safe_browsing_service.h
@@ -192,7 +192,7 @@ // Adds a listener for when SafeBrowsing preferences might have changed. // To get the current state, the callback should call enabled_by_prefs(). // Should only be called on the UI thread. - std::unique_ptr<StateSubscription> RegisterStateCallback( + virtual std::unique_ptr<StateSubscription> RegisterStateCallback( const base::Callback<void(void)>& callback); // Sends serialized download report to backend.
diff --git a/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc b/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc index fc275b1..d973a68 100644 --- a/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc +++ b/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc
@@ -1079,7 +1079,7 @@ EXPECT_TRUE(hit_report().is_subresource); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( /* no prefix */, V4SafeBrowsingServiceJsRequestInterstitialTest, ::testing::Values( @@ -1109,17 +1109,17 @@ EXPECT_FALSE(got_hit_report()); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( /* no prefix */, V4SafeBrowsingServiceJsRequestNoInterstitialTest, - ::testing::Values( - JsRequestTestParam(ContextType::kSharedWorker, - JsRequestType::kWebSocket), - JsRequestTestParam(ContextType::kServiceWorker, - JsRequestType::kWebSocket), - JsRequestTestParam(ContextType::kSharedWorker, JsRequestType::kFetch), - JsRequestTestParam(ContextType::kServiceWorker, - JsRequestType::kFetch))); + ::testing::Values(JsRequestTestParam(ContextType::kSharedWorker, + JsRequestType::kWebSocket), + JsRequestTestParam(ContextType::kServiceWorker, + JsRequestType::kWebSocket), + JsRequestTestParam(ContextType::kSharedWorker, + JsRequestType::kFetch), + JsRequestTestParam(ContextType::kServiceWorker, + JsRequestType::kFetch))); using V4SafeBrowsingServiceJsRequestSafeTest = V4SafeBrowsingServiceJsRequestTest; @@ -1137,7 +1137,7 @@ EXPECT_FALSE(got_hit_report()); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( /* no prefix */, V4SafeBrowsingServiceJsRequestSafeTest, ::testing::Values( @@ -1314,7 +1314,7 @@ } } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( MaybeSetMetadata, V4SafeBrowsingServiceMetadataTest, testing::Values(ThreatPatternType::NONE,
diff --git a/chrome/browser/safe_browsing/test_safe_browsing_service.cc b/chrome/browser/safe_browsing/test_safe_browsing_service.cc index 9e9e6c3..3eb4ee65 100644 --- a/chrome/browser/safe_browsing/test_safe_browsing_service.cc +++ b/chrome/browser/safe_browsing/test_safe_browsing_service.cc
@@ -33,6 +33,15 @@ use_v4_local_db_manager_ = true; } +std::unique_ptr<SafeBrowsingService::StateSubscription> +TestSafeBrowsingService::RegisterStateCallback( + const base::Callback<void(void)>& callback) { + // This override is required since TestSafeBrowsingService can be destroyed + // before CertificateReportingService, which causes a crash due to the + // leftover callback at destruction time. + return nullptr; +} + std::string TestSafeBrowsingService::serilized_download_report() { return serialized_download_report_; }
diff --git a/chrome/browser/safe_browsing/test_safe_browsing_service.h b/chrome/browser/safe_browsing/test_safe_browsing_service.h index 99c9141..046ebd1 100644 --- a/chrome/browser/safe_browsing/test_safe_browsing_service.h +++ b/chrome/browser/safe_browsing/test_safe_browsing_service.h
@@ -59,6 +59,8 @@ const scoped_refptr<SafeBrowsingDatabaseManager>& database_manager() const override; void UseV4LocalDatabaseManager(); + std::unique_ptr<SafeBrowsingService::StateSubscription> RegisterStateCallback( + const base::Callback<void(void)>& callback) override; protected: // SafeBrowsingService overrides
diff --git a/chrome/browser/signin/fake_gaia_cookie_manager_service_builder.cc b/chrome/browser/signin/fake_gaia_cookie_manager_service_builder.cc index 7ac0466b..0fe7c22 100644 --- a/chrome/browser/signin/fake_gaia_cookie_manager_service_builder.cc +++ b/chrome/browser/signin/fake_gaia_cookie_manager_service_builder.cc
@@ -12,6 +12,14 @@ #include "components/signin/core/browser/profile_oauth2_token_service.h" #include "services/network/test/test_url_loader_factory.h" +std::unique_ptr<KeyedService> BuildFakeGaiaCookieManagerService( + content::BrowserContext* context) { + Profile* profile = Profile::FromBrowserContext(context); + return std::make_unique<FakeGaiaCookieManagerService>( + ProfileOAuth2TokenServiceFactory::GetForProfile(profile), + ChromeSigninClientFactory::GetForProfile(profile)); +} + std::unique_ptr<KeyedService> BuildFakeGaiaCookieManagerServiceWithURLLoader( network::TestURLLoaderFactory* test_url_loader_factory, content::BrowserContext* context) {
diff --git a/chrome/browser/signin/fake_gaia_cookie_manager_service_builder.h b/chrome/browser/signin/fake_gaia_cookie_manager_service_builder.h index 82238313..049c6fe 100644 --- a/chrome/browser/signin/fake_gaia_cookie_manager_service_builder.h +++ b/chrome/browser/signin/fake_gaia_cookie_manager_service_builder.h
@@ -18,6 +18,10 @@ class TestURLLoaderFactory; } +// Helper functions to be used with KeyedService::SetTestingFactory(). +std::unique_ptr<KeyedService> BuildFakeGaiaCookieManagerService( + content::BrowserContext* context); + // Builds a FakeGaiaCookieManagerService which uses the provided // |test_url_loader_factory| for cookie-related requests. std::unique_ptr<KeyedService> BuildFakeGaiaCookieManagerServiceWithURLLoader(
diff --git a/chrome/browser/signin/identity_test_environment_profile_adaptor.cc b/chrome/browser/signin/identity_test_environment_profile_adaptor.cc index afcabe6..86b7a1c8 100644 --- a/chrome/browser/signin/identity_test_environment_profile_adaptor.cc +++ b/chrome/browser/signin/identity_test_environment_profile_adaptor.cc
@@ -68,7 +68,9 @@ // static TestingProfile::TestingFactories IdentityTestEnvironmentProfileAdaptor::GetIdentityTestEnvironmentFactories() { - return {{ProfileOAuth2TokenServiceFactory::GetInstance(), + return {{GaiaCookieManagerServiceFactory::GetInstance(), + base::BindRepeating(&BuildFakeGaiaCookieManagerService)}, + {ProfileOAuth2TokenServiceFactory::GetInstance(), base::BindRepeating(&BuildFakeProfileOAuth2TokenService)}, {SigninManagerFactory::GetInstance(), base::BindRepeating(&BuildFakeSigninManagerForTesting)}};
diff --git a/chrome/browser/signin/signin_ui_util_unittest.cc b/chrome/browser/signin/signin_ui_util_unittest.cc index 6382dbb..0cd74a66 100644 --- a/chrome/browser/signin/signin_ui_util_unittest.cc +++ b/chrome/browser/signin/signin_ui_util_unittest.cc
@@ -9,18 +9,22 @@ #include "base/test/metrics/histogram_tester.h" #include "base/test/metrics/user_action_tester.h" #include "build/buildflag.h" -#include "chrome/browser/signin/account_tracker_service_factory.h" #include "chrome/browser/signin/fake_gaia_cookie_manager_service_builder.h" #include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h" #include "chrome/browser/signin/fake_signin_manager_builder.h" #include "chrome/browser/signin/gaia_cookie_manager_service_factory.h" +#include "chrome/browser/signin/identity_manager_factory.h" #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" #include "chrome/browser/signin/scoped_account_consistency.h" #include "chrome/browser/signin/signin_manager_factory.h" #include "chrome/browser/signin/signin_promo.h" #include "chrome/test/base/browser_with_test_window_test.h" #include "components/signin/core/browser/account_consistency_method.h" +#include "components/signin/core/browser/account_info.h" #include "components/signin/core/browser/signin_buildflags.h" +#include "services/identity/public/cpp/accounts_mutator.h" +#include "services/identity/public/cpp/identity_manager.h" +#include "services/identity/public/cpp/identity_test_utils.h" #include "testing/gtest/include/gtest/gtest.h" namespace signin_ui_util { @@ -135,7 +139,9 @@ return {{SigninManagerFactory::GetInstance(), base::BindRepeating(&BuildFakeSigninManagerForTesting)}, {ProfileOAuth2TokenServiceFactory::GetInstance(), - base::BindRepeating(&BuildFakeProfileOAuth2TokenService)}}; + base::BindRepeating(&BuildFakeProfileOAuth2TokenService)}, + {GaiaCookieManagerServiceFactory::GetInstance(), + base::BindRepeating(&BuildFakeGaiaCookieManagerService)}}; } // BrowserWithTestWindowTest: @@ -148,9 +154,9 @@ return ProfileOAuth2TokenServiceFactory::GetForProfile(profile()); } - // Returns the account tracker service. - AccountTrackerService* GetAccountTrackerService() { - return AccountTrackerServiceFactory::GetForProfile(profile()); + // Returns the identity manager. + identity::IdentityManager* GetIdentityManager() { + return IdentityManagerFactory::GetForProfile(profile()); } void EnableSync(const AccountInfo& account_info, @@ -271,10 +277,10 @@ }; TEST_F(DiceSigninUiUtilTest, EnableSyncWithExistingAccount) { - // Add an account. std::string account_id = - GetAccountTrackerService()->SeedAccountInfo(kMainEmail, kMainGaiaID); - GetTokenService()->UpdateCredentials(account_id, "token"); + GetIdentityManager()->GetAccountsMutator()->AddOrUpdateAccount( + kMainGaiaID, kMainEmail, "refresh_token", false, + signin_metrics::SourceForRefreshTokenOperation::kUnknown); for (bool is_default_promo_account : {true, false}) { base::HistogramTester histogram_tester; @@ -284,8 +290,11 @@ EXPECT_EQ(0, user_action_tester.GetActionCount( "Signin_Signin_FromBookmarkBubble")); - EnableSync(GetAccountTrackerService()->GetAccountInfo(account_id), - is_default_promo_account); + EnableSync( + GetIdentityManager() + ->FindAccountInfoForAccountWithRefreshTokenByAccountId(account_id) + .value(), + is_default_promo_account); signin_metrics::PromoAction expected_promo_action = is_default_promo_account ? signin_metrics::PromoAction::PROMO_ACTION_WITH_DEFAULT @@ -321,10 +330,16 @@ TEST_F(DiceSigninUiUtilTest, EnableSyncWithAccountThatNeedsReauth) { AddTab(browser(), GURL("http://example.com")); - // Add an account to the account tracker, but do not add it to the token - // service in order for it to require a reauth before enabling sync. std::string account_id = - GetAccountTrackerService()->SeedAccountInfo(kMainGaiaID, kMainEmail); + GetIdentityManager()->GetAccountsMutator()->AddOrUpdateAccount( + kMainGaiaID, kMainEmail, "refresh_token", false, + signin_metrics::SourceForRefreshTokenOperation::kUnknown); + + // Add an account and then put its refresh token into an error state to + // require a reauth before enabling sync. + identity::UpdatePersistentErrorOfRefreshTokenForAccount( + GetIdentityManager(), account_id, + GoogleServiceAuthError(GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS)); for (bool is_default_promo_account : {true, false}) { base::HistogramTester histogram_tester; @@ -334,8 +349,11 @@ EXPECT_EQ(0, user_action_tester.GetActionCount( "Signin_Signin_FromBookmarkBubble")); - EnableSync(GetAccountTrackerService()->GetAccountInfo(account_id), - is_default_promo_account); + EnableSync( + GetIdentityManager() + ->FindAccountInfoForAccountWithRefreshTokenByAccountId(account_id) + .value(), + is_default_promo_account); ASSERT_FALSE(create_dice_turn_sync_on_helper_called_); ExpectOneSigninStartedHistograms( @@ -398,10 +416,9 @@ base::HistogramTester histogram_tester; base::UserActionTester user_action_tester; - // Add an account. - std::string account_id = - GetAccountTrackerService()->SeedAccountInfo(kMainEmail, kMainGaiaID); - GetTokenService()->UpdateCredentials(account_id, "token"); + GetIdentityManager()->GetAccountsMutator()->AddOrUpdateAccount( + kMainGaiaID, kMainEmail, "refresh_token", false, + signin_metrics::SourceForRefreshTokenOperation::kUnknown); ExpectNoSigninStartedHistograms(histogram_tester); EXPECT_EQ(
diff --git a/chrome/browser/signin/signin_util_win.cc b/chrome/browser/signin/signin_util_win.cc index 144297ee..84db32e 100644 --- a/chrome/browser/signin/signin_util_win.cc +++ b/chrome/browser/signin/signin_util_win.cc
@@ -6,6 +6,7 @@ #include <memory> #include <string> +#include <utility> #include "base/bind.h" #include "base/strings/utf_string_conversions.h" @@ -17,7 +18,6 @@ #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/profiles/profile_window.h" #include "chrome/browser/signin/about_signin_internals_factory.h" -#include "chrome/browser/signin/account_tracker_service_factory.h" #include "chrome/browser/signin/identity_manager_factory.h" #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" #include "chrome/browser/signin/signin_manager_factory.h" @@ -32,6 +32,8 @@ #include "components/signin/core/browser/signin_manager.h" #include "components/signin/core/browser/signin_metrics.h" #include "components/signin/core/browser/signin_pref_names.h" +#include "services/identity/public/cpp/accounts_mutator.h" +#include "services/identity/public/cpp/identity_manager.h" namespace signin_util { @@ -99,19 +101,14 @@ AboutSigninInternalsFactory::GetInstance()->GetForProfile(profile); signin_internals->OnAuthenticationResultReceived("Credential Provider"); - // First seed the account tracker before adding the account to the token - // service. - AccountTrackerService* account_tracker = - AccountTrackerServiceFactory::GetForProfile(profile); - std::string account_id = account_tracker->SeedAccountInfo( - base::UTF16ToUTF8(gaia_id), base::UTF16ToUTF8(email)); - - ProfileOAuth2TokenService* token_service = - ProfileOAuth2TokenServiceFactory::GetForProfile(profile); - token_service->UpdateCredentials( - account_id, refresh_token, - signin_metrics::SourceForRefreshTokenOperation:: - kMachineLogon_CredentialProvider); + std::string account_id = + IdentityManagerFactory::GetForProfile(profile) + ->GetAccountsMutator() + ->AddOrUpdateAccount(base::UTF16ToUTF8(gaia_id), + base::UTF16ToUTF8(email), refresh_token, + /*is_under_advanced_protection=*/false, + signin_metrics::SourceForRefreshTokenOperation:: + kMachineLogon_CredentialProvider); if (turn_on_sync) { Browser* browser = chrome::FindLastActiveWithProfile(profile);
diff --git a/chrome/browser/ssl/captive_portal_blocking_page_browsertest.cc b/chrome/browser/ssl/captive_portal_blocking_page_browsertest.cc index d6deeec..4fd3354 100644 --- a/chrome/browser/ssl/captive_portal_blocking_page_browsertest.cc +++ b/chrome/browser/ssl/captive_portal_blocking_page_browsertest.cc
@@ -289,9 +289,9 @@ DISALLOW_COPY_AND_ASSIGN(CaptivePortalBlockingPageTest); }; -INSTANTIATE_TEST_CASE_P(, - CaptivePortalBlockingPageTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + CaptivePortalBlockingPageTest, + ::testing::Values(false, true)); void CaptivePortalBlockingPageTest::TestInterstitial( bool is_wifi_connection,
diff --git a/chrome/browser/ssl/connection_help_tab_helper_browsertest.cc b/chrome/browser/ssl/connection_help_tab_helper_browsertest.cc index a800a39..da49547e 100644 --- a/chrome/browser/ssl/connection_help_tab_helper_browsertest.cc +++ b/chrome/browser/ssl/connection_help_tab_helper_browsertest.cc
@@ -65,9 +65,9 @@ DISALLOW_COPY_AND_ASSIGN(ConnectionHelpTabHelperTest); }; -INSTANTIATE_TEST_CASE_P(, - ConnectionHelpTabHelperTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + ConnectionHelpTabHelperTest, + ::testing::Values(false, true)); // Tests that the chrome://connection-help redirect is not triggered (and // metrics are not logged) for an interstitial on a site that is not the help
diff --git a/chrome/browser/ssl/security_state_tab_helper_browsertest.cc b/chrome/browser/ssl/security_state_tab_helper_browsertest.cc index 375def0..ebce29b 100644 --- a/chrome/browser/ssl/security_state_tab_helper_browsertest.cc +++ b/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
@@ -552,9 +552,9 @@ DISALLOW_COPY_AND_ASSIGN(SecurityStateTabHelperTest); }; -INSTANTIATE_TEST_CASE_P(, - SecurityStateTabHelperTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + SecurityStateTabHelperTest, + ::testing::Values(false, true)); // Same as SecurityStateTabHelperTest, but with Incognito enabled. class SecurityStateTabHelperIncognitoTest : public SecurityStateTabHelperTest { @@ -571,9 +571,9 @@ DISALLOW_COPY_AND_ASSIGN(SecurityStateTabHelperIncognitoTest); }; -INSTANTIATE_TEST_CASE_P(, - SecurityStateTabHelperIncognitoTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + SecurityStateTabHelperIncognitoTest, + ::testing::Values(false, true)); class DidChangeVisibleSecurityStateTest : public InProcessBrowserTest, @@ -605,9 +605,9 @@ DISALLOW_COPY_AND_ASSIGN(DidChangeVisibleSecurityStateTest); }; -INSTANTIATE_TEST_CASE_P(, - DidChangeVisibleSecurityStateTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + DidChangeVisibleSecurityStateTest, + ::testing::Values(false, true)); IN_PROC_BROWSER_TEST_P(SecurityStateTabHelperTest, HttpPage) { ui_test_utils::NavigateToURL( @@ -1242,7 +1242,7 @@ transport_security_state_source_; }; -INSTANTIATE_TEST_CASE_P(, PKPModelClientTest, ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, PKPModelClientTest, ::testing::Values(false, true)); IN_PROC_BROWSER_TEST_P(PKPModelClientTest, PKPBypass) { content::WebContents* web_contents = @@ -1343,9 +1343,9 @@ DISALLOW_COPY_AND_ASSIGN(SecurityStateLoadingTest); }; -INSTANTIATE_TEST_CASE_P(, - SecurityStateLoadingTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + SecurityStateLoadingTest, + ::testing::Values(false, true)); // Tests that navigation state changes cause the security state to be // updated.
diff --git a/chrome/browser/ssl/ssl_blocking_page_unittest.cc b/chrome/browser/ssl/ssl_blocking_page_unittest.cc index be648005..1afb9b2c 100644 --- a/chrome/browser/ssl/ssl_blocking_page_unittest.cc +++ b/chrome/browser/ssl/ssl_blocking_page_unittest.cc
@@ -59,6 +59,7 @@ net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem"); base::RepeatingCallback<void(content::CertificateRequestResultType)> callback = base::BindRepeating(&EmptyCallback); + ssl_info.cert_status = net::CERT_STATUS_DATE_INVALID; // Simulates the showing of a SSL blocking page. SSLBlockingPage* blocking_page = SSLBlockingPage::Create(
diff --git a/chrome/browser/ssl/ssl_browsertest.cc b/chrome/browser/ssl/ssl_browsertest.cc index a1e4dac8..193b4d1 100644 --- a/chrome/browser/ssl/ssl_browsertest.cc +++ b/chrome/browser/ssl/ssl_browsertest.cc
@@ -1152,10 +1152,10 @@ DISALLOW_COPY_AND_ASSIGN(SSLUITest); }; -INSTANTIATE_TEST_CASE_P(, SSLUITest, ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, SSLUITest, ::testing::Values(false, true)); using SSLUITestCommitted = SSLUITest; -INSTANTIATE_TEST_CASE_P(, SSLUITestCommitted, ::testing::Values(true)); +INSTANTIATE_TEST_SUITE_P(, SSLUITestCommitted, ::testing::Values(true)); class SSLUITestBlock : public SSLUITest { public: @@ -1168,7 +1168,7 @@ } }; -INSTANTIATE_TEST_CASE_P(, SSLUITestBlock, ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, SSLUITestBlock, ::testing::Values(false, true)); class SSLUITestIgnoreCertErrors : public SSLUITest { public: @@ -1181,9 +1181,9 @@ } }; -INSTANTIATE_TEST_CASE_P(, - SSLUITestIgnoreCertErrors, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + SSLUITestIgnoreCertErrors, + ::testing::Values(false, true)); static std::string MakeCertSPKIFingerprint(net::X509Certificate* cert) { net::HashValue hash = GetSPKIHash(cert->cert_buffer()); @@ -1208,9 +1208,9 @@ } }; -INSTANTIATE_TEST_CASE_P(, - SSLUITestIgnoreCertErrorsBySPKIHTTPS, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + SSLUITestIgnoreCertErrorsBySPKIHTTPS, + ::testing::Values(false, true)); class SSLUITestIgnoreCertErrorsBySPKIWSS : public SSLUITest { public: @@ -1227,9 +1227,9 @@ } }; -INSTANTIATE_TEST_CASE_P(, - SSLUITestIgnoreCertErrorsBySPKIWSS, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + SSLUITestIgnoreCertErrorsBySPKIWSS, + ::testing::Values(false, true)); class SSLUITestIgnoreLocalhostCertErrors : public SSLUITest { public: @@ -1242,9 +1242,9 @@ } }; -INSTANTIATE_TEST_CASE_P(, - SSLUITestIgnoreLocalhostCertErrors, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + SSLUITestIgnoreLocalhostCertErrors, + ::testing::Values(false, true)); class SSLUITestWithExtendedReporting : public SSLUITest { public: @@ -1255,9 +1255,9 @@ } }; -INSTANTIATE_TEST_CASE_P(, - SSLUITestWithExtendedReporting, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + SSLUITestWithExtendedReporting, + ::testing::Values(false, true)); class SSLUITestHSTS : public SSLUITest { public: @@ -1267,7 +1267,7 @@ } }; -INSTANTIATE_TEST_CASE_P(, SSLUITestHSTS, ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, SSLUITestHSTS, ::testing::Values(false, true)); // Visits a regular page over http. IN_PROC_BROWSER_TEST_P(SSLUITest, TestHTTP) { @@ -3428,9 +3428,9 @@ DISALLOW_COPY_AND_ASSIGN(SSLUITestWaitForDOMNotification); }; -INSTANTIATE_TEST_CASE_P(, - SSLUITestWaitForDOMNotification, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + SSLUITestWaitForDOMNotification, + ::testing::Values(false, true)); // Tests that a mixed resource which includes HTTP in the redirect chain // is marked as mixed content, even if the end result is HTTPS. @@ -4154,7 +4154,7 @@ content::SetBrowserClientForTesting(old_browser_client); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( /* no prefix */, SSLUIWorkerFetchTest, ::testing::Values( @@ -4852,9 +4852,9 @@ DISALLOW_COPY_AND_ASSIGN(SSLNetworkTimeBrowserTest); }; -INSTANTIATE_TEST_CASE_P(, - SSLNetworkTimeBrowserTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + SSLNetworkTimeBrowserTest, + ::testing::Values(false, true)); // Tests that if an on-demand network time fetch returns that the clock // is okay, a normal SSL interstitial is shown. @@ -5189,9 +5189,9 @@ base::test::ScopedFeatureList scoped_feature_list_; }; -INSTANTIATE_TEST_CASE_P(, - CommonNameMismatchBrowserTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + CommonNameMismatchBrowserTest, + ::testing::Values(false, true)); // Visit the URL www.mail.example.com on a server that presents a valid // certificate for mail.example.com. Verify that the page navigates to @@ -6056,7 +6056,7 @@ void CertificatesRefreshed() override {} }; -INSTANTIATE_TEST_CASE_P(, SSLUITestNoCert, ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, SSLUITestNoCert, ::testing::Values(false, true)); // Checks that a newly-added certificate authority is usable immediately. IN_PROC_BROWSER_TEST_P(SSLUITestNoCert, NewCertificateAuthority) { @@ -6402,9 +6402,9 @@ net::EmbeddedTestServer https_server_; }; -INSTANTIATE_TEST_CASE_P(, - SSLUICaptivePortalListResourceBundleTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + SSLUICaptivePortalListResourceBundleTest, + ::testing::Values(false, true)); } // namespace @@ -6719,9 +6719,9 @@ DISALLOW_COPY_AND_ASSIGN(SSLUIMITMSoftwareTest); }; -INSTANTIATE_TEST_CASE_P(, - SSLUIMITMSoftwareTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + SSLUIMITMSoftwareTest, + ::testing::Values(false, true)); // The SSLUIMITMSoftwareEnabled and Disabled test classes exist so that the // scoped feature list can be instantiated in the set up method of the class @@ -6747,9 +6747,9 @@ DISALLOW_COPY_AND_ASSIGN(SSLUIMITMSoftwareEnabledTest); }; -INSTANTIATE_TEST_CASE_P(, - SSLUIMITMSoftwareEnabledTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + SSLUIMITMSoftwareEnabledTest, + ::testing::Values(false, true)); class SSLUIMITMSoftwareDisabledTest : public SSLUIMITMSoftwareTest { public: @@ -6768,9 +6768,9 @@ DISALLOW_COPY_AND_ASSIGN(SSLUIMITMSoftwareDisabledTest); }; -INSTANTIATE_TEST_CASE_P(, - SSLUIMITMSoftwareDisabledTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + SSLUIMITMSoftwareDisabledTest, + ::testing::Values(false, true)); } // namespace @@ -7992,9 +7992,9 @@ base::test::ScopedFeatureList scoped_feature_list_; }; -INSTANTIATE_TEST_CASE_P(, - RecurrentInterstitialBrowserTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + RecurrentInterstitialBrowserTest, + ::testing::Values(false, true)); // Tests that a message is added to the interstitial when an error code recurs // multiple times.
diff --git a/chrome/browser/ssl/ssl_error_controller_client.cc b/chrome/browser/ssl/ssl_error_controller_client.cc index 7b9fbad..a04a9105 100644 --- a/chrome/browser/ssl/ssl_error_controller_client.cc +++ b/chrome/browser/ssl/ssl_error_controller_client.cc
@@ -212,9 +212,12 @@ Profile::FromBrowserContext(web_contents_->GetBrowserContext()); ChromeSSLHostStateDelegate* state = static_cast<ChromeSSLHostStateDelegate*>( profile->GetSSLHostStateDelegate()); - state->AllowCert(request_url_.host(), *ssl_info_.cert.get(), - net::MapCertStatusToNetError(ssl_info_.cert_status)); - Reload(); + // ChromeSSLHostStateDelegate can be null during tests. + if (state) { + state->AllowCert(request_url_.host(), *ssl_info_.cert.get(), + net::MapCertStatusToNetError(ssl_info_.cert_status)); + Reload(); + } } bool SSLErrorControllerClient::CanLaunchDateAndTimeSettings() {
diff --git a/chrome/browser/ssl/ssl_error_navigation_throttle_unittest.cc b/chrome/browser/ssl/ssl_error_navigation_throttle_unittest.cc index 2b0e960..31ac6937 100644 --- a/chrome/browser/ssl/ssl_error_navigation_throttle_unittest.cc +++ b/chrome/browser/ssl/ssl_error_navigation_throttle_unittest.cc
@@ -172,8 +172,8 @@ EXPECT_TRUE(deferred_result_.error_page_content().has_value()); } -INSTANTIATE_TEST_CASE_P(, - SSLErrorNavigationThrottleTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, + SSLErrorNavigationThrottleTest, + ::testing::Values(false, true)); } // namespace
diff --git a/chrome/browser/sync/test/integration/enable_disable_test.cc b/chrome/browser/sync/test/integration/enable_disable_test.cc index 3df7de63..6c0c500a 100644 --- a/chrome/browser/sync/test/integration/enable_disable_test.cc +++ b/chrome/browser/sync/test/integration/enable_disable_test.cc
@@ -49,7 +49,7 @@ // elsewhere in the file). for (ModelType st : selectable_types) { const ModelTypeSet grouped_types = - SyncPrefs::ResolvePrefGroups(registered_types, ModelTypeSet(st)); + SyncPrefs::ResolvePrefGroups(ModelTypeSet(st)); for (ModelType gt : grouped_types) { if (seen.Has(gt)) { multi.Put(gt); @@ -58,6 +58,7 @@ } } } + multi.RetainAll(registered_types); return multi; } @@ -139,9 +140,11 @@ } ModelTypeSet ResolveGroup(ModelType type) { - return Difference( - SyncPrefs::ResolvePrefGroups(registered_types_, ModelTypeSet(type)), - ProxyTypes()); + ModelTypeSet grouped_types = + SyncPrefs::ResolvePrefGroups(ModelTypeSet(type)); + grouped_types.RetainAll(registered_types_); + grouped_types.RemoveAll(ProxyTypes()); + return grouped_types; } ModelTypeSet WithoutMultiTypes(const ModelTypeSet& input) {
diff --git a/chrome/browser/sync/test/integration/performance/autofill_sync_perf_test.cc b/chrome/browser/sync/test/integration/performance/autofill_sync_perf_test.cc index 4f7027d..61f0e35 100644 --- a/chrome/browser/sync/test/integration/performance/autofill_sync_perf_test.cc +++ b/chrome/browser/sync/test/integration/performance/autofill_sync_perf_test.cc
@@ -172,9 +172,9 @@ // Only parametrize the test above that tests autofill_profile, the test below // addresses autocomplete and thus does not need parametrizing. -INSTANTIATE_TEST_CASE_P(USS, - AutofillProfileSyncPerfTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + AutofillProfileSyncPerfTest, + ::testing::Values(false, true)); class AutocompleteSyncPerfTest : public SyncTest { public:
diff --git a/chrome/browser/sync/test/integration/single_client_apps_sync_test.cc b/chrome/browser/sync/test/integration/single_client_apps_sync_test.cc index 692a561e..7207433 100644 --- a/chrome/browser/sync/test/integration/single_client_apps_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_apps_sync_test.cc
@@ -105,8 +105,8 @@ ASSERT_TRUE(AllProfilesHaveSameApps()); } -INSTANTIATE_TEST_CASE_P(USS, - SingleClientAppsSyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + SingleClientAppsSyncTest, + ::testing::Values(false, true)); } // namespace
diff --git a/chrome/browser/sync/test/integration/single_client_autofill_profile_sync_test.cc b/chrome/browser/sync/test/integration/single_client_autofill_profile_sync_test.cc index da2e0bcc..59c9f7d 100644 --- a/chrome/browser/sync/test/integration/single_client_autofill_profile_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_autofill_profile_sync_test.cc
@@ -80,8 +80,8 @@ EXPECT_EQ(1uL, pdm->GetProfiles().size()); } -INSTANTIATE_TEST_CASE_P(USS, - SingleClientAutofillProfileSyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + SingleClientAutofillProfileSyncTest, + ::testing::Values(false, true)); } // namespace
diff --git a/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc b/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc index ba5b834b..cdbc96e 100644 --- a/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc
@@ -584,8 +584,8 @@ /*REMOTE_INITIAL_UPDATE=*/5)); } -INSTANTIATE_TEST_CASE_P(USS, - SingleClientBookmarksSyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + SingleClientBookmarksSyncTest, + ::testing::Values(false, true)); } // namespace
diff --git a/chrome/browser/sync/test/integration/single_client_dictionary_sync_test.cc b/chrome/browser/sync/test/integration/single_client_dictionary_sync_test.cc index c5dc601..cdc1579 100644 --- a/chrome/browser/sync/test/integration/single_client_dictionary_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_dictionary_sync_test.cc
@@ -38,8 +38,8 @@ ASSERT_TRUE(dictionary_helper::DictionariesMatch()); } -INSTANTIATE_TEST_CASE_P(USS, - SingleClientDictionarySyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + SingleClientDictionarySyncTest, + ::testing::Values(false, true)); } // namespace
diff --git a/chrome/browser/sync/test/integration/single_client_extensions_sync_test.cc b/chrome/browser/sync/test/integration/single_client_extensions_sync_test.cc index fa51467..529693bc 100644 --- a/chrome/browser/sync/test/integration/single_client_extensions_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_extensions_sync_test.cc
@@ -110,8 +110,8 @@ EXPECT_TRUE(GetInstalledExtensions(GetProfile(0)).empty()); } -INSTANTIATE_TEST_CASE_P(USS, - SingleClientExtensionsSyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + SingleClientExtensionsSyncTest, + ::testing::Values(false, true)); } // namespace
diff --git a/chrome/browser/sync/test/integration/single_client_history_delete_directives_sync_test.cc b/chrome/browser/sync/test/integration/single_client_history_delete_directives_sync_test.cc index 9cb276a..b0538ce0 100644 --- a/chrome/browser/sync/test/integration/single_client_history_delete_directives_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_history_delete_directives_sync_test.cc
@@ -173,8 +173,8 @@ EXPECT_TRUE(WaitForHistoryDeleteDirectives(1)); } -INSTANTIATE_TEST_CASE_P(USS, - SingleClientHistoryDeleteDirectivesSyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + SingleClientHistoryDeleteDirectivesSyncTest, + ::testing::Values(false, true)); } // namespace
diff --git a/chrome/browser/sync/test/integration/single_client_passwords_sync_test.cc b/chrome/browser/sync/test/integration/single_client_passwords_sync_test.cc index 7e30805..687f6db 100644 --- a/chrome/browser/sync/test/integration/single_client_passwords_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_passwords_sync_test.cc
@@ -150,6 +150,6 @@ EXPECT_NE(new_encryption_key_name, prior_encryption_key_name); } -INSTANTIATE_TEST_CASE_P(USS, - SingleClientPasswordsSyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + SingleClientPasswordsSyncTest, + ::testing::Values(false, true));
diff --git a/chrome/browser/sync/test/integration/single_client_preferences_sync_test.cc b/chrome/browser/sync/test/integration/single_client_preferences_sync_test.cc index d968d9f..baca403 100644 --- a/chrome/browser/sync/test/integration/single_client_preferences_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_preferences_sync_test.cc
@@ -166,8 +166,8 @@ /*REMOTE_INITIAL_UPDATE=*/5)); } -INSTANTIATE_TEST_CASE_P(USS, - SingleClientPreferencesSyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + SingleClientPreferencesSyncTest, + ::testing::Values(false, true)); } // namespace
diff --git a/chrome/browser/sync/test/integration/single_client_search_engines_sync_test.cc b/chrome/browser/sync/test/integration/single_client_search_engines_sync_test.cc index 22c4976..17fb6a6 100644 --- a/chrome/browser/sync/test/integration/single_client_search_engines_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_search_engines_sync_test.cc
@@ -31,6 +31,6 @@ ASSERT_TRUE(search_engines_helper::ServiceMatchesVerifier(0)); } -INSTANTIATE_TEST_CASE_P(USS, - SingleClientSearchEnginesSyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + SingleClientSearchEnginesSyncTest, + ::testing::Values(false, true));
diff --git a/chrome/browser/sync/test/integration/single_client_themes_sync_test.cc b/chrome/browser/sync/test/integration/single_client_themes_sync_test.cc index 74157ec..035d59f8 100644 --- a/chrome/browser/sync/test/integration/single_client_themes_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_themes_sync_test.cc
@@ -104,8 +104,8 @@ EXPECT_TRUE(UsingDefaultTheme(verifier())); } -INSTANTIATE_TEST_CASE_P(USS, - SingleClientThemesSyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + SingleClientThemesSyncTest, + ::testing::Values(false, true)); } // namespace
diff --git a/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc b/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc index 155cab8f..2bff3f38 100644 --- a/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc
@@ -1370,26 +1370,26 @@ EXPECT_EQ(1U, GetServerCards(profile_data).size()); } -INSTANTIATE_TEST_CASE_P(USS, - SingleClientWalletSyncTestWithoutAccountStorage, - ::testing::Values(std::make_pair(false, false), - std::make_pair(true, false), - std::make_pair(true, true))); +INSTANTIATE_TEST_SUITE_P(USS, + SingleClientWalletSyncTestWithoutAccountStorage, + ::testing::Values(std::make_pair(false, false), + std::make_pair(true, false), + std::make_pair(true, true))); // Depends on SyncUSSWalletData, cannot set the first param to false. -INSTANTIATE_TEST_CASE_P(USS, - SingleClientWalletWithAccountStorageSyncTest, - ::testing::Values(std::make_pair(true, false), - std::make_pair(true, true))); +INSTANTIATE_TEST_SUITE_P(USS, + SingleClientWalletWithAccountStorageSyncTest, + ::testing::Values(std::make_pair(true, false), + std::make_pair(true, true))); -INSTANTIATE_TEST_CASE_P(USS, - SingleClientWalletSyncTestWithDefaultFeatures, - ::testing::Values(std::make_pair(false, false), - std::make_pair(true, false), - std::make_pair(true, true))); +INSTANTIATE_TEST_SUITE_P(USS, + SingleClientWalletSyncTestWithDefaultFeatures, + ::testing::Values(std::make_pair(false, false), + std::make_pair(true, false), + std::make_pair(true, true))); // Depends on SyncUSSWalletData, cannot set the first param to false. -INSTANTIATE_TEST_CASE_P(USS, - SingleClientWalletSecondaryAccountSyncTest, - ::testing::Values(std::make_pair(true, false), - std::make_pair(true, true))); +INSTANTIATE_TEST_SUITE_P(USS, + SingleClientWalletSecondaryAccountSyncTest, + ::testing::Values(std::make_pair(true, false), + std::make_pair(true, true)));
diff --git a/chrome/browser/sync/test/integration/two_client_apps_sync_test.cc b/chrome/browser/sync/test/integration/two_client_apps_sync_test.cc index e1b493f..69b6dc2 100644 --- a/chrome/browser/sync/test/integration/two_client_apps_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_apps_sync_test.cc
@@ -539,6 +539,6 @@ // - Offline installation/uninstallation behavior // - App-specific properties -INSTANTIATE_TEST_CASE_P(USS, - TwoClientAppsSyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + TwoClientAppsSyncTest, + ::testing::Values(false, true));
diff --git a/chrome/browser/sync/test/integration/two_client_autofill_sync_test.cc b/chrome/browser/sync/test/integration/two_client_autofill_sync_test.cc index e4f750d1..7c52cf7 100644 --- a/chrome/browser/sync/test/integration/two_client_autofill_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_autofill_sync_test.cc
@@ -592,8 +592,8 @@ // Only parametrize the tests above that test autofill_profile, the tests below // address autocomplete and thus do not need parametrizing. -INSTANTIATE_TEST_CASE_P(USS, - TwoClientAutofillProfileSyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + TwoClientAutofillProfileSyncTest, + ::testing::Values(false, true)); } // namespace
diff --git a/chrome/browser/sync/test/integration/two_client_bookmarks_sync_test.cc b/chrome/browser/sync/test/integration/two_client_bookmarks_sync_test.cc index cca17a79..3b5a04e 100644 --- a/chrome/browser/sync/test/integration/two_client_bookmarks_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_bookmarks_sync_test.cc
@@ -2265,8 +2265,8 @@ ASSERT_EQ(initial_count + 2, CountAllBookmarks(1)); } -INSTANTIATE_TEST_CASE_P(USS, - TwoClientBookmarksSyncTestIncludingUssTests, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + TwoClientBookmarksSyncTestIncludingUssTests, + ::testing::Values(false, true)); } // namespace
diff --git a/chrome/browser/sync/test/integration/two_client_dictionary_sync_test.cc b/chrome/browser/sync/test/integration/two_client_dictionary_sync_test.cc index d196d82..e5756974 100644 --- a/chrome/browser/sync/test/integration/two_client_dictionary_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_dictionary_sync_test.cc
@@ -176,8 +176,8 @@ NumDictionaryEntriesChecker(0, kMaxSyncableDictionaryWords).Wait()); } -INSTANTIATE_TEST_CASE_P(USS, - TwoClientDictionarySyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + TwoClientDictionarySyncTest, + ::testing::Values(false, true)); } // namespace
diff --git a/chrome/browser/sync/test/integration/two_client_extension_settings_and_app_settings_sync_test.cc b/chrome/browser/sync/test/integration/two_client_extension_settings_and_app_settings_sync_test.cc index 5cc1aef..e816c09 100644 --- a/chrome/browser/sync/test/integration/two_client_extension_settings_and_app_settings_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_extension_settings_and_app_settings_sync_test.cc
@@ -214,8 +214,8 @@ InstallAppForAllProfiles(1), InstallAppForAllProfiles(2)); } -INSTANTIATE_TEST_CASE_P(USS, - TwoClientExtensionSettingsAndAppSettingsSyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + TwoClientExtensionSettingsAndAppSettingsSyncTest, + ::testing::Values(false, true)); } // namespace
diff --git a/chrome/browser/sync/test/integration/two_client_extensions_sync_test.cc b/chrome/browser/sync/test/integration/two_client_extensions_sync_test.cc index 7e6fc6a..158c30b 100644 --- a/chrome/browser/sync/test/integration/two_client_extensions_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_extensions_sync_test.cc
@@ -221,8 +221,8 @@ // TODO(akalin): Add tests exercising: // - Offline installation/uninstallation behavior -INSTANTIATE_TEST_CASE_P(USS, - TwoClientExtensionsSyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + TwoClientExtensionsSyncTest, + ::testing::Values(false, true)); } // namespace
diff --git a/chrome/browser/sync/test/integration/two_client_passwords_sync_test.cc b/chrome/browser/sync/test/integration/two_client_passwords_sync_test.cc index a1077d2..ffc5a76 100644 --- a/chrome/browser/sync/test/integration/two_client_passwords_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_passwords_sync_test.cc
@@ -343,7 +343,7 @@ // We instantiate every test 4 times, for every combination of pseudo-USS being // enabled in individual clients. This verifies backward-compatibility between // the two implementations. -INSTANTIATE_TEST_CASE_P(USS, - TwoClientPasswordsSyncTest, - ::testing::Combine(::testing::Values(false, true), - ::testing::Values(false, true))); +INSTANTIATE_TEST_SUITE_P(USS, + TwoClientPasswordsSyncTest, + ::testing::Combine(::testing::Values(false, true), + ::testing::Values(false, true)));
diff --git a/chrome/browser/sync/test/integration/two_client_preferences_sync_test.cc b/chrome/browser/sync/test/integration/two_client_preferences_sync_test.cc index 38410a3..744d125 100644 --- a/chrome/browser/sync/test/integration/two_client_preferences_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_preferences_sync_test.cc
@@ -295,12 +295,12 @@ EXPECT_THAT(GetPrefs(1)->GetString(pref_name), Eq("non-priority value")); } -INSTANTIATE_TEST_CASE_P(USS, - TwoClientPreferencesSyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + TwoClientPreferencesSyncTest, + ::testing::Values(false, true)); -INSTANTIATE_TEST_CASE_P(USS, - TwoClientPreferencesSyncTestWithSelfNotifications, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + TwoClientPreferencesSyncTestWithSelfNotifications, + ::testing::Values(false, true)); } // namespace
diff --git a/chrome/browser/sync/test/integration/two_client_search_engines_sync_test.cc b/chrome/browser/sync/test/integration/two_client_search_engines_sync_test.cc index f9d5e75..e66be36 100644 --- a/chrome/browser/sync/test/integration/two_client_search_engines_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_search_engines_sync_test.cc
@@ -234,6 +234,6 @@ ASSERT_TRUE(SearchEnginesMatchChecker().Wait()); } -INSTANTIATE_TEST_CASE_P(USS, - TwoClientSearchEnginesSyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + TwoClientSearchEnginesSyncTest, + ::testing::Values(false, true));
diff --git a/chrome/browser/sync/test/integration/two_client_themes_sync_test.cc b/chrome/browser/sync/test/integration/two_client_themes_sync_test.cc index e1499551..a1d92816 100644 --- a/chrome/browser/sync/test/integration/two_client_themes_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_themes_sync_test.cc
@@ -126,8 +126,8 @@ EXPECT_EQ(GetCustomTheme(1), GetThemeID(GetProfile(0))); } -INSTANTIATE_TEST_CASE_P(USS, - TwoClientThemesSyncTest, - ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(USS, + TwoClientThemesSyncTest, + ::testing::Values(false, true)); } // namespace
diff --git a/chrome/browser/sync/test/integration/two_client_wallet_sync_test.cc b/chrome/browser/sync/test/integration/two_client_wallet_sync_test.cc index 6273a34..241f9b6 100644 --- a/chrome/browser/sync/test/integration/two_client_wallet_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_wallet_sync_test.cc
@@ -681,10 +681,10 @@ EXPECT_EQ(1U, cards_metadata_1.size()); } -INSTANTIATE_TEST_CASE_P(USS, - TwoClientWalletSyncTest, - ::testing::Values(std::make_pair(false, false), - std::make_pair(true, false), - std::make_pair(true, true))); +INSTANTIATE_TEST_SUITE_P(USS, + TwoClientWalletSyncTest, + ::testing::Values(std::make_pair(false, false), + std::make_pair(true, false), + std::make_pair(true, true))); } // namespace
diff --git a/chrome/browser/task_manager/task_manager_browsertest.cc b/chrome/browser/task_manager/task_manager_browsertest.cc index 2834695e..bf230e0 100644 --- a/chrome/browser/task_manager/task_manager_browsertest.cc +++ b/chrome/browser/task_manager/task_manager_browsertest.cc
@@ -203,12 +203,12 @@ DISALLOW_COPY_AND_ASSIGN(TaskManagerOOPIFBrowserTest); }; -INSTANTIATE_TEST_CASE_P(DefaultIsolation, - TaskManagerOOPIFBrowserTest, - ::testing::Values(false)); -INSTANTIATE_TEST_CASE_P(SitePerProcess, - TaskManagerOOPIFBrowserTest, - ::testing::Values(true)); +INSTANTIATE_TEST_SUITE_P(DefaultIsolation, + TaskManagerOOPIFBrowserTest, + ::testing::Values(false)); +INSTANTIATE_TEST_SUITE_P(SitePerProcess, + TaskManagerOOPIFBrowserTest, + ::testing::Values(true)); #if defined(OS_MACOSX) || defined(OS_LINUX) #define MAYBE_ShutdownWhileOpen DISABLED_ShutdownWhileOpen
diff --git a/chrome/browser/tracing/background_tracing_field_trial_unittest.cc b/chrome/browser/tracing/background_tracing_field_trial_unittest.cc index 4e2f7de..c935d54 100644 --- a/chrome/browser/tracing/background_tracing_field_trial_unittest.cc +++ b/chrome/browser/tracing/background_tracing_field_trial_unittest.cc
@@ -10,7 +10,6 @@ #include "base/test/scoped_command_line.h" #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile_manager.h" -#include "components/tracing/common/trace_startup.h" #include "components/tracing/common/tracing_switches.h" #include "content/public/browser/background_tracing_config.h" #include "content/public/browser/background_tracing_manager.h"
diff --git a/chrome/browser/ui/android/login_handler_android.cc b/chrome/browser/ui/android/login_handler_android.cc index 0b13b52..1c33d62 100644 --- a/chrome/browser/ui/android/login_handler_android.cc +++ b/chrome/browser/ui/android/login_handler_android.cc
@@ -59,8 +59,6 @@ chrome_http_auth_handler_->SetObserver(this); chrome_http_auth_handler_->ShowDialog( view_helper->GetViewAndroid()->GetWindowAndroid()->GetJavaObject()); - - NotifyAuthNeeded(); } else { CancelAuth(); LOG(WARNING) << "HTTP Authentication failed because TabAndroid is "
diff --git a/chrome/browser/ui/login/login_handler.cc b/chrome/browser/ui/login/login_handler.cc index d3c1ea3..dac1e14 100644 --- a/chrome/browser/ui/login/login_handler.cc +++ b/chrome/browser/ui/login/login_handler.cc
@@ -139,38 +139,11 @@ DoCancelAuth(true); } -void LoginHandler::BuildViewWithPasswordManager( - const base::string16& authority, - const base::string16& explanation, - password_manager::PasswordManager* password_manager, - const autofill::PasswordForm& observed_form) { - password_form_ = observed_form; - LoginHandler::LoginModelData model_data(password_manager, observed_form); - has_shown_login_handler_ = true; - BuildViewImpl(authority, explanation, &model_data); -} - -void LoginHandler::BuildViewWithoutPasswordManager( - const base::string16& authority, - const base::string16& explanation) { - has_shown_login_handler_ = true; - BuildViewImpl(authority, explanation, nullptr); -} - WebContents* LoginHandler::GetWebContentsForLogin() const { DCHECK_CURRENTLY_ON(BrowserThread::UI); return web_contents_getter_.Run(); } -password_manager::PasswordManager* LoginHandler::GetPasswordManagerForLogin() { - WebContents* contents = GetWebContentsForLogin(); - if (!contents) - return nullptr; - password_manager::PasswordManagerClient* client = - ChromePasswordManagerClient::FromWebContents(contents); - return client ? client->GetPasswordManager() : nullptr; -} - void LoginHandler::SetAuth(const base::string16& username, const base::string16& password) { DCHECK_CURRENTLY_ON(BrowserThread::UI); @@ -274,35 +247,8 @@ } } -// Returns whether authentication had been handled (SetAuth or CancelAuth). -bool LoginHandler::WasAuthHandled() const { - base::AutoLock lock(handled_auth_lock_); - bool was_handled = handled_auth_; - return was_handled; -} - LoginHandler::~LoginHandler() = default; -void LoginHandler::NotifyAuthNeeded() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - if (WasAuthHandled()) - return; - - content::NotificationService* service = - content::NotificationService::current(); - NavigationController* controller = NULL; - - WebContents* requesting_contents = GetWebContentsForLogin(); - if (requesting_contents) - controller = &requesting_contents->GetController(); - - LoginNotificationDetails details(this); - - service->Notify(chrome::NOTIFICATION_AUTH_NEEDED, - content::Source<NavigationController>(controller), - content::Details<LoginNotificationDetails>(&details)); -} - void LoginHandler::ReleaseSoon() { CHECK(content::BrowserThread::CurrentlyOn(BrowserThread::UI)); @@ -354,6 +300,26 @@ registrar_.reset(); } +void LoginHandler::NotifyAuthNeeded() { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + if (WasAuthHandled()) + return; + + content::NotificationService* service = + content::NotificationService::current(); + NavigationController* controller = NULL; + + WebContents* requesting_contents = GetWebContentsForLogin(); + if (requesting_contents) + controller = &requesting_contents->GetController(); + + LoginNotificationDetails details(this); + + service->Notify(chrome::NOTIFICATION_AUTH_NEEDED, + content::Source<NavigationController>(controller), + content::Details<LoginNotificationDetails>(&details)); +} + void LoginHandler::NotifyAuthSupplied(const base::string16& username, const base::string16& password) { DCHECK_CURRENTLY_ON(BrowserThread::UI); @@ -400,6 +366,22 @@ } } +password_manager::PasswordManager* LoginHandler::GetPasswordManagerForLogin() { + WebContents* contents = GetWebContentsForLogin(); + if (!contents) + return nullptr; + password_manager::PasswordManagerClient* client = + ChromePasswordManagerClient::FromWebContents(contents); + return client ? client->GetPasswordManager() : nullptr; +} + +// Returns whether authentication had been handled (SetAuth or CancelAuth). +bool LoginHandler::WasAuthHandled() const { + base::AutoLock lock(handled_auth_lock_); + bool was_handled = handled_auth_; + return was_handled; +} + // Marks authentication as handled and returns the previous handled state. bool LoginHandler::TestAndSetAuthHandled() { base::AutoLock lock(handled_auth_lock_); @@ -531,60 +513,6 @@ } } -void LoginHandler::ShowLoginPrompt(const GURL& request_url, - net::AuthChallengeInfo* auth_info) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - WebContents* parent_contents = GetWebContentsForLogin(); - if (!parent_contents) { - CancelAuth(); - return; - } - prerender::PrerenderContents* prerender_contents = - prerender::PrerenderContents::FromWebContents(parent_contents); - if (prerender_contents) { - prerender_contents->Destroy(prerender::FINAL_STATUS_AUTH_NEEDED); - CancelAuth(); - return; - } - - base::string16 authority; - base::string16 explanation; - GetDialogStrings(request_url, *auth_info, &authority, &explanation); - - password_manager::PasswordManager* password_manager = - GetPasswordManagerForLogin(); - - if (!password_manager) { -#if BUILDFLAG(ENABLE_EXTENSIONS) - // A WebContents in a <webview> (a GuestView type) does not have a password - // manager, but still needs to be able to show login prompts. - const auto* guest = - guest_view::GuestViewBase::FromWebContents(parent_contents); - if (guest && - extensions::GetViewType(guest->owner_web_contents()) != - extensions::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE) { - BuildViewWithoutPasswordManager(authority, explanation); - return; - } -#endif - CancelAuth(); - return; - } - - if (password_manager && - password_manager->client()->GetLogManager()->IsLoggingActive()) { - password_manager::BrowserSavePasswordProgressLogger logger( - password_manager->client()->GetLogManager()); - logger.LogMessage( - autofill::SavePasswordProgressLogger::STRING_SHOW_LOGIN_PROMPT_METHOD); - } - - PasswordForm observed_form( - MakeInputForPasswordManager(request_url, *auth_info)); - BuildViewWithPasswordManager(authority, explanation, password_manager, - observed_form); -} - void LoginHandler::LoginDialogCallback( const GURL& request_url, const content::GlobalRequestID& request_id, @@ -692,11 +620,11 @@ base::RetainedRef(auth_info)); // The interstitial delegate is owned by the interstitial that it creates. // This cancels any existing interstitial. - SetInterstitialDelegate( + interstitial_delegate_ = (new LoginInterstitialDelegate( parent_contents, auth_info->is_proxy ? GURL() : request_url, std::move(callback))) - ->GetWeakPtr()); + ->GetWeakPtr(); } else { if (is_request_for_main_frame) { @@ -710,6 +638,79 @@ } } +void LoginHandler::ShowLoginPrompt(const GURL& request_url, + net::AuthChallengeInfo* auth_info) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + WebContents* parent_contents = GetWebContentsForLogin(); + if (!parent_contents) { + CancelAuth(); + return; + } + prerender::PrerenderContents* prerender_contents = + prerender::PrerenderContents::FromWebContents(parent_contents); + if (prerender_contents) { + prerender_contents->Destroy(prerender::FINAL_STATUS_AUTH_NEEDED); + CancelAuth(); + return; + } + + base::string16 authority; + base::string16 explanation; + GetDialogStrings(request_url, *auth_info, &authority, &explanation); + + password_manager::PasswordManager* password_manager = + GetPasswordManagerForLogin(); + + if (!password_manager) { +#if BUILDFLAG(ENABLE_EXTENSIONS) + // A WebContents in a <webview> (a GuestView type) does not have a password + // manager, but still needs to be able to show login prompts. + const auto* guest = + guest_view::GuestViewBase::FromWebContents(parent_contents); + if (guest && extensions::GetViewType(guest->owner_web_contents()) != + extensions::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE) { + BuildViewWithoutPasswordManager(authority, explanation); + return; + } +#endif + CancelAuth(); + return; + } + + if (password_manager && + password_manager->client()->GetLogManager()->IsLoggingActive()) { + password_manager::BrowserSavePasswordProgressLogger logger( + password_manager->client()->GetLogManager()); + logger.LogMessage( + autofill::SavePasswordProgressLogger::STRING_SHOW_LOGIN_PROMPT_METHOD); + } + + PasswordForm observed_form( + MakeInputForPasswordManager(request_url, *auth_info)); + BuildViewWithPasswordManager(authority, explanation, password_manager, + observed_form); +} + +void LoginHandler::BuildViewWithPasswordManager( + const base::string16& authority, + const base::string16& explanation, + password_manager::PasswordManager* password_manager, + const autofill::PasswordForm& observed_form) { + password_form_ = observed_form; + LoginHandler::LoginModelData model_data(password_manager, observed_form); + has_shown_login_handler_ = true; + BuildViewImpl(authority, explanation, &model_data); + NotifyAuthNeeded(); +} + +void LoginHandler::BuildViewWithoutPasswordManager( + const base::string16& authority, + const base::string16& explanation) { + has_shown_login_handler_ = true; + BuildViewImpl(authority, explanation, nullptr); + NotifyAuthNeeded(); +} + // ---------------------------------------------------------------------------- // Public API scoped_refptr<LoginHandler> CreateLoginPrompt(
diff --git a/chrome/browser/ui/login/login_handler.h b/chrome/browser/ui/login/login_handler.h index d5b4feae..7da1d7d 100644 --- a/chrome/browser/ui/login/login_handler.h +++ b/chrome/browser/ui/login/login_handler.h
@@ -68,32 +68,12 @@ content::ResourceRequestInfo::WebContentsGetter web_contents_getter, LoginAuthRequiredCallback auth_required_callback); - void SetInterstitialDelegate( - const base::WeakPtr<LoginInterstitialDelegate> delegate) { - interstitial_delegate_ = delegate; - } - // LoginDelegate implementation: void OnRequestCancelled() override; - // Use this to build a view with password manager support. |password_manager| - // must not be null. - void BuildViewWithPasswordManager( - const base::string16& authority, - const base::string16& explanation, - password_manager::PasswordManager* password_manager, - const autofill::PasswordForm& observed_form); - - // Use this to build a view without password manager support. - void BuildViewWithoutPasswordManager(const base::string16& authority, - const base::string16& explanation); - // Returns the WebContents that needs authentication. content::WebContents* GetWebContentsForLogin() const; - // Returns the PasswordManager for the web contents that needs login. - password_manager::PasswordManager* GetPasswordManagerForLogin(); - // Resend the request with authentication credentials. // This function can be called from either thread. void SetAuth(const base::string16& username, const base::string16& password); @@ -113,9 +93,6 @@ // Who/where/what asked for the authentication. const net::AuthChallengeInfo* auth_info() const { return auth_info_.get(); } - // Returns whether authentication had been handled (SetAuth or CancelAuth). - bool WasAuthHandled() const; - protected: ~LoginHandler() override; @@ -126,9 +103,6 @@ const base::string16& explanation, LoginModelData* login_model_data) = 0; - // Notify observers that authentication is needed. - void NotifyAuthNeeded(); - // Performs necessary cleanup before deletion. void ReleaseSoon(); @@ -152,6 +126,9 @@ // Stops observing notifications from other LoginHandlers. void RemoveObservers(); + // Notify observers that authentication is needed. + void NotifyAuthNeeded(); + // Notify observers that authentication is supplied. void NotifyAuthSupplied(const base::string16& username, const base::string16& password); @@ -159,6 +136,12 @@ // Notify observers that authentication is cancelled. void NotifyAuthCancelled(bool cancel_navigation); + // Returns the PasswordManager for the web contents that needs login. + password_manager::PasswordManager* GetPasswordManagerForLogin(); + + // Returns whether authentication had been handled (SetAuth or CancelAuth). + bool WasAuthHandled() const; + // Marks authentication as handled and returns the previous handled // state. bool TestAndSetAuthHandled(); @@ -200,9 +183,6 @@ base::string16* authority, base::string16* explanation); - void ShowLoginPrompt(const GURL& request_url, - net::AuthChallengeInfo* auth_info); - // This callback is run on the UI thread and creates a constrained window with // a LoginView to prompt the user. If the prompt is triggered because of a // cross origin navigation in the main frame, a blank interstitial is first @@ -229,6 +209,21 @@ const base::Optional<net::AuthCredentials>& credentials, bool should_cancel); + void ShowLoginPrompt(const GURL& request_url, + net::AuthChallengeInfo* auth_info); + + // Use this to build a view with password manager support. |password_manager| + // must not be null. + void BuildViewWithPasswordManager( + const base::string16& authority, + const base::string16& explanation, + password_manager::PasswordManager* password_manager, + const autofill::PasswordForm& observed_form); + + // Use this to build a view without password manager support. + void BuildViewWithoutPasswordManager(const base::string16& authority, + const base::string16& explanation); + // True if we've handled auth (SetAuth or CancelAuth has been called). bool handled_auth_; mutable base::Lock handled_auth_lock_;
diff --git a/chrome/browser/ui/omnibox/lookalike_url_navigation_observer_browsertest.cc b/chrome/browser/ui/omnibox/lookalike_url_navigation_observer_browsertest.cc index e814193..e3e1ebe3 100644 --- a/chrome/browser/ui/omnibox/lookalike_url_navigation_observer_browsertest.cc +++ b/chrome/browser/ui/omnibox/lookalike_url_navigation_observer_browsertest.cc
@@ -264,10 +264,10 @@ base::SimpleTestClock test_clock_; }; -INSTANTIATE_TEST_CASE_P(, - LookalikeUrlNavigationObserverBrowserTest, - ::testing::Values(UIEnabled::kDisabled, - UIEnabled::kEnabled)); +INSTANTIATE_TEST_SUITE_P(, + LookalikeUrlNavigationObserverBrowserTest, + ::testing::Values(UIEnabled::kDisabled, + UIEnabled::kEnabled)); // Navigating to a non-IDN shouldn't show an infobar or record metrics. IN_PROC_BROWSER_TEST_P(LookalikeUrlNavigationObserverBrowserTest,
diff --git a/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc b/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc index ceb79f58..66f27be 100644 --- a/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc +++ b/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc
@@ -565,10 +565,10 @@ password_manager::ManagePasswordsReferrer::kManagePasswordsBubble); } -INSTANTIATE_TEST_CASE_P(Default, - ManagePasswordsBubbleModelManageLinkTest, - ::testing::Values(TestSyncService::SyncedTypes::ALL, - TestSyncService::SyncedTypes::NONE)); +INSTANTIATE_TEST_SUITE_P(Default, + ManagePasswordsBubbleModelManageLinkTest, + ::testing::Values(TestSyncService::SyncedTypes::ALL, + TestSyncService::SyncedTypes::NONE)); // Verify that URL keyed metrics are properly recorded. TEST_F(ManagePasswordsBubbleModelTest, RecordUKMs) {
diff --git a/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc b/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc index 5a090f3..061244b 100644 --- a/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc +++ b/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc
@@ -127,8 +127,11 @@ // Replace the throbber with a warning icon. Since this is a permanent // error we do not intend to return to a previous state. views::ImageView* error_icon = new views::ImageView(); + // The icon doesn't look good with the dark mode warning text color, + // so use the same color in light mode and dark mode. + // See https://crbug.com/924507 error_icon->SetImage( - gfx::CreateVectorIcon(kBrowserToolsErrorIcon, warning_text_color)); + gfx::CreateVectorIcon(kBrowserToolsErrorIcon, gfx::kGoogleRed700)); layout->StartRow(1.0, 0); layout->AddView(error_icon);
diff --git a/chrome/browser/ui/views/login_handler_views.cc b/chrome/browser/ui/views/login_handler_views.cc index ca3d909..38f470a 100644 --- a/chrome/browser/ui/views/login_handler_views.cc +++ b/chrome/browser/ui/views/login_handler_views.cc
@@ -47,7 +47,6 @@ dialog_ = new Dialog(this, GetWebContentsForLogin(), authority, explanation, login_model_data); - NotifyAuthNeeded(); } void CloseDialog() override {
diff --git a/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc b/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc index cadf901..b9513ea 100644 --- a/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc +++ b/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
@@ -2967,24 +2967,24 @@ #endif // OS_CHROMEOS #if defined(OS_CHROMEOS) -INSTANTIATE_TEST_CASE_P(TabDragging, - DetachToBrowserTabDragControllerTest, - ::testing::Values("mouse", "touch")); -INSTANTIATE_TEST_CASE_P(TabDragging, - DetachToBrowserInSeparateDisplayTabDragControllerTest, - ::testing::Values("mouse")); -INSTANTIATE_TEST_CASE_P(TabDragging, - DifferentDeviceScaleFactorDisplayTabDragControllerTest, - ::testing::Values("mouse")); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P(TabDragging, + DetachToBrowserTabDragControllerTest, + ::testing::Values("mouse", "touch")); +INSTANTIATE_TEST_SUITE_P(TabDragging, + DetachToBrowserInSeparateDisplayTabDragControllerTest, + ::testing::Values("mouse")); +INSTANTIATE_TEST_SUITE_P(TabDragging, + DifferentDeviceScaleFactorDisplayTabDragControllerTest, + ::testing::Values("mouse")); +INSTANTIATE_TEST_SUITE_P( TabDragging, DetachToBrowserInSeparateDisplayAndCancelTabDragControllerTest, ::testing::Values("mouse")); -INSTANTIATE_TEST_CASE_P(TabDragging, - DetachToBrowserTabDragControllerTestTouch, - ::testing::Values("touch")); +INSTANTIATE_TEST_SUITE_P(TabDragging, + DetachToBrowserTabDragControllerTestTouch, + ::testing::Values("touch")); #else -INSTANTIATE_TEST_CASE_P(TabDragging, - DetachToBrowserTabDragControllerTest, - ::testing::Values("mouse")); +INSTANTIATE_TEST_SUITE_P(TabDragging, + DetachToBrowserTabDragControllerTest, + ::testing::Values("mouse")); #endif
diff --git a/chrome/browser/ui/views/tabs/tab_strip_unittest.cc b/chrome/browser/ui/views/tabs/tab_strip_unittest.cc index e04dde33..335c0fe 100644 --- a/chrome/browser/ui/views/tabs/tab_strip_unittest.cc +++ b/chrome/browser/ui/views/tabs/tab_strip_unittest.cc
@@ -896,4 +896,4 @@ EXPECT_EQ(first_tab, tab_strip_->GetEventHandlerForPoint(tab_center)); } -INSTANTIATE_TEST_CASE_P(, TabStripTest, ::testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(, TabStripTest, ::testing::Values(false, true));
diff --git a/chrome/browser/ui/views/try_chrome_dialog_win/button_layout_unittest.cc b/chrome/browser/ui/views/try_chrome_dialog_win/button_layout_unittest.cc index 93c3431..2586e71 100644 --- a/chrome/browser/ui/views/try_chrome_dialog_win/button_layout_unittest.cc +++ b/chrome/browser/ui/views/try_chrome_dialog_win/button_layout_unittest.cc
@@ -179,7 +179,7 @@ } // Test all combinations of one or two buttons at many sizes. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( , ButtonLayoutTest, ::testing::Combine(::testing::Values(ButtonLayoutTest::kNarrowButtonMin,
diff --git a/chrome/browser/ui/views/try_chrome_dialog_win/try_chrome_dialog_browsertest.cc b/chrome/browser/ui/views/try_chrome_dialog_win/try_chrome_dialog_browsertest.cc index 110166de..4fd1e86 100644 --- a/chrome/browser/ui/views/try_chrome_dialog_win/try_chrome_dialog_browsertest.cc +++ b/chrome/browser/ui/views/try_chrome_dialog_win/try_chrome_dialog_browsertest.cc
@@ -300,7 +300,7 @@ ShowAndVerifyUi(); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( Variations, TryChromeDialogTest, ::testing::Range(
diff --git a/chrome/browser/ui/webui/cookies_tree_model_util.cc b/chrome/browser/ui/webui/cookies_tree_model_util.cc index c1f1d7de..f5a3c69 100644 --- a/chrome/browser/ui/webui/cookies_tree_model_util.cc +++ b/chrome/browser/ui/webui/cookies_tree_model_util.cc
@@ -143,11 +143,12 @@ case CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE: { dict->SetString(kKeyType, "local_storage"); - const BrowsingDataLocalStorageHelper::LocalStorageInfo& - local_storage_info = *node.GetDetailedInfo().local_storage_info; + const content::StorageUsageInfo& local_storage_info = + *node.GetDetailedInfo().usage_info; - dict->SetString(kKeyOrigin, local_storage_info.origin_url.spec()); - dict->SetString(kKeySize, ui::FormatBytes(local_storage_info.size)); + dict->SetString(kKeyOrigin, local_storage_info.origin.Serialize()); + dict->SetString(kKeySize, + ui::FormatBytes(local_storage_info.total_size_bytes)); dict->SetString(kKeyModified, base::UTF16ToUTF8( base::TimeFormatFriendlyDateAndTime( local_storage_info.last_modified)));
diff --git a/chrome/browser/ui/webui/settings/chromeos/account_manager_handler.cc b/chrome/browser/ui/webui/settings/chromeos/account_manager_handler.cc index adf20e0..e0f827c 100644 --- a/chrome/browser/ui/webui/settings/chromeos/account_manager_handler.cc +++ b/chrome/browser/ui/webui/settings/chromeos/account_manager_handler.cc
@@ -228,8 +228,7 @@ // |AccountManager::Observer| overrides. Note: We need to listen on // |AccountManager| in addition to |IdentityManager| because there is no // guarantee that |AccountManager| (our source of truth) will have a newly added -// account by the time the underlying |AccountTrackerService| managed by the -// |IdentityManager| has it. +// account by the time |IdentityManager| has it. void AccountManagerUIHandler::OnTokenUpserted( const AccountManager::AccountKey& account_key) { RefreshUI(); @@ -250,9 +249,6 @@ RefreshUI(); } -void AccountManagerUIHandler::OnAccountRemovedWithInfo( - const AccountInfo& account_key) {} - void AccountManagerUIHandler::RefreshUI() { FireWebUIListener("accounts-changed"); }
diff --git a/chrome/browser/ui/webui/settings/chromeos/account_manager_handler.h b/chrome/browser/ui/webui/settings/chromeos/account_manager_handler.h index 0eb1750a..054424bf 100644 --- a/chrome/browser/ui/webui/settings/chromeos/account_manager_handler.h +++ b/chrome/browser/ui/webui/settings/chromeos/account_manager_handler.h
@@ -45,7 +45,6 @@ // |identity::IdentityManager::Observer| overrides. void OnAccountUpdated(const AccountInfo& info) override; - void OnAccountRemovedWithInfo(const AccountInfo& account_key) override; private: // WebUI "getAccounts" message callback.
diff --git a/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc b/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc index b0234504..0f29c6b 100644 --- a/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc +++ b/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc
@@ -417,10 +417,10 @@ std::move(container), profile()->GetExtensionSpecialStoragePolicy()); mock_browsing_data_local_storage_helper->AddLocalStorageForOrigin( - GURL("https://www.example.com/"), 2); + url::Origin::Create(GURL("https://www.example.com/")), 2); mock_browsing_data_local_storage_helper->AddLocalStorageForOrigin( - GURL("https://www.google.com/"), 5); + url::Origin::Create(GURL("https://www.google.com/")), 5); mock_browsing_data_local_storage_helper->Notify(); mock_browsing_data_cookie_helper->AddCookieSamples(
diff --git a/chrome/browser/upgrade_detector/upgrade_detector_impl_unittest.cc b/chrome/browser/upgrade_detector/upgrade_detector_impl_unittest.cc index 5ece01c..10785c9 100644 --- a/chrome/browser/upgrade_detector/upgrade_detector_impl_unittest.cc +++ b/chrome/browser/upgrade_detector/upgrade_detector_impl_unittest.cc
@@ -392,11 +392,11 @@ DISALLOW_COPY_AND_ASSIGN(UpgradeDetectorImplTimerTest); }; -INSTANTIATE_TEST_CASE_P(, - UpgradeDetectorImplTimerTest, - ::testing::Values(0, // Default period of 7d. - 86400000, // 1d. - 11100000)); // 3:05:00. +INSTANTIATE_TEST_SUITE_P(, + UpgradeDetectorImplTimerTest, + ::testing::Values(0, // Default period of 7d. + 86400000, // 1d. + 11100000)); // 3:05:00. // Tests that the notification timer is handled as desired. TEST_P(UpgradeDetectorImplTimerTest, TestNotificationTimer) {
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc index d330ffd9..cc10e29 100644 --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc
@@ -546,7 +546,7 @@ // Enables committed error pages instead of transient navigation entries for // SSL interstitial error pages (i.e. certificate errors). const base::Feature kSSLCommittedInterstitials{ - "SSLCommittedInterstitials", base::FEATURE_DISABLED_BY_DEFAULT}; + "SSLCommittedInterstitials", base::FEATURE_ENABLED_BY_DEFAULT}; #if defined(OS_CHROMEOS) // Enables or disables the ability to add a Samba Share to the Files app
diff --git a/chrome/install_static/install_util_unittest.cc b/chrome/install_static/install_util_unittest.cc index 12e1118..355be3e 100644 --- a/chrome/install_static/install_util_unittest.cc +++ b/chrome/install_static/install_util_unittest.cc
@@ -733,31 +733,31 @@ #if defined(GOOGLE_CHROME_BUILD) // Stable supports user and system levels. -INSTANTIATE_TEST_CASE_P(Stable, - InstallStaticUtilTest, - testing::Combine(testing::Values(STABLE_INDEX), - testing::Values("user", "system"))); +INSTANTIATE_TEST_SUITE_P(Stable, + InstallStaticUtilTest, + testing::Combine(testing::Values(STABLE_INDEX), + testing::Values("user", "system"))); // Beta supports user and system levels. -INSTANTIATE_TEST_CASE_P(Beta, - InstallStaticUtilTest, - testing::Combine(testing::Values(BETA_INDEX), - testing::Values("user", "system"))); +INSTANTIATE_TEST_SUITE_P(Beta, + InstallStaticUtilTest, + testing::Combine(testing::Values(BETA_INDEX), + testing::Values("user", "system"))); // Dev supports user and system levels. -INSTANTIATE_TEST_CASE_P(Dev, - InstallStaticUtilTest, - testing::Combine(testing::Values(DEV_INDEX), - testing::Values("user", "system"))); +INSTANTIATE_TEST_SUITE_P(Dev, + InstallStaticUtilTest, + testing::Combine(testing::Values(DEV_INDEX), + testing::Values("user", "system"))); // Canary is only at user level. -INSTANTIATE_TEST_CASE_P(Canary, - InstallStaticUtilTest, - testing::Combine(testing::Values(CANARY_INDEX), - testing::Values("user"))); +INSTANTIATE_TEST_SUITE_P(Canary, + InstallStaticUtilTest, + testing::Combine(testing::Values(CANARY_INDEX), + testing::Values("user"))); #else // GOOGLE_CHROME_BUILD // Chromium supports user and system levels. -INSTANTIATE_TEST_CASE_P(Chromium, - InstallStaticUtilTest, - testing::Combine(testing::Values(CHROMIUM_INDEX), - testing::Values("user", "system"))); +INSTANTIATE_TEST_SUITE_P(Chromium, + InstallStaticUtilTest, + testing::Combine(testing::Values(CHROMIUM_INDEX), + testing::Values("user", "system"))); #endif // !GOOGLE_CHROME_BUILD } // namespace install_static
diff --git a/chrome/install_static/product_install_details_unittest.cc b/chrome/install_static/product_install_details_unittest.cc index 57d33bb..3025dac 100644 --- a/chrome/install_static/product_install_details_unittest.cc +++ b/chrome/install_static/product_install_details_unittest.cc
@@ -364,8 +364,8 @@ } } -INSTANTIATE_TEST_CASE_P(All, - MakeProductDetailsTest, - testing::ValuesIn(kTestData)); +INSTANTIATE_TEST_SUITE_P(All, + MakeProductDetailsTest, + testing::ValuesIn(kTestData)); } // namespace install_static
diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py index 9791a7af..954709c 100755 --- a/chrome/test/chromedriver/test/run_py_tests.py +++ b/chrome/test/chromedriver/test/run_py_tests.py
@@ -141,6 +141,11 @@ 'ChromeDriverSiteIsolation.testCanClickOOPIF', ] +_OS_VERSION_SPECIFIC_FILTER['mac', '73'] = [ + # https://bugs.chromium.org/p/chromedriver/issues/detail?id=2710 + 'ChromeDriverSiteIsolation.testCanClickOOPIF', +] + _DESKTOP_NEGATIVE_FILTER = [ # Desktop doesn't support touch (without --touch-events). 'ChromeDriverTest.testTouchSingleTapElement',
diff --git a/chrome/test/data/extensions/no_best_effort_tasks_test_extension/background.js b/chrome/test/data/extensions/no_best_effort_tasks_test_extension/background.js new file mode 100644 index 0000000..ee7ee7d --- /dev/null +++ b/chrome/test/data/extensions/no_best_effort_tasks_test_extension/background.js
@@ -0,0 +1,10 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +chrome.runtime.onMessageExternal.addListener((request, from, sendResponse) => { + if (request.ping) { + console.info("Got ping, sending pong..."); + sendResponse({pong: true}); + } +});
diff --git a/chrome/test/data/extensions/no_best_effort_tasks_test_extension/manifest.json b/chrome/test/data/extensions/no_best_effort_tasks_test_extension/manifest.json new file mode 100644 index 0000000..6ea59be --- /dev/null +++ b/chrome/test/data/extensions/no_best_effort_tasks_test_extension/manifest.json
@@ -0,0 +1,14 @@ +{ + "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8xv6iO+j4kzj1HiBL93+XVJH/CRyAQMUHS/Z0l8nCAzaAFkW/JsNwxJqQhrZspnxLqbQxNncXs6g6bsXAwKHiEs+LSs+bIv0Gc/2ycZdhXJ8GhEsSMakog5dpQd1681c2gLK/8CrAoewE/0GIKhaFcp7a2iZlGh4Am6fgMKy0iQIDAQAB", + "name": "NoBestEffortTasksTest extension", + "version": "1", + "manifest_version": 2, + "description": "Responds to ping messages.", + "background": { + "scripts": ["background.js"], + "persistent": true + }, + "externally_connectable": { + "matches": ["*://*.chromium.org/*"] + } +}
diff --git a/chromecast/browser/url_request_context_factory.cc b/chromecast/browser/url_request_context_factory.cc index 41837c5..cec2cc2 100644 --- a/chromecast/browser/url_request_context_factory.cc +++ b/chromecast/browser/url_request_context_factory.cc
@@ -335,34 +335,17 @@ net::URLRequestContext* URLRequestContextFactory::CreateSystemRequestContext() { DCHECK_CURRENTLY_ON(content::BrowserThread::IO); InitializeSystemContextDependencies(); - net::HttpNetworkSession::Params session_params; - PopulateNetworkSessionParams(IgnoreCertificateErrors(), &session_params); system_job_factory_.reset(new net::URLRequestJobFactoryImpl()); system_cookie_store_ = content::CreateCookieStore(content::CookieStoreConfig(), net_log_); net::URLRequestContext* system_context = new net::URLRequestContext(); - system_context->set_host_resolver(host_resolver_.get()); - system_context->set_channel_id_service(channel_id_service_.get()); - system_context->set_cert_verifier(cert_verifier_.get()); - system_context->set_cert_transparency_verifier( - cert_transparency_verifier_.get()); - system_context->set_ct_policy_enforcer(ct_policy_enforcer_.get()); - system_context->set_proxy_resolution_service(proxy_resolution_service_.get()); - system_context->set_ssl_config_service(ssl_config_service_.get()); - system_context->set_transport_security_state( - transport_security_state_.get()); - system_context->set_http_auth_handler_factory( - http_auth_handler_factory_.get()); - system_context->set_http_server_properties(http_server_properties_.get()); - system_context->set_http_user_agent_settings( - http_user_agent_settings_.get()); - system_context->set_job_factory(system_job_factory_.get()); - system_context->set_cookie_store(system_cookie_store_.get()); - system_context->set_network_delegate(system_network_delegate_.get()); - system_context->set_net_log(net_log_); + ConfigureURLRequestContext(system_context, system_job_factory_, + system_cookie_store_, system_network_delegate_); + net::HttpNetworkSession::Params session_params; net::HttpNetworkSession::Context session_context; + PopulateNetworkSessionParams(IgnoreCertificateErrors(), &session_params); net::URLRequestContextBuilder::SetHttpNetworkSessionComponents( system_context, &session_context); system_transaction_factory_.reset(new net::HttpNetworkLayer( @@ -389,7 +372,7 @@ media_context->CopyFrom(main_context); media_context->set_http_transaction_factory( media_transaction_factory_.get()); - media_context->set_net_log(net_log_); + return media_context; } @@ -399,9 +382,6 @@ content::URLRequestInterceptorScopedVector request_interceptors) { DCHECK_CURRENTLY_ON(content::BrowserThread::IO); InitializeSystemContextDependencies(); - - net::HttpNetworkSession::Params session_params; - PopulateNetworkSessionParams(IgnoreCertificateErrors(), &session_params); InitializeMainContextDependencies( protocol_handlers, std::move(request_interceptors)); @@ -409,29 +389,12 @@ main_cookie_store_ = content::CreateCookieStore(cookie_config, net_log_); net::URLRequestContext* main_context = new net::URLRequestContext(); - main_context->set_host_resolver(host_resolver_.get()); - main_context->set_channel_id_service(channel_id_service_.get()); - main_context->set_cert_verifier(cert_verifier_.get()); - main_context->set_cert_transparency_verifier( - cert_transparency_verifier_.get()); - main_context->set_ct_policy_enforcer(ct_policy_enforcer_.get()); - main_context->set_proxy_resolution_service(proxy_resolution_service_.get()); - main_context->set_ssl_config_service(ssl_config_service_.get()); - main_context->set_transport_security_state(transport_security_state_.get()); - main_context->set_http_auth_handler_factory( - http_auth_handler_factory_.get()); - main_context->set_http_server_properties(http_server_properties_.get()); - main_context->set_cookie_store(main_cookie_store_.get()); - main_context->set_http_user_agent_settings( - http_user_agent_settings_.get()); + ConfigureURLRequestContext(main_context, main_job_factory_, + main_cookie_store_, app_network_delegate_); - main_context->set_http_transaction_factory( - main_transaction_factory_.get()); - main_context->set_job_factory(main_job_factory_.get()); - main_context->set_network_delegate(app_network_delegate_.get()); - main_context->set_net_log(net_log_); - + net::HttpNetworkSession::Params session_params; net::HttpNetworkSession::Context session_context; + PopulateNetworkSessionParams(IgnoreCertificateErrors(), &session_params); net::URLRequestContextBuilder::SetHttpNetworkSessionComponents( main_context, &session_context); main_transaction_factory_.reset(new net::HttpNetworkLayer( @@ -441,6 +404,31 @@ return main_context; } +void URLRequestContextFactory::ConfigureURLRequestContext( + net::URLRequestContext* context, + const std::unique_ptr<net::URLRequestJobFactory>& job_factory, + const std::unique_ptr<net::CookieStore>& cookie_store, + const std::unique_ptr<CastNetworkDelegate>& network_delegate) { + // common settings + context->set_host_resolver(host_resolver_.get()); + context->set_channel_id_service(channel_id_service_.get()); + context->set_cert_verifier(cert_verifier_.get()); + context->set_cert_transparency_verifier(cert_transparency_verifier_.get()); + context->set_ct_policy_enforcer(ct_policy_enforcer_.get()); + context->set_proxy_resolution_service(proxy_resolution_service_.get()); + context->set_ssl_config_service(ssl_config_service_.get()); + context->set_transport_security_state(transport_security_state_.get()); + context->set_http_auth_handler_factory(http_auth_handler_factory_.get()); + context->set_http_server_properties(http_server_properties_.get()); + context->set_http_user_agent_settings(http_user_agent_settings_.get()); + context->set_net_log(net_log_); + + // settings from the caller + context->set_job_factory(job_factory.get()); + context->set_cookie_store(cookie_store.get()); + context->set_network_delegate(network_delegate.get()); +} + void URLRequestContextFactory::InitializeNetworkDelegates() { app_network_delegate_->Initialize(); LOG(INFO) << "Initialized app network delegate.";
diff --git a/chromecast/browser/url_request_context_factory.h b/chromecast/browser/url_request_context_factory.h index af56b3bb..8576f8b 100644 --- a/chromecast/browser/url_request_context_factory.h +++ b/chromecast/browser/url_request_context_factory.h
@@ -93,6 +93,13 @@ content::ProtocolHandlerMap* protocol_handlers, content::URLRequestInterceptorScopedVector request_interceptors); + // Helper function for configuring the settings of URLRequestContext + void ConfigureURLRequestContext( + net::URLRequestContext* context, + const std::unique_ptr<net::URLRequestJobFactory>& job_factory, + const std::unique_ptr<net::CookieStore>& cookie_store, + const std::unique_ptr<CastNetworkDelegate>& network_delegate); + scoped_refptr<net::URLRequestContextGetter> system_getter_; scoped_refptr<net::URLRequestContextGetter> media_getter_; scoped_refptr<net::URLRequestContextGetter> main_getter_;
diff --git a/chromeos/account_manager/account_manager_unittest.cc b/chromeos/account_manager/account_manager_unittest.cc index aeacdd8f..81fcd2c5 100644 --- a/chromeos/account_manager/account_manager_unittest.cc +++ b/chromeos/account_manager/account_manager_unittest.cc
@@ -46,10 +46,7 @@ class AccountManagerTest : public testing::Test { public: - AccountManagerTest() - : test_shared_loader_factory_( - base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>( - &test_url_loader_factory_)) {} + AccountManagerTest() {} ~AccountManagerTest() override {} protected: @@ -58,8 +55,6 @@ ResetAndInitializeAccountManager(); } - void TearDown() override { test_shared_loader_factory_->Detach(); } - // Gets the list of accounts stored in |account_manager_|. std::vector<AccountManager::AccountKey> GetAccountsBlocking() { std::vector<AccountManager::AccountKey> accounts; @@ -83,7 +78,7 @@ void ResetAndInitializeAccountManager() { account_manager_ = std::make_unique<AccountManagerSpy>(); account_manager_->Initialize( - tmp_dir_.GetPath(), test_shared_loader_factory_, + tmp_dir_.GetPath(), test_url_loader_factory_.GetSafeWeakWrapper(), immediate_callback_runner_, base::SequencedTaskRunnerHandle::Get()); } @@ -93,8 +88,6 @@ base::ScopedTempDir tmp_dir_; network::TestURLLoaderFactory test_url_loader_factory_; - scoped_refptr<network::WeakWrapperSharedURLLoaderFactory> - test_shared_loader_factory_; std::unique_ptr<AccountManagerSpy> account_manager_; const AccountManager::AccountKey kGaiaAccountKey_{ @@ -153,9 +146,9 @@ EXPECT_EQ(account_manager.init_state_, AccountManager::InitializationState::kNotStarted); - account_manager.Initialize(tmp_dir_.GetPath(), test_shared_loader_factory_, - immediate_callback_runner_, - base::SequencedTaskRunnerHandle::Get()); + account_manager.Initialize( + tmp_dir_.GetPath(), test_url_loader_factory_.GetSafeWeakWrapper(), + immediate_callback_runner_, base::SequencedTaskRunnerHandle::Get()); scoped_task_environment_.RunUntilIdle(); EXPECT_EQ(account_manager.init_state_, AccountManager::InitializationState::kInitialized);
diff --git a/chromeos/geolocation/simple_geolocation_unittest.cc b/chromeos/geolocation/simple_geolocation_unittest.cc index bda0791..4768469 100644 --- a/chromeos/geolocation/simple_geolocation_unittest.cc +++ b/chromeos/geolocation/simple_geolocation_unittest.cc
@@ -448,9 +448,9 @@ } // This test verifies that WiFi data is sent only if sending was requested. -INSTANTIATE_TEST_CASE_P(EnableDisableSendingWifiData, - SimpleGeolocationWirelessTest, - testing::Bool()); +INSTANTIATE_TEST_SUITE_P(EnableDisableSendingWifiData, + SimpleGeolocationWirelessTest, + testing::Bool()); TEST_P(SimpleGeolocationWirelessTest, CellularExists) { NetworkHandler::Initialize();
diff --git a/chromeos/network/onc/onc_certificate_importer_impl_unittest.cc b/chromeos/network/onc/onc_certificate_importer_impl_unittest.cc index d2b387c..afa0dccf 100644 --- a/chromeos/network/onc/onc_certificate_importer_impl_unittest.cc +++ b/chromeos/network/onc/onc_certificate_importer_impl_unittest.cc
@@ -338,19 +338,18 @@ } } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ONCCertificateImporterImplTestWithParam, ONCCertificateImporterImplTestWithParam, - ::testing::Values( - CertParam(net::USER_CERT, - "certificate-client.onc", - "certificate-client-update.onc"), - CertParam(net::SERVER_CERT, - "certificate-server.onc", - "certificate-server-update.onc"), - CertParam(net::CA_CERT, - "certificate-web-authority.onc", - "certificate-web-authority-update.onc"))); + ::testing::Values(CertParam(net::USER_CERT, + "certificate-client.onc", + "certificate-client-update.onc"), + CertParam(net::SERVER_CERT, + "certificate-server.onc", + "certificate-server-update.onc"), + CertParam(net::CA_CERT, + "certificate-web-authority.onc", + "certificate-web-authority-update.onc"))); } // namespace onc } // namespace chromeos
diff --git a/chromeos/network/onc/onc_translator_unittest.cc b/chromeos/network/onc/onc_translator_unittest.cc index ccfe95c6..3202a2c4 100644 --- a/chromeos/network/onc/onc_translator_unittest.cc +++ b/chromeos/network/onc/onc_translator_unittest.cc
@@ -40,7 +40,7 @@ // Test different network types, such that each ONC object type is tested at // least once. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ONCTranslatorOncToShillTest, ONCTranslatorOncToShillTest, ::testing::Values( @@ -104,7 +104,7 @@ translation.get())); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ONCTranslatorShillToOncTest, ONCTranslatorShillToOncTest, ::testing::Values(
diff --git a/chromeos/network/onc/onc_validator_unittest.cc b/chromeos/network/onc/onc_validator_unittest.cc index 675cedb4..76d03f71 100644 --- a/chromeos/network/onc/onc_validator_unittest.cc +++ b/chromeos/network/onc/onc_validator_unittest.cc
@@ -141,7 +141,7 @@ // OncParams(string: Filename of a ONC file that is to be validated, // OncValueSignature: signature of that ONC, // bool: true if the ONC is managed). -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ONCValidatorValidTest, ONCValidatorValidTest, ::testing::Values( @@ -344,7 +344,7 @@ // Strict validator returns INVALID. Liberal validator returns // VALID_WITH_WARNINGS (unrepaired). -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( StrictInvalidLiberalValidWithWarnings, ONCValidatorTestRepairable, ::testing::Values( @@ -392,7 +392,7 @@ "tether-missing-signal-strength")))); // Strict validator returns INVALID. Liberal validator repairs. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( StrictInvalidLiberalRepair, ONCValidatorTestRepairable, ::testing::Values( @@ -440,7 +440,7 @@ "toplevel-with-repaired-networks")))); // Strict and liberal validator repair identically. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( StrictAndLiberalRepairIdentically, ONCValidatorTestRepairable, ::testing::Values( @@ -487,7 +487,7 @@ "wifi-ssid-and-hexssid-repaired")))); // Strict and liberal validator both repair, but with different results. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( StrictAndLiberalRepairDifferently, ONCValidatorTestRepairable, ::testing::Values(std::make_pair(OncParams("toplevel-with-nested-warning", @@ -497,7 +497,7 @@ "toplevel-repaired")))); // Strict and liberal validator return both INVALID. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( StrictAndLiberalInvalid, ONCValidatorTestRepairable, ::testing::Values(
diff --git a/chromeos/services/device_sync/cryptauth_key.cc b/chromeos/services/device_sync/cryptauth_key.cc index 34e81ad..f23428b 100644 --- a/chromeos/services/device_sync/cryptauth_key.cc +++ b/chromeos/services/device_sync/cryptauth_key.cc
@@ -61,18 +61,35 @@ return base::nullopt; if (IsSymmetricKeyType(type)) { - const std::string* symmetric_key = dict.FindStringKey(kSymmetricKeyDictKey); - if (!symmetric_key || symmetric_key->empty()) + const std::string* encoded_symmetric_key = + dict.FindStringKey(kSymmetricKeyDictKey); + if (!encoded_symmetric_key || encoded_symmetric_key->empty()) return base::nullopt; - return CryptAuthKey(*symmetric_key, status, type, *handle); + + std::string decoded_symmetric_key; + if (!base::Base64Decode(*encoded_symmetric_key, &decoded_symmetric_key)) + return base::nullopt; + + return CryptAuthKey(decoded_symmetric_key, status, type, *handle); } DCHECK(IsAsymmetricKeyType(type)); - const std::string* public_key = dict.FindStringKey(kPublicKeyDictKey); - const std::string* private_key = dict.FindStringKey(kPrivateKeyDictKey); - if (!public_key || public_key->empty() || !private_key) + const std::string* encoded_public_key = dict.FindStringKey(kPublicKeyDictKey); + const std::string* encoded_private_key = + dict.FindStringKey(kPrivateKeyDictKey); + if (!encoded_public_key || encoded_public_key->empty() || + !encoded_private_key) { return base::nullopt; - return CryptAuthKey(*public_key, *private_key, status, type, *handle); + } + + std::string decoded_public_key, decoded_private_key; + if (!base::Base64Decode(*encoded_public_key, &decoded_public_key) || + !base::Base64Decode(*encoded_private_key, &decoded_private_key)) { + return base::nullopt; + } + + return CryptAuthKey(decoded_public_key, decoded_private_key, status, type, + *handle); } CryptAuthKey::CryptAuthKey(const std::string& symmetric_key, @@ -117,22 +134,34 @@ base::Value CryptAuthKey::AsSymmetricKeyDictionary() const { DCHECK(IsSymmetricKey()); + base::Value dict(base::Value::Type::DICTIONARY); dict.SetKey(kHandleDictKey, base::Value(handle_)); dict.SetKey(kStatusDictKey, base::Value(status_)); dict.SetKey(kTypeDictKey, base::Value(type_)); - dict.SetKey(kSymmetricKeyDictKey, base::Value(symmetric_key_)); + + std::string encoded_symmetric_key; + base::Base64Encode(symmetric_key_, &encoded_symmetric_key); + dict.SetKey(kSymmetricKeyDictKey, base::Value(encoded_symmetric_key)); + return dict; } base::Value CryptAuthKey::AsAsymmetricKeyDictionary() const { DCHECK(IsAsymmetricKey()); + base::Value dict(base::Value::Type::DICTIONARY); dict.SetKey(kHandleDictKey, base::Value(handle_)); dict.SetKey(kStatusDictKey, base::Value(status_)); dict.SetKey(kTypeDictKey, base::Value(type_)); - dict.SetKey(kPublicKeyDictKey, base::Value(public_key_)); - dict.SetKey(kPrivateKeyDictKey, base::Value(private_key_)); + + std::string encoded_public_key; + base::Base64Encode(public_key_, &encoded_public_key); + dict.SetKey(kPublicKeyDictKey, base::Value(encoded_public_key)); + std::string encoded_private_key; + base::Base64Encode(private_key_, &encoded_private_key); + dict.SetKey(kPrivateKeyDictKey, base::Value(encoded_private_key)); + return dict; }
diff --git a/chromeos/services/device_sync/cryptauth_key_unittest.cc b/chromeos/services/device_sync/cryptauth_key_unittest.cc index 4d7e6bc3..a6ca54a2 100644 --- a/chromeos/services/device_sync/cryptauth_key_unittest.cc +++ b/chromeos/services/device_sync/cryptauth_key_unittest.cc
@@ -13,12 +13,15 @@ const char kFakeHandle[] = "fake-handle"; const char kFakeSymmetricKey[] = "fake-symmetric-key"; -const char kFakePublicKey[] = "fake-public-key"; -const char kFakePrivateKey[] = "fake-private-key"; +const char kFakeSymmetricKeyBase64[] = "ZmFrZS1zeW1tZXRyaWMta2V5"; const char kFakeSymmetricKeySha256HashBase64[] = "+lh4oqYTenQmzyIY8XJreGDJ95A4Sk41c15BQPKOmCY="; +const char kFakePublicKey[] = "fake-public-key"; +const char kFakePublicKeyBase64[] = "ZmFrZS1wdWJsaWMta2V5"; const char kFakePublicKeySha256HashBase64[] = "vj5oRVhZmlDrE4G4RKNV37Etgr/XuNOwEFAzb888/KM="; +const char kFakePrivateKey[] = "fake-private-key"; +const char kFakePrivateKeyBase64[] = "ZmFrZS1wcml2YXRlLWtleQ=="; } // namespace @@ -65,7 +68,7 @@ dict.SetKey("handle", base::Value(kFakeHandle)); dict.SetKey("status", base::Value(CryptAuthKey::Status::kActive)); dict.SetKey("type", base::Value(cryptauthv2::KeyType::RAW256)); - dict.SetKey("symmetric_key", base::Value(kFakeSymmetricKey)); + dict.SetKey("symmetric_key", base::Value(kFakeSymmetricKeyBase64)); EXPECT_EQ(symmetric_key.AsSymmetricKeyDictionary(), dict); } @@ -79,8 +82,8 @@ dict.SetKey("handle", base::Value(kFakeHandle)); dict.SetKey("status", base::Value(CryptAuthKey::Status::kActive)); dict.SetKey("type", base::Value(cryptauthv2::KeyType::P256)); - dict.SetKey("public_key", base::Value(kFakePublicKey)); - dict.SetKey("private_key", base::Value(kFakePrivateKey)); + dict.SetKey("public_key", base::Value(kFakePublicKeyBase64)); + dict.SetKey("private_key", base::Value(kFakePrivateKeyBase64)); EXPECT_EQ(asymmetric_key.AsAsymmetricKeyDictionary(), dict); } @@ -90,7 +93,7 @@ dict.SetKey("handle", base::Value(kFakeHandle)); dict.SetKey("status", base::Value(CryptAuthKey::Status::kActive)); dict.SetKey("type", base::Value(cryptauthv2::KeyType::RAW256)); - dict.SetKey("symmetric_key", base::Value(kFakeSymmetricKey)); + dict.SetKey("symmetric_key", base::Value(kFakeSymmetricKeyBase64)); base::Optional<CryptAuthKey> key = CryptAuthKey::FromDictionary(dict); ASSERT_TRUE(key); @@ -103,8 +106,8 @@ dict.SetKey("handle", base::Value(kFakeHandle)); dict.SetKey("status", base::Value(CryptAuthKey::Status::kActive)); dict.SetKey("type", base::Value(cryptauthv2::KeyType::P256)); - dict.SetKey("public_key", base::Value(kFakePublicKey)); - dict.SetKey("private_key", base::Value(kFakePrivateKey)); + dict.SetKey("public_key", base::Value(kFakePublicKeyBase64)); + dict.SetKey("private_key", base::Value(kFakePrivateKeyBase64)); base::Optional<CryptAuthKey> key = CryptAuthKey::FromDictionary(dict); ASSERT_TRUE(key);
diff --git a/components/arc/arc_session_impl_unittest.cc b/components/arc/arc_session_impl_unittest.cc index 915dc88d..2cd6bae8 100644 --- a/components/arc/arc_session_impl_unittest.cc +++ b/components/arc/arc_session_impl_unittest.cc
@@ -632,9 +632,9 @@ .packages_cache_mode()); } -INSTANTIATE_TEST_CASE_P(, - ArcSessionImplPackagesCacheModeTest, - ::testing::ValuesIn(kPackagesCacheModeStates)); +INSTANTIATE_TEST_SUITE_P(, + ArcSessionImplPackagesCacheModeTest, + ::testing::ValuesIn(kPackagesCacheModeStates)); TEST_F(ArcSessionImplTest, DemoSession) { auto arc_session = CreateArcSession();
diff --git a/components/arc/common/accessibility_helper.mojom b/components/arc/common/accessibility_helper.mojom index 8c01c58..ab77404c 100644 --- a/components/arc/common/accessibility_helper.mojom +++ b/components/arc/common/accessibility_helper.mojom
@@ -307,7 +307,7 @@ ALL, // Send complete subtrees for root nodes with whitelisted package names. - [MinVersion=2] WHITELISTED_PACKAGE_NAME + [MinVersion=2] WHITELISTED_PACKAGE_NAME_DEPRECATED }; [Extensible]
diff --git a/components/autofill/core/browser/autofill_wallet_data_type_controller.cc b/components/autofill/core/browser/autofill_wallet_data_type_controller.cc index 0459e25..56cbb60 100644 --- a/components/autofill/core/browser/autofill_wallet_data_type_controller.cc +++ b/components/autofill/core/browser/autofill_wallet_data_type_controller.cc
@@ -11,6 +11,7 @@ #include "components/autofill/core/browser/webdata/autofill_webdata_service.h" #include "components/autofill/core/common/autofill_prefs.h" #include "components/prefs/pref_service.h" +#include "components/sync/base/data_type_histogram.h" #include "components/sync/driver/sync_client.h" #include "components/sync/driver/sync_service.h" #include "components/sync/model/sync_error.h" @@ -97,8 +98,13 @@ !currently_enabled_) { autofill::PersonalDataManager* pdm = sync_client()->GetPersonalDataManager(); - if (pdm) + if (pdm) { + int count = pdm->GetServerCreditCards().size() + + pdm->GetServerProfiles().size() + + (pdm->GetPaymentsCustomerData() == nullptr ? 0 : 1); + SyncWalletDataRecordClearedEntitiesCount(count); pdm->ClearAllServerData(); + } } } }
diff --git a/components/autofill/core/browser/autofill_wallet_data_type_controller_unittest.cc b/components/autofill/core/browser/autofill_wallet_data_type_controller_unittest.cc index 1d39186..ca9744db 100644 --- a/components/autofill/core/browser/autofill_wallet_data_type_controller_unittest.cc +++ b/components/autofill/core/browser/autofill_wallet_data_type_controller_unittest.cc
@@ -121,7 +121,7 @@ autofill_wallet_dtc_->SetGenericChangeProcessorFactoryForTest( std::make_unique<syncer::FakeGenericChangeProcessorFactory>( std::make_unique<syncer::FakeGenericChangeProcessor>( - syncer::AUTOFILL_WALLET_DATA, this))); + syncer::AUTOFILL_WALLET_DATA))); } void Start() {
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.cc b/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.cc index 8631ea7..b4d1154 100644 --- a/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.cc +++ b/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.cc
@@ -21,6 +21,7 @@ #include "components/autofill/core/browser/webdata/autofill_webdata_backend.h" #include "components/autofill/core/browser/webdata/autofill_webdata_service.h" #include "components/autofill/core/common/autofill_util.h" +#include "components/sync/base/data_type_histogram.h" #include "components/sync/driver/sync_driver_switches.h" #include "components/sync/model/entity_data.h" #include "components/sync/model/mutable_data_batch.h" @@ -262,6 +263,21 @@ if (initial_sync_done_) { active_callback_.Run(false); } + + // Report count of entities to delete. This use case should be pretty rare + // so it is okay to read it from DB again. + // TODO(crbug.com/853688): Remove when wallet data is launched on USS, incl. + // the helper function SyncWalletDataRecordClearedEntitiesCount(). + std::vector<std::unique_ptr<AutofillProfile>> profiles; + std::vector<std::unique_ptr<CreditCard>> cards; + std::unique_ptr<PaymentsCustomerData> customer_data; + if (GetAutofillTable()->GetServerProfiles(&profiles) && + GetAutofillTable()->GetServerCreditCards(&cards) && + GetAutofillTable()->GetPaymentsCustomerData(&customer_data)) { + int count = profiles.size() + cards.size() + (customer_data ? 1 : 0); + SyncWalletDataRecordClearedEntitiesCount(count); + } + SetSyncData(syncer::EntityChangeList()); initial_sync_done_ = false;
diff --git a/components/autofill_assistant/browser/BUILD.gn b/components/autofill_assistant/browser/BUILD.gn index 653504d6..9e69040 100644 --- a/components/autofill_assistant/browser/BUILD.gn +++ b/components/autofill_assistant/browser/BUILD.gn
@@ -22,6 +22,7 @@ java_cpp_enum("autofill_assistant_enums_java") { sources = [ "chip.h", + "metrics.h", ] } @@ -80,6 +81,8 @@ "details.h", "element_area.cc", "element_area.h", + "metrics.cc", + "metrics.h", "payment_information.h", "protocol_utils.cc", "protocol_utils.h",
diff --git a/components/autofill_assistant/browser/actions/autofill_action.cc b/components/autofill_assistant/browser/actions/autofill_action.cc index 1567b79..e5573c3 100644 --- a/components/autofill_assistant/browser/actions/autofill_action.cc +++ b/components/autofill_assistant/browser/actions/autofill_action.cc
@@ -19,7 +19,6 @@ namespace autofill_assistant { - AutofillAction::AutofillAction(const ActionProto& proto) : Action(proto), weak_ptr_factory_(this) { if (proto.has_use_address()) {
diff --git a/components/autofill_assistant/browser/actions/autofill_action_unittest.cc b/components/autofill_assistant/browser/actions/autofill_action_unittest.cc index a8953b8..f0e0a1f 100644 --- a/components/autofill_assistant/browser/actions/autofill_action_unittest.cc +++ b/components/autofill_assistant/browser/actions/autofill_action_unittest.cc
@@ -193,8 +193,11 @@ action_proto.mutable_use_address()->set_prompt(kSelectionPrompt); // No selection was made previously. - EXPECT_CALL(mock_client_memory_, has_selected_address(kAddressName)) - .WillOnce(Return(true)); + // Note: We use ON_CALL instead of EXPECT_CALL as the `has_selected_address` + // call is made inside a DCHECK, which means this won't be called when testing + // a release build. + ON_CALL(mock_client_memory_, has_selected_address(kAddressName)) + .WillByDefault(Return(true)); ExpectActionToStopScript(action_proto, kFillForm); }
diff --git a/components/autofill_assistant/browser/controller.cc b/components/autofill_assistant/browser/controller.cc index 5a82a20..8e3541ad 100644 --- a/components/autofill_assistant/browser/controller.cc +++ b/components/autofill_assistant/browser/controller.cc
@@ -12,6 +12,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/task/post_task.h" #include "base/values.h" +#include "components/autofill_assistant/browser/metrics.h" #include "components/autofill_assistant/browser/protocol_utils.h" #include "components/autofill_assistant/browser/ui_controller.h" #include "components/strings/grit/components_strings.h" @@ -206,6 +207,7 @@ should_fail_after_checking_scripts_ = false; SetStatusMessage( l10n_util::GetStringUTF8(IDS_AUTOFILL_ASSISTANT_DEFAULT_ERROR)); + stop_reason_ = Metrics::AUTOSTART_TIMEOUT; EnterState(AutofillAssistantState::STOPPED); return; } @@ -266,6 +268,7 @@ LOG(ERROR) << "Failed to execute script " << script_path; SetStatusMessage( l10n_util::GetStringUTF8(IDS_AUTOFILL_ASSISTANT_DEFAULT_ERROR)); + stop_reason_ = Metrics::SCRIPT_FAILED; EnterState(AutofillAssistantState::STOPPED); return; } @@ -280,15 +283,21 @@ switch (result.at_end) { case ScriptExecutor::SHUTDOWN: + GetUiController()->Shutdown(Metrics::SCRIPT_SHUTDOWN); + return; case ScriptExecutor::TERMINATE: // TODO(crbug.com/806868): Distinguish shutdown from terminate: Users // should be allowed to undo shutdown, but not terminate. - - GetUiController()->Shutdown(); // indirectly deletes this + // + // This is coming from a client Stop() to clean up and we already counted + // it as a stop event. The code here is only executed if no script was + // running, so there may be some double counting. + GetUiController()->Shutdown(Metrics::SAFETY_NET_TERMINATE); return; case ScriptExecutor::SHUTDOWN_GRACEFULLY: GetWebController()->ClearCookie(); + stop_reason_ = Metrics::SCRIPT_SHUTDOWN; EnterState(AutofillAssistantState::STOPPED); return; @@ -312,8 +321,9 @@ GetOrCheckScripts(web_contents()->GetLastCommittedURL()); } -void Controller::GiveUp() { +void Controller::GiveUp(Metrics::DropOutReason reason) { SetStatusMessage(l10n_util::GetStringUTF8(IDS_AUTOFILL_ASSISTANT_GIVE_UP)); + stop_reason_ = reason; EnterState(AutofillAssistantState::STOPPED); } @@ -461,13 +471,17 @@ return output_js; } +Metrics::DropOutReason Controller::GetDropOutReason() const { + return stop_reason_; +} + void Controller::OnNoRunnableScriptsAnymore() { if (script_tracker()->running()) return; // We're navigated to a page that has no scripts or the scripts have reached a // state from which they cannot recover through a DOM change. - GiveUp(); + GiveUp(Metrics::NO_SCRIPTS); return; } @@ -530,7 +544,7 @@ } void Controller::DidAttachInterstitialPage() { - GetUiController()->Shutdown(); + GetUiController()->Shutdown(Metrics::INTERSTITIAL_PAGE); } void Controller::DidFinishLoad(content::RenderFrameHost* render_frame_host, @@ -569,7 +583,7 @@ // The action can define a touchable element area that prevents navigation. if (!script_tracker_ || !script_tracker()->running() || touchable_element_area()->HasElements()) { - GiveUp(); + GiveUp(Metrics::NAVIGATION); } } } @@ -579,7 +593,7 @@ } void Controller::RenderProcessGone(base::TerminationStatus status) { - GetUiController()->Shutdown(); + GetUiController()->Shutdown(Metrics::RENDER_PROCESS_GONE); } void Controller::LoadProgressChanged(content::WebContents* source,
diff --git a/components/autofill_assistant/browser/controller.h b/components/autofill_assistant/browser/controller.h index 36fa10e..0bf5641 100644 --- a/components/autofill_assistant/browser/controller.h +++ b/components/autofill_assistant/browser/controller.h
@@ -14,6 +14,7 @@ #include "components/autofill_assistant/browser/client.h" #include "components/autofill_assistant/browser/client_memory.h" #include "components/autofill_assistant/browser/element_area.h" +#include "components/autofill_assistant/browser/metrics.h" #include "components/autofill_assistant/browser/script.h" #include "components/autofill_assistant/browser/script_executor_delegate.h" #include "components/autofill_assistant/browser/script_tracker.h" @@ -102,7 +103,7 @@ void StartPeriodicScriptChecks(); void StopPeriodicScriptChecks(); void OnPeriodicScriptCheck(); - void GiveUp(); + void GiveUp(Metrics::DropOutReason reason); // Runs autostart scripts from |runnable_scripts|, if the conditions are // right. Returns true if a script was auto-started. @@ -128,6 +129,7 @@ void OnUserInteractionInsideTouchableArea() override; const Details* GetDetails() const override; std::string GetDebugContext() override; + Metrics::DropOutReason GetDropOutReason() const override; // Overrides ScriptTracker::Listener: void OnNoRunnableScriptsAnymore() override; @@ -197,6 +199,9 @@ // Flag indicates whether it is ready to fetch and execute scripts. bool started_ = false; + // Drop out reason set when the controller enters a STOPPED state. + Metrics::DropOutReason stop_reason_ = Metrics::AA_START; + // Tracks scripts and script execution. It's kept at the end, as it tend to // depend on everything the controller support, through script and script // actions.
diff --git a/components/autofill_assistant/browser/controller_unittest.cc b/components/autofill_assistant/browser/controller_unittest.cc index 82a6d9d6..aea610c1 100644 --- a/components/autofill_assistant/browser/controller_unittest.cc +++ b/components/autofill_assistant/browser/controller_unittest.cc
@@ -266,7 +266,7 @@ EXPECT_CALL(*mock_service_, OnGetNextActions(_, _, _, _)) .WillOnce(RunOnceCallback<3>(true, "")); - EXPECT_CALL(mock_ui_controller_, Shutdown()); + EXPECT_CALL(mock_ui_controller_, Shutdown(_)); ExecuteScript("stop"); }
diff --git a/components/autofill_assistant/browser/metrics.cc b/components/autofill_assistant/browser/metrics.cc new file mode 100644 index 0000000..4be484a --- /dev/null +++ b/components/autofill_assistant/browser/metrics.cc
@@ -0,0 +1,21 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/autofill_assistant/browser/metrics.h" + +#include "base/metrics/histogram_macros.h" + +namespace autofill_assistant { + +namespace { +const char* const kDropOutEnumName = "Android.AutofillAssistant.DropOutReason"; +} // namespace + +// static +void Metrics::RecordDropOut(DropOutReason reason) { + DCHECK_LE(reason, DropOutReason::NUM_ENTRIES); + UMA_HISTOGRAM_ENUMERATION(kDropOutEnumName, reason, NUM_ENTRIES); +} + +} // namespace autofill_assistant
diff --git a/components/autofill_assistant/browser/metrics.h b/components/autofill_assistant/browser/metrics.h new file mode 100644 index 0000000..f8fbf27 --- /dev/null +++ b/components/autofill_assistant/browser/metrics.h
@@ -0,0 +1,44 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_METRICS_H_ +#define COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_METRICS_H_ + +namespace autofill_assistant { + +// A class to generate Autofill Assistant related histograms. +class Metrics { + public: + // The different ways that autofill assistant can stop. + // + // GENERATED_JAVA_ENUM_PACKAGE: ( + // org.chromium.chrome.browser.autofill_assistant.metrics) + // GENERATED_JAVA_CLASS_NAME_OVERRIDE: DropOutReason + enum DropOutReason { + AA_START = 0, + AUTOSTART_TIMEOUT = 1, + NO_SCRIPTS = 2, + CUSTOM_TAB_CLOSED = 3, + DECLINED = 4, + SHEET_CLOSED = 5, + SCRIPT_FAILED = 6, + NAVIGATION = 7, + OVERLAY_STOP = 8, + PR_FAILED = 9, + CONTENT_DESTROYED = 10, + RENDER_PROCESS_GONE = 11, + INTERSTITIAL_PAGE = 12, + SCRIPT_SHUTDOWN = 13, + SAFETY_NET_TERMINATE = 14, // This is a "should never happen" entry. + TAB_DETACHED = 15, + TAB_CHANGED = 16, + NUM_ENTRIES = 17, + }; + + static void RecordDropOut(DropOutReason reason); +}; + +} // namespace autofill_assistant + +#endif // COMPONENTS_AUTOFILL_ASSISTANT_BROWSER_METRICS_H_
diff --git a/components/autofill_assistant/browser/mock_ui_controller.h b/components/autofill_assistant/browser/mock_ui_controller.h index 2e21e9b..9283a2f 100644 --- a/components/autofill_assistant/browser/mock_ui_controller.h +++ b/components/autofill_assistant/browser/mock_ui_controller.h
@@ -10,6 +10,7 @@ #include <vector> #include "base/callback.h" +#include "components/autofill_assistant/browser/metrics.h" #include "components/autofill_assistant/browser/script.h" #include "components/autofill_assistant/browser/ui_controller.h" #include "testing/gmock/include/gmock/gmock.h" @@ -23,7 +24,7 @@ MOCK_METHOD1(OnStatusMessageChanged, void(const std::string& message)); MOCK_METHOD1(OnStateChanged, void(AutofillAssistantState)); - MOCK_METHOD0(Shutdown, void()); + MOCK_METHOD1(Shutdown, void(Metrics::DropOutReason)); MOCK_METHOD0(Close, void()); MOCK_METHOD1(SetChips, void(std::unique_ptr<std::vector<Chip>> chips)); MOCK_METHOD0(ClearChips, void()); @@ -41,6 +42,7 @@ void(bool enabled, const std::vector<RectF>& areas)); MOCK_CONST_METHOD0(Terminate, bool()); MOCK_METHOD0(ExpandBottomSheet, void()); + MOCK_CONST_METHOD0(GetDropOutReason, Metrics::DropOutReason()); }; } // namespace autofill_assistant
diff --git a/components/autofill_assistant/browser/script_executor.cc b/components/autofill_assistant/browser/script_executor.cc index 18f6828..9c5770c6 100644 --- a/components/autofill_assistant/browser/script_executor.cc +++ b/components/autofill_assistant/browser/script_executor.cc
@@ -541,7 +541,6 @@ check_type_(check_type), selector_(selector), callback_(std::move(callback)), - element_found_(false), weak_ptr_factory_(this) {} ScriptExecutor::WaitWithInterrupts::~WaitWithInterrupts() = default; @@ -653,7 +652,7 @@ RunCallback(false, &result); return; } - RestorePreInterruptUiState(); + RestoreStatusMessage(); // Restart. We use the original wait time since the interruption could have // triggered any kind of actions, including actions that wait on the user. We @@ -681,7 +680,7 @@ saved_pre_interrupt_state_ = true; } -void ScriptExecutor::WaitWithInterrupts::RestorePreInterruptUiState() { +void ScriptExecutor::WaitWithInterrupts::RestoreStatusMessage() { if (!saved_pre_interrupt_state_) return;
diff --git a/components/autofill_assistant/browser/script_executor.h b/components/autofill_assistant/browser/script_executor.h index 4f1319a..3a055d9f 100644 --- a/components/autofill_assistant/browser/script_executor.h +++ b/components/autofill_assistant/browser/script_executor.h
@@ -209,7 +209,7 @@ void SavePreInterruptState(); // Restores the UI states as found by SavePreInterruptState. - void RestorePreInterruptUiState(); + void RestoreStatusMessage(); // if save_pre_interrupt_state_ is set, attempt to scroll the page back to // the original area. @@ -223,7 +223,7 @@ std::unique_ptr<BatchElementChecker> batch_element_checker_; std::set<const Script*> runnable_interrupts_; - bool element_found_; + bool element_found_ = false; // An empty vector of interrupts that can be passed to interrupt_executor_ // and outlives it. Interrupts must not run interrupts. @@ -234,7 +234,7 @@ // If true, pre-interrupt state was saved already. This happens just before // the first interrupt. - bool saved_pre_interrupt_state_; + bool saved_pre_interrupt_state_ = false; // The status message that was displayed when the interrupt started. std::string pre_interrupt_status_;
diff --git a/components/autofill_assistant/browser/script_executor_unittest.cc b/components/autofill_assistant/browser/script_executor_unittest.cc index c03005b..9a4b391 100644 --- a/components/autofill_assistant/browser/script_executor_unittest.cc +++ b/components/autofill_assistant/browser/script_executor_unittest.cc
@@ -894,5 +894,54 @@ EXPECT_THAT("update_from_interrupt", scripts_update_[0]->handle.name); } +TEST_F(ScriptExecutorTest, RestorePreInterruptStatusMessage) { + ActionsResponseProto interruptible; + interruptible.add_actions()->mutable_tell()->set_message( + "pre-interrupt status"); + auto* wait_action = interruptible.add_actions()->mutable_wait_for_dom(); + wait_action->add_selectors("element"); + wait_action->set_allow_interrupt(true); + EXPECT_CALL(mock_service_, OnGetActions(kScriptPath, _, _, _, _, _)) + .WillRepeatedly(RunOnceCallback<5>(true, Serialize(interruptible))); + + RegisterInterrupt("interrupt", "interrupt_trigger"); + ActionsResponseProto interrupt_actions; + interrupt_actions.add_actions()->mutable_tell()->set_message( + "interrupt status"); + EXPECT_CALL(mock_service_, OnGetActions(StrEq("interrupt"), _, _, _, _, _)) + .WillRepeatedly(RunOnceCallback<5>(true, Serialize(interrupt_actions))); + + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _)) + .WillRepeatedly(RunOnceCallback<3>(true, "")); + + EXPECT_CALL(executor_callback_, + Run(Field(&ScriptExecutor::Result::success, true))); + + status_message_ = "pre-run status"; + executor_->Run(executor_callback_.Get()); + EXPECT_EQ("pre-interrupt status", status_message_); +} + +TEST_F(ScriptExecutorTest, KeepStatusMessageWhenNotInterrupted) { + ActionsResponseProto interruptible; + interruptible.add_actions()->mutable_tell()->set_message( + "pre-interrupt status"); + auto* wait_action = interruptible.add_actions()->mutable_wait_for_dom(); + wait_action->add_selectors("element"); + wait_action->set_allow_interrupt(true); + EXPECT_CALL(mock_service_, OnGetActions(kScriptPath, _, _, _, _, _)) + .WillRepeatedly(RunOnceCallback<5>(true, Serialize(interruptible))); + + EXPECT_CALL(mock_service_, OnGetNextActions(_, _, _, _)) + .WillRepeatedly(RunOnceCallback<3>(true, "")); + + EXPECT_CALL(executor_callback_, + Run(Field(&ScriptExecutor::Result::success, true))); + + status_message_ = "pre-run status"; + executor_->Run(executor_callback_.Get()); + EXPECT_EQ("pre-interrupt status", status_message_); +} + } // namespace } // namespace autofill_assistant
diff --git a/components/autofill_assistant/browser/service.cc b/components/autofill_assistant/browser/service.cc index 6ab13a4..7f564fcbb 100644 --- a/components/autofill_assistant/browser/service.cc +++ b/components/autofill_assistant/browser/service.cc
@@ -229,6 +229,8 @@ << loader_instance->loader->NetError() << " response_code=" << response_code << " message=" << (response_body == nullptr ? "" : *response_body); + // TODO(crbug.com/806868): Pass an enum to be able to distinguish errors + // downstream. Also introduce a metric for this. std::move(loader_instance->callback).Run(false, response_body_str); return; }
diff --git a/components/autofill_assistant/browser/ui_controller.h b/components/autofill_assistant/browser/ui_controller.h index a51eb461..788eea7 100644 --- a/components/autofill_assistant/browser/ui_controller.h +++ b/components/autofill_assistant/browser/ui_controller.h
@@ -12,6 +12,7 @@ #include "base/callback_forward.h" #include "components/autofill_assistant/browser/chip.h" #include "components/autofill_assistant/browser/details.h" +#include "components/autofill_assistant/browser/metrics.h" #include "components/autofill_assistant/browser/payment_information.h" #include "components/autofill_assistant/browser/script.h" #include "components/autofill_assistant/browser/state.h" @@ -34,7 +35,7 @@ // Shuts down Autofill Assistant: hide the UI and frees any associated state. // // Warning: this indirectly deletes the caller. - virtual void Shutdown() = 0; + virtual void Shutdown(Metrics::DropOutReason reason) = 0; // Shuts down Autofill Assistant and closes Chrome. virtual void Close() = 0;
diff --git a/components/autofill_assistant/browser/ui_delegate.h b/components/autofill_assistant/browser/ui_delegate.h index 4c04d4e..62e67bd 100644 --- a/components/autofill_assistant/browser/ui_delegate.h +++ b/components/autofill_assistant/browser/ui_delegate.h
@@ -7,6 +7,7 @@ #include <string> +#include "components/autofill_assistant/browser/metrics.h" #include "components/autofill_assistant/browser/state.h" namespace autofill_assistant { @@ -38,6 +39,9 @@ // Returns the current contextual information. May be null if empty. virtual const Details* GetDetails() const = 0; + // Returns the drop out reason for the last state transition to STOPPED. + virtual Metrics::DropOutReason GetDropOutReason() const = 0; + protected: UiDelegate() = default; };
diff --git a/components/browser_sync/abstract_profile_sync_service_test.cc b/components/browser_sync/abstract_profile_sync_service_test.cc index b374c0c7..b842afd 100644 --- a/components/browser_sync/abstract_profile_sync_service_test.cc +++ b/components/browser_sync/abstract_profile_sync_service_test.cc
@@ -41,7 +41,6 @@ public: SyncEngineForProfileSyncTest( const base::FilePath& temp_dir, - syncer::SyncClient* sync_client, invalidation::InvalidationService* invalidator, const base::WeakPtr<syncer::SyncPrefs>& sync_prefs, base::OnceClosure callback); @@ -62,13 +61,11 @@ SyncEngineForProfileSyncTest::SyncEngineForProfileSyncTest( const base::FilePath& temp_dir, - syncer::SyncClient* sync_client, invalidation::InvalidationService* invalidator, const base::WeakPtr<syncer::SyncPrefs>& sync_prefs, base::OnceClosure callback) : SyncEngineImpl( "dummy_debug_name", - sync_client, invalidator, sync_prefs, temp_dir.Append(base::FilePath(FILE_PATH_LITERAL("test")))), @@ -142,7 +139,7 @@ syncer::SyncApiComponentFactoryMock* components = profile_sync_service_bundle_.component_factory(); auto engine = std::make_unique<SyncEngineForProfileSyncTest>( - temp_dir_.GetPath(), sync_service_->GetSyncClientForTest(), + temp_dir_.GetPath(), profile_sync_service_bundle_.fake_invalidation_service(), sync_service_->sync_prefs()->AsWeakPtr(), std::move(initialization_success_callback));
diff --git a/components/browser_sync/profile_sync_components_factory_impl.cc b/components/browser_sync/profile_sync_components_factory_impl.cc index b2a282b..545eaaa2 100644 --- a/components/browser_sync/profile_sync_components_factory_impl.cc +++ b/components/browser_sync/profile_sync_components_factory_impl.cc
@@ -442,8 +442,8 @@ invalidation::InvalidationService* invalidator, const base::WeakPtr<syncer::SyncPrefs>& sync_prefs, const base::FilePath& sync_data_folder) { - return std::make_unique<syncer::SyncEngineImpl>( - name, sync_client_, invalidator, sync_prefs, sync_data_folder); + return std::make_unique<syncer::SyncEngineImpl>(name, invalidator, sync_prefs, + sync_data_folder); } syncer::SyncApiComponentFactory::SyncComponents
diff --git a/components/browser_sync/profile_sync_service_mock.cc b/components/browser_sync/profile_sync_service_mock.cc index 6e94fec..d465720 100644 --- a/components/browser_sync/profile_sync_service_mock.cc +++ b/components/browser_sync/profile_sync_service_mock.cc
@@ -34,7 +34,6 @@ syncer::ModelTypeSet ProfileSyncServiceMock::GetPreferredDataTypes() const { return syncer::SyncPrefs::ResolvePrefGroups( - /*registered_types=*/syncer::ModelTypeSet::All(), user_settings_.GetChosenDataTypes()); }
diff --git a/components/certificate_transparency/log_dns_client_unittest.cc b/components/certificate_transparency/log_dns_client_unittest.cc index a7027d8..92aefbe 100644 --- a/components/certificate_transparency/log_dns_client_unittest.cc +++ b/components/certificate_transparency/log_dns_client_unittest.cc
@@ -933,9 +933,9 @@ histograms_.ExpectTotalCount(kAuditProofRcodeHistogram, 0); } -INSTANTIATE_TEST_CASE_P(ReadMode, - LogDnsClientTest, - ::testing::Values(net::IoMode::ASYNC, - net::IoMode::SYNCHRONOUS)); +INSTANTIATE_TEST_SUITE_P(ReadMode, + LogDnsClientTest, + ::testing::Values(net::IoMode::ASYNC, + net::IoMode::SYNCHRONOUS)); } // namespace certificate_transparency
diff --git a/components/content_settings/core/browser/BUILD.gn b/components/content_settings/core/browser/BUILD.gn index 8e6d992b..1edbe265 100644 --- a/components/content_settings/core/browser/BUILD.gn +++ b/components/content_settings/core/browser/BUILD.gn
@@ -76,6 +76,7 @@ testonly = true sources = [ "content_settings_ephemeral_provider_unittest.cc", + "content_settings_pref_unittest.cc", "content_settings_registry_unittest.cc", "content_settings_rule_unittest.cc", "content_settings_utils_unittest.cc", @@ -95,8 +96,10 @@ "//components/content_settings/core/test:test_support", "//components/pref_registry:pref_registry", "//components/prefs", + "//components/prefs:test_support", "//components/sync_preferences:test_support", "//extensions/buildflags", + "//testing/gmock", "//testing/gtest", "//url", ]
diff --git a/components/content_settings/core/browser/content_settings_pref_unittest.cc b/components/content_settings/core/browser/content_settings_pref_unittest.cc new file mode 100644 index 0000000..0291514 --- /dev/null +++ b/components/content_settings/core/browser/content_settings_pref_unittest.cc
@@ -0,0 +1,154 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/content_settings/core/browser/content_settings_pref.h" +#include "components/content_settings/core/common/content_settings_pattern.h" + +#include "base/bind_helpers.h" +#include "base/stl_util.h" +#include "base/values.h" +#include "components/content_settings/core/browser/content_settings_utils.h" +#include "components/content_settings/core/common/content_settings_types.h" +#include "components/prefs/pref_change_registrar.h" +#include "components/prefs/pref_registry_simple.h" +#include "components/prefs/testing_pref_service.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace content_settings { +namespace { + +// Test content setting pattern pairs in string format. The percent-encoded +// sequence "%61" should get canonicalized to the letter 'a'. +constexpr char kTestPatternCanonicalAlpha[] = "https://alpha.com,*"; +constexpr char kTestPatternNonCanonicalAlpha1[] = "https://%61lpha.com,*"; +constexpr char kTestPatternNonCanonicalAlpha2[] = "https://alph%61.com,*"; +constexpr char kTestPatternCanonicalBeta[] = "https://beta.com,*"; +constexpr char kTestPatternNonCanonicalBeta[] = "https://bet%61.com,*"; + +constexpr char kTestContentSettingPrefName[] = "content_settings.test"; + +constexpr char kLastModifiedKey[] = "last_modified"; +constexpr char kSettingKey[] = "setting"; +constexpr char kTagKey[] = "tag"; + +// Creates a JSON dictionary representing a dummy content setting exception +// value in preferences. The setting will be marked with the |tag| like so: +// +// value = { +// "last_modified": "...", +// "setting": { +// "tag": "...", +// } +// } +base::Value CreateDummyContentSettingValue(base::StringPiece tag) { + base::Value setting(base::Value::Type::DICTIONARY); + setting.SetKey(kTagKey, base::Value(tag)); + + base::Value pref_value(base::Value::Type::DICTIONARY); + pref_value.SetKey(kLastModifiedKey, base::Value("13189876543210000")); + pref_value.SetKey(kSettingKey, std::move(setting)); + return pref_value; +} + +// Given the JSON dictionary representing the "setting" stored under a content +// setting exception value, returns the tag. +std::string GetTagFromDummyContentSetting(const base::Value& setting) { + const auto* tag = setting.FindKey(kTagKey); + return tag ? tag->GetString() : std::string(); +} + +// Given the JSON dictionary representing a content setting exception value, +// returns the tag. +std::string GetTagFromDummyContentSettingValue(const base::Value& pref_value) { + const auto* setting = pref_value.FindKey(kSettingKey); + return setting ? GetTagFromDummyContentSetting(*setting) : std::string(); +} + +} // namespace + +TEST(ContentSettingsPref, CanonicalizationWhileReadingFromPrefs) { + // Canonical/non-canonical patterns originally in preferences. + constexpr const char* kTestOriginalPatterns[] = { + kTestPatternNonCanonicalAlpha1, + kTestPatternNonCanonicalAlpha2, + kTestPatternCanonicalBeta, + kTestPatternNonCanonicalBeta, + }; + + // Upon construction, ContentSettingPref reads all content setting exception + // data stored in Preferences for a given content setting. This process also + // has the side effect that it migrates all data keyed under non-canonical + // content setting pattern pairs to be keyed under the corresponding canoncial + // pattern pair, both in Preferences, as well as in ContentSettingPref's + // in-memory |value_map| representation. There are two edge cases here: + // + // 1) If multiple non-canonical patterns map to the same canonical pattern, + // the data for the last read pattern is retained, the rest thrown away. + // 2) We ignore and delete non-canonical pattern pairs if a canonical one + // already exists. + // + // With regard to the test data, NonCanonicalAlpha1 and NonCanonicalAlpha2 + // would both map to CanonicalAlpha, so the value for the latter should be + // retained. + // + // NonCanonicalBeta would be canonicalized to CanonicalBeta, but because there + // is already a value under that key, the latter should be retained and the + // non-canonical value thrown away. + using CanonicalPatternToTag = std::pair<std::string, std::string>; + const std::vector<CanonicalPatternToTag> kExpectedPatternsToTags = { + {kTestPatternCanonicalAlpha, kTestPatternNonCanonicalAlpha2}, + {kTestPatternCanonicalBeta, kTestPatternCanonicalBeta}, + }; + + auto original_pref_value = std::make_unique<base::DictionaryValue>(); + for (const auto* pattern : kTestOriginalPatterns) { + original_pref_value->SetKey(pattern, + CreateDummyContentSettingValue(pattern)); + } + + TestingPrefServiceSimple prefs; + prefs.registry()->RegisterDictionaryPref( + kTestContentSettingPrefName, std::make_unique<base::DictionaryValue>()); + prefs.SetUserPref(kTestContentSettingPrefName, + std::move(original_pref_value)); + + PrefChangeRegistrar registrar; + registrar.Init(&prefs); + ContentSettingsPref content_settings_pref( + CONTENT_SETTINGS_TYPE_MEDIA_ENGAGEMENT, &prefs, ®istrar, + kTestContentSettingPrefName, false, base::DoNothing()); + + // Verify that the |value_map| contains the expected content setting patterns + // and setting. + + std::vector<CanonicalPatternToTag> patterns_to_tags_in_memory; + auto rule_iterator = content_settings_pref.GetRuleIterator( + std::string() /* resource_identifier */, false /* is_incognito */); + while (rule_iterator->HasNext()) { + auto rule = rule_iterator->Next(); + patterns_to_tags_in_memory.emplace_back( + CreatePatternString(rule.primary_pattern, rule.secondary_pattern), + GetTagFromDummyContentSetting(rule.value)); + } + + EXPECT_THAT(patterns_to_tags_in_memory, + testing::UnorderedElementsAreArray(kExpectedPatternsToTags)); + + // Verify that Preferences do, as well. + + std::vector<CanonicalPatternToTag> patterns_to_tags_in_prefs; + const auto* canonical_pref_value = + prefs.GetUserPref(kTestContentSettingPrefName); + ASSERT_TRUE(canonical_pref_value->is_dict()); + for (const auto& key_value : canonical_pref_value->DictItems()) { + patterns_to_tags_in_prefs.emplace_back( + key_value.first, GetTagFromDummyContentSettingValue(key_value.second)); + } + + EXPECT_THAT(patterns_to_tags_in_prefs, + testing::UnorderedElementsAreArray(kExpectedPatternsToTags)); +} + +} // namespace content_settings
diff --git a/components/dom_distiller/content/browser/distillability_driver.cc b/components/dom_distiller/content/browser/distillability_driver.cc index b5349e7..3ace9fa 100644 --- a/components/dom_distiller/content/browser/distillability_driver.cc +++ b/components/dom_distiller/content/browser/distillability_driver.cc
@@ -24,13 +24,13 @@ base::WeakPtr<DistillabilityDriver> distillability_driver) : distillability_driver_(distillability_driver) {} - ~DistillabilityServiceImpl() override { - } + ~DistillabilityServiceImpl() override {} void NotifyIsDistillable(bool is_distillable, bool is_last_update, bool is_mobile_friendly) override { - if (!distillability_driver_) return; + if (!distillability_driver_) + return; distillability_driver_->OnDistillability(is_distillable, is_last_update, is_mobile_friendly); } @@ -39,11 +39,10 @@ base::WeakPtr<DistillabilityDriver> distillability_driver_; }; -DistillabilityDriver::DistillabilityDriver( - content::WebContents* web_contents) - : content::WebContentsObserver(web_contents), - weak_factory_(this) { - if (!web_contents) return; +DistillabilityDriver::DistillabilityDriver(content::WebContents* web_contents) + : content::WebContentsObserver(web_contents), weak_factory_(this) { + if (!web_contents) + return; frame_interfaces_.AddInterface( base::BindRepeating(&DistillabilityDriver::CreateDistillabilityService, base::Unretained(this))); @@ -68,7 +67,8 @@ void DistillabilityDriver::OnDistillability(bool distillable, bool is_last, bool is_mobile_friendly) { - if (m_delegate_.is_null()) return; + if (m_delegate_.is_null()) + return; m_delegate_.Run(distillable, is_last, is_mobile_friendly); }
diff --git a/components/dom_distiller/content/browser/distillability_driver.h b/components/dom_distiller/content/browser/distillability_driver.h index 4c53072..388e5171 100644 --- a/components/dom_distiller/content/browser/distillability_driver.h +++ b/components/dom_distiller/content/browser/distillability_driver.h
@@ -22,8 +22,7 @@ public content::WebContentsUserData<DistillabilityDriver> { public: ~DistillabilityDriver() override; - void CreateDistillabilityService( - mojom::DistillabilityServiceRequest request); + void CreateDistillabilityService(mojom::DistillabilityServiceRequest request); void SetDelegate(const DistillabilityDelegate& delegate);
diff --git a/components/dom_distiller/content/browser/distillable_page_utils_browsertest.cc b/components/dom_distiller/content/browser/distillable_page_utils_browsertest.cc index 933c7ce..ee805259 100644 --- a/components/dom_distiller/content/browser/distillable_page_utils_browsertest.cc +++ b/components/dom_distiller/content/browser/distillable_page_utils_browsertest.cc
@@ -45,10 +45,8 @@ base::RunLoop url_loaded_runner; main_frame_loaded_callback_ = url_loaded_runner.QuitClosure(); current_web_contents->GetController().LoadURL( - embedded_test_server()->GetURL(url), - content::Referrer(), - ui::PAGE_TRANSITION_TYPED, - std::string()); + embedded_test_server()->GetURL(url), content::Referrer(), + ui::PAGE_TRANSITION_TYPED, std::string()); url_loaded_runner.Run(); main_frame_loaded_callback_ = base::Closure(); Observe(nullptr); @@ -96,9 +94,7 @@ callback_.Run(); } - bool GetResult() { - return result_; - } + bool GetResult() { return result_; } base::Callback<void(bool)> GetCallback() { return base::Bind(&ResultHolder::OnResult, base::Unretained(this));
diff --git a/components/dom_distiller/content/browser/distiller_javascript_utils.cc b/components/dom_distiller/content/browser/distiller_javascript_utils.cc index 8994f44..11d0ba6a 100644 --- a/components/dom_distiller/content/browser/distiller_javascript_utils.cc +++ b/components/dom_distiller/content/browser/distiller_javascript_utils.cc
@@ -39,8 +39,7 @@ // Make sure world ID was set. DCHECK(distiller_javascript_world_id != invalid_world_id); render_frame_host->ExecuteJavaScriptInIsolatedWorld( - base::UTF8ToUTF16(buffer), callback, - distiller_javascript_world_id); + base::UTF8ToUTF16(buffer), callback, distiller_javascript_world_id); } void RunIsolatedJavaScript(content::RenderFrameHost* render_frame_host,
diff --git a/components/dom_distiller/content/browser/distiller_page_web_contents.cc b/components/dom_distiller/content/browser/distiller_page_web_contents.cc index a5c93570..5bc57af 100644 --- a/components/dom_distiller/content/browser/distiller_page_web_contents.cc +++ b/components/dom_distiller/content/browser/distiller_page_web_contents.cc
@@ -31,8 +31,7 @@ SourcePageHandleWebContents::SourcePageHandleWebContents( content::WebContents* web_contents, bool owned) - : web_contents_(web_contents), owned_(owned) { -} + : web_contents_(web_contents), owned_(owned) {} SourcePageHandleWebContents::~SourcePageHandleWebContents() { if (owned_) { @@ -77,11 +76,10 @@ } } -DistillerPageWebContents::~DistillerPageWebContents() { -} +DistillerPageWebContents::~DistillerPageWebContents() {} bool DistillerPageWebContents::StringifyOutput() { - return false; + return false; } void DistillerPageWebContents::DistillPageImpl(const GURL& url,
diff --git a/components/dom_distiller/content/browser/distiller_page_web_contents_browsertest.cc b/components/dom_distiller/content/browser/distiller_page_web_contents_browsertest.cc index 736e760..94f59a07 100644 --- a/components/dom_distiller/content/browser/distiller_page_web_contents_browsertest.cc +++ b/components/dom_distiller/content/browser/distiller_page_web_contents_browsertest.cc
@@ -331,8 +331,7 @@ bool expect_new_web_contents = true; bool setup_main_frame_observer = true; bool wait_for_document_loaded = true; - RunUseCurrentWebContentsTest(url, - expect_new_web_contents, + RunUseCurrentWebContentsTest(url, expect_new_web_contents, setup_main_frame_observer, wait_for_document_loaded); } @@ -350,8 +349,7 @@ bool expect_new_web_contents = true; bool setup_main_frame_observer = false; bool wait_for_document_loaded = true; - RunUseCurrentWebContentsTest(url, - expect_new_web_contents, + RunUseCurrentWebContentsTest(url, expect_new_web_contents, setup_main_frame_observer, wait_for_document_loaded); } @@ -369,8 +367,7 @@ bool expect_new_web_contents = false; bool setup_main_frame_observer = true; bool wait_for_document_loaded = false; - RunUseCurrentWebContentsTest(url, - expect_new_web_contents, + RunUseCurrentWebContentsTest(url, expect_new_web_contents, setup_main_frame_observer, wait_for_document_loaded); } @@ -388,8 +385,7 @@ bool expect_new_web_contents = false; bool setup_main_frame_observer = true; bool wait_for_document_loaded = true; - RunUseCurrentWebContentsTest(url, - expect_new_web_contents, + RunUseCurrentWebContentsTest(url, expect_new_web_contents, setup_main_frame_observer, wait_for_document_loaded); } @@ -409,10 +405,8 @@ url_loaded_runner.QuitClosure(), wait_for_document_loaded); current_web_contents->GetController().LoadURL( - embedded_test_server()->GetURL(url), - content::Referrer(), - ui::PAGE_TRANSITION_TYPED, - std::string()); + embedded_test_server()->GetURL(url), content::Referrer(), + ui::PAGE_TRANSITION_TYPED, std::string()); url_loaded_runner.Run(); std::unique_ptr<SourcePageHandleWebContents> source_page_handle( @@ -448,14 +442,11 @@ current_web_contents); base::RunLoop url_loaded_runner; - WebContentsMainFrameHelper main_frame_loaded(current_web_contents, - url_loaded_runner.QuitClosure(), - true); + WebContentsMainFrameHelper main_frame_loaded( + current_web_contents, url_loaded_runner.QuitClosure(), true); current_web_contents->GetController().LoadURL( - embedded_test_server()->GetURL(kSimpleArticlePath), - content::Referrer(), - ui::PAGE_TRANSITION_TYPED, - std::string()); + embedded_test_server()->GetURL(kSimpleArticlePath), content::Referrer(), + ui::PAGE_TRANSITION_TYPED, std::string()); url_loaded_runner.Run(); std::unique_ptr<SourcePageHandleWebContents> source_page_handle( @@ -568,14 +559,11 @@ dom_distiller::WebContentsMainFrameObserver::CreateForWebContents( web_contents); base::RunLoop url_loaded_runner; - WebContentsMainFrameHelper main_frame_loaded(web_contents, - url_loaded_runner.QuitClosure(), - true); + WebContentsMainFrameHelper main_frame_loaded( + web_contents, url_loaded_runner.QuitClosure(), true); web_contents->GetController().LoadURL( - embedded_test_server()->GetURL("/pinch_tester.html"), - content::Referrer(), - ui::PAGE_TRANSITION_TYPED, - std::string()); + embedded_test_server()->GetURL("/pinch_tester.html"), content::Referrer(), + ui::PAGE_TRANSITION_TYPED, std::string()); url_loaded_runner.Run(); // Execute the JS to run the tests, and wait until it has finished.
diff --git a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc index d5ab920..c984483 100644 --- a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc +++ b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
@@ -228,8 +228,7 @@ dom_distiller_service_(dom_distiller_service), distiller_ui_handle_(std::move(ui_handle)) {} -DomDistillerViewerSource::~DomDistillerViewerSource() { -} +DomDistillerViewerSource::~DomDistillerViewerSource() {} std::string DomDistillerViewerSource::GetSource() const { return scheme_ + "://"; @@ -255,8 +254,8 @@ if (base::StartsWith(path, kViewerSaveFontScalingPath, base::CompareCase::SENSITIVE)) { double scale = 1.0; - if (base::StringToDouble( - path.substr(strlen(kViewerSaveFontScalingPath)), &scale)) { + if (base::StringToDouble(path.substr(strlen(kViewerSaveFontScalingPath)), + &scale)) { dom_distiller_service_->GetDistilledPagePrefs()->SetFontScaling(scale); } } @@ -309,8 +308,7 @@ return url.SchemeIs(scheme_); } -std::string DomDistillerViewerSource::GetContentSecurityPolicyStyleSrc() - const { +std::string DomDistillerViewerSource::GetContentSecurityPolicyStyleSrc() const { return "style-src 'self' https://fonts.googleapis.com;"; }
diff --git a/components/embedder_support/android/java/strings/translations/web_contents_delegate_android_strings_hi.xtb b/components/embedder_support/android/java/strings/translations/web_contents_delegate_android_strings_hi.xtb index d3d4cc7..4d7dc3e 100644 --- a/components/embedder_support/android/java/strings/translations/web_contents_delegate_android_strings_hi.xtb +++ b/components/embedder_support/android/java/strings/translations/web_contents_delegate_android_strings_hi.xtb
@@ -8,7 +8,7 @@ <translation id="4115378294792113321">मैजेंटा</translation> <translation id="5901630391730855834">पीला</translation> <translation id="6017514345406065928">हरा</translation> -<translation id="6042308850641462728">अधिक</translation> +<translation id="6042308850641462728">और ज़्यादा</translation> <translation id="6727102863431372879">सेट करें</translation> <translation id="7535087603100972091">मान</translation> <translation id="7569983096843329377">काला</translation>
diff --git a/components/embedder_support/android/java/strings/translations/web_contents_delegate_android_strings_hu.xtb b/components/embedder_support/android/java/strings/translations/web_contents_delegate_android_strings_hu.xtb index a572e731..5533e1a9 100644 --- a/components/embedder_support/android/java/strings/translations/web_contents_delegate_android_strings_hu.xtb +++ b/components/embedder_support/android/java/strings/translations/web_contents_delegate_android_strings_hu.xtb
@@ -8,7 +8,7 @@ <translation id="4115378294792113321">Magenta</translation> <translation id="5901630391730855834">Sárga</translation> <translation id="6017514345406065928">Zöld</translation> -<translation id="6042308850641462728">Hosszabban</translation> +<translation id="6042308850641462728">Továbbiak</translation> <translation id="6727102863431372879">Beállítás</translation> <translation id="7535087603100972091">Érték</translation> <translation id="7569983096843329377">Fekete</translation>
diff --git a/components/embedder_support/android/java/strings/translations/web_contents_delegate_android_strings_vi.xtb b/components/embedder_support/android/java/strings/translations/web_contents_delegate_android_strings_vi.xtb index 1089abef..c188002 100644 --- a/components/embedder_support/android/java/strings/translations/web_contents_delegate_android_strings_vi.xtb +++ b/components/embedder_support/android/java/strings/translations/web_contents_delegate_android_strings_vi.xtb
@@ -8,7 +8,7 @@ <translation id="4115378294792113321">Đỏ thẫm</translation> <translation id="5901630391730855834">Vàng</translation> <translation id="6017514345406065928">Xanh lục</translation> -<translation id="6042308850641462728">Thêm</translation> +<translation id="6042308850641462728">Xem thêm</translation> <translation id="6727102863431372879">Đặt</translation> <translation id="7535087603100972091">Giá trị</translation> <translation id="7569983096843329377">Đen</translation>
diff --git a/components/exo/wayland/BUILD.gn b/components/exo/wayland/BUILD.gn index c8e1c2b7..d1626ea7 100644 --- a/components/exo/wayland/BUILD.gn +++ b/components/exo/wayland/BUILD.gn
@@ -47,6 +47,8 @@ "wayland_watcher.h", "wl_compositor.cc", "wl_compositor.h", + "wl_data_device_manager.cc", + "wl_data_device_manager.h", "wl_output.cc", "wl_output.h", "wl_seat.cc",
diff --git a/components/exo/wayland/server.cc b/components/exo/wayland/server.cc index 3948c6f..b44218cc 100644 --- a/components/exo/wayland/server.cc +++ b/components/exo/wayland/server.cc
@@ -55,12 +55,6 @@ #include "base/threading/thread.h" #include "base/threading/thread_task_runner_handle.h" #include "components/exo/buffer.h" -#include "components/exo/data_device.h" -#include "components/exo/data_device_delegate.h" -#include "components/exo/data_offer.h" -#include "components/exo/data_offer_delegate.h" -#include "components/exo/data_source.h" -#include "components/exo/data_source_delegate.h" #include "components/exo/display.h" #include "components/exo/gamepad_delegate.h" #include "components/exo/gaming_seat.h" @@ -75,6 +69,7 @@ #include "components/exo/wayland/wayland_input_delegate.h" #include "components/exo/wayland/wayland_touch_delegate.h" #include "components/exo/wayland/wl_compositor.h" +#include "components/exo/wayland/wl_data_device_manager.h" #include "components/exo/wayland/wl_output.h" #include "components/exo/wayland/wl_seat.h" #include "components/exo/wayland/wl_shm.h" @@ -159,55 +154,6 @@ // Group used for wayland socket. const char kWaylandSocketGroup[] = "wayland"; -uint32_t WaylandDataDeviceManagerDndAction(DndAction action) { - switch (action) { - case DndAction::kNone: - return WL_DATA_DEVICE_MANAGER_DND_ACTION_NONE; - case DndAction::kCopy: - return WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY; - case DndAction::kMove: - return WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE; - case DndAction::kAsk: - return WL_DATA_DEVICE_MANAGER_DND_ACTION_ASK; - } - NOTREACHED(); -} - -uint32_t WaylandDataDeviceManagerDndActions( - const base::flat_set<DndAction>& dnd_actions) { - uint32_t actions = 0; - for (DndAction action : dnd_actions) - actions |= WaylandDataDeviceManagerDndAction(action); - return actions; -} - -DndAction DataDeviceManagerDndAction(uint32_t value) { - switch (value) { - case WL_DATA_DEVICE_MANAGER_DND_ACTION_NONE: - return DndAction::kNone; - case WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY: - return DndAction::kCopy; - case WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE: - return DndAction::kMove; - case WL_DATA_DEVICE_MANAGER_DND_ACTION_ASK: - return DndAction::kAsk; - default: - NOTREACHED(); - return DndAction::kNone; - } -} - -base::flat_set<DndAction> DataDeviceManagerDndActions(uint32_t value) { - base::flat_set<DndAction> actions; - if (value & WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY) - actions.insert(DndAction::kCopy); - if (value & WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE) - actions.insert(DndAction::kMove); - if (value & WL_DATA_DEVICE_MANAGER_DND_ACTION_ASK) - actions.insert(DndAction::kAsk); - return actions; -} - // A property key containing a boolean set to true if a viewport is associated // with with surface object. DEFINE_UI_CLASS_PROPERTY_KEY(bool, kSurfaceHasViewportKey, false); @@ -221,288 +167,6 @@ DEFINE_UI_CLASS_PROPERTY_KEY(bool, kSurfaceHasBlendingKey, false); //////////////////////////////////////////////////////////////////////////////// -// wl_data_source_interface: - -class WaylandDataSourceDelegate : public DataSourceDelegate { - public: - explicit WaylandDataSourceDelegate(wl_resource* source) - : data_source_resource_(source) {} - - // Overridden from DataSourceDelegate: - void OnDataSourceDestroying(DataSource* device) override { delete this; } - void OnTarget(const std::string& mime_type) override { - wl_data_source_send_target(data_source_resource_, mime_type.c_str()); - wl_client_flush(wl_resource_get_client(data_source_resource_)); - } - void OnSend(const std::string& mime_type, base::ScopedFD fd) override { - wl_data_source_send_send(data_source_resource_, mime_type.c_str(), - fd.get()); - wl_client_flush(wl_resource_get_client(data_source_resource_)); - } - void OnCancelled() override { - wl_data_source_send_cancelled(data_source_resource_); - wl_client_flush(wl_resource_get_client(data_source_resource_)); - } - void OnDndDropPerformed() override { - if (wl_resource_get_version(data_source_resource_) >= - WL_DATA_SOURCE_DND_DROP_PERFORMED_SINCE_VERSION) { - wl_data_source_send_dnd_drop_performed(data_source_resource_); - wl_client_flush(wl_resource_get_client(data_source_resource_)); - } - } - void OnDndFinished() override { - if (wl_resource_get_version(data_source_resource_) >= - WL_DATA_SOURCE_DND_FINISHED_SINCE_VERSION) { - wl_data_source_send_dnd_finished(data_source_resource_); - wl_client_flush(wl_resource_get_client(data_source_resource_)); - } - } - void OnAction(DndAction dnd_action) override { - if (wl_resource_get_version(data_source_resource_) >= - WL_DATA_SOURCE_ACTION_SINCE_VERSION) { - wl_data_source_send_action(data_source_resource_, - WaylandDataDeviceManagerDndAction(dnd_action)); - wl_client_flush(wl_resource_get_client(data_source_resource_)); - } - } - - private: - wl_resource* const data_source_resource_; - - DISALLOW_COPY_AND_ASSIGN(WaylandDataSourceDelegate); -}; - -void data_source_offer(wl_client* client, - wl_resource* resource, - const char* mime_type) { - GetUserDataAs<DataSource>(resource)->Offer(mime_type); -} - -void data_source_destroy(wl_client* client, wl_resource* resource) { - wl_resource_destroy(resource); -} - -void data_source_set_actions(wl_client* client, - wl_resource* resource, - uint32_t dnd_actions) { - GetUserDataAs<DataSource>(resource)->SetActions( - DataDeviceManagerDndActions(dnd_actions)); -} - -const struct wl_data_source_interface data_source_implementation = { - data_source_offer, data_source_destroy, data_source_set_actions}; - -//////////////////////////////////////////////////////////////////////////////// -// wl_data_offer_interface: - -class WaylandDataOfferDelegate : public DataOfferDelegate { - public: - explicit WaylandDataOfferDelegate(wl_resource* offer) - : data_offer_resource_(offer) {} - - // Overridden from DataOfferDelegate: - void OnDataOfferDestroying(DataOffer* device) override { delete this; } - void OnOffer(const std::string& mime_type) override { - wl_data_offer_send_offer(data_offer_resource_, mime_type.c_str()); - wl_client_flush(wl_resource_get_client(data_offer_resource_)); - } - void OnSourceActions( - const base::flat_set<DndAction>& source_actions) override { - if (wl_resource_get_version(data_offer_resource_) >= - WL_DATA_OFFER_SOURCE_ACTIONS_SINCE_VERSION) { - wl_data_offer_send_source_actions( - data_offer_resource_, - WaylandDataDeviceManagerDndActions(source_actions)); - wl_client_flush(wl_resource_get_client(data_offer_resource_)); - } - } - void OnAction(DndAction action) override { - if (wl_resource_get_version(data_offer_resource_) >= - WL_DATA_OFFER_ACTION_SINCE_VERSION) { - wl_data_offer_send_action(data_offer_resource_, - WaylandDataDeviceManagerDndAction(action)); - wl_client_flush(wl_resource_get_client(data_offer_resource_)); - } - } - - private: - wl_resource* const data_offer_resource_; - - DISALLOW_COPY_AND_ASSIGN(WaylandDataOfferDelegate); -}; - -void data_offer_accept(wl_client* client, - wl_resource* resource, - uint32_t serial, - const char* mime_type) { - GetUserDataAs<DataOffer>(resource)->Accept(mime_type); -} - -void data_offer_receive(wl_client* client, - wl_resource* resource, - const char* mime_type, - int fd) { - GetUserDataAs<DataOffer>(resource)->Receive(mime_type, base::ScopedFD(fd)); -} - -void data_offer_destroy(wl_client* client, wl_resource* resource) { - wl_resource_destroy(resource); -} - -void data_offer_finish(wl_client* client, wl_resource* resource) { - GetUserDataAs<DataOffer>(resource)->Finish(); -} - -void data_offer_set_actions(wl_client* client, - wl_resource* resource, - uint32_t dnd_actions, - uint32_t preferred_action) { - GetUserDataAs<DataOffer>(resource)->SetActions( - DataDeviceManagerDndActions(dnd_actions), - DataDeviceManagerDndAction(preferred_action)); -} - -const struct wl_data_offer_interface data_offer_implementation = { - data_offer_accept, data_offer_receive, data_offer_finish, - data_offer_destroy, data_offer_set_actions}; - -//////////////////////////////////////////////////////////////////////////////// -// wl_data_device_interface: - -class WaylandDataDeviceDelegate : public DataDeviceDelegate { - public: - WaylandDataDeviceDelegate(wl_client* client, wl_resource* device_resource) - : client_(client), data_device_resource_(device_resource) {} - - // Overridden from DataDeviceDelegate: - void OnDataDeviceDestroying(DataDevice* device) override { delete this; } - bool CanAcceptDataEventsForSurface(Surface* surface) override { - return surface && - wl_resource_get_client(GetSurfaceResource(surface)) == client_; - } - DataOffer* OnDataOffer() override { - wl_resource* data_offer_resource = - wl_resource_create(client_, &wl_data_offer_interface, - wl_resource_get_version(data_device_resource_), 0); - std::unique_ptr<DataOffer> data_offer = std::make_unique<DataOffer>( - new WaylandDataOfferDelegate(data_offer_resource)); - SetDataOfferResource(data_offer.get(), data_offer_resource); - SetImplementation(data_offer_resource, &data_offer_implementation, - std::move(data_offer)); - - wl_data_device_send_data_offer(data_device_resource_, data_offer_resource); - wl_client_flush(client_); - - return GetUserDataAs<DataOffer>(data_offer_resource); - } - void OnEnter(Surface* surface, - const gfx::PointF& point, - const DataOffer& data_offer) override { - wl_data_device_send_enter( - data_device_resource_, - wl_display_next_serial(wl_client_get_display(client_)), - GetSurfaceResource(surface), wl_fixed_from_double(point.x()), - wl_fixed_from_double(point.y()), GetDataOfferResource(&data_offer)); - wl_client_flush(client_); - } - void OnLeave() override { - wl_data_device_send_leave(data_device_resource_); - wl_client_flush(client_); - } - void OnMotion(base::TimeTicks time_stamp, const gfx::PointF& point) override { - wl_data_device_send_motion( - data_device_resource_, TimeTicksToMilliseconds(time_stamp), - wl_fixed_from_double(point.x()), wl_fixed_from_double(point.y())); - wl_client_flush(client_); - } - void OnDrop() override { - wl_data_device_send_drop(data_device_resource_); - wl_client_flush(client_); - } - void OnSelection(const DataOffer& data_offer) override { - wl_data_device_send_selection(data_device_resource_, - GetDataOfferResource(&data_offer)); - wl_client_flush(client_); - } - - private: - wl_client* const client_; - wl_resource* const data_device_resource_; - - DISALLOW_COPY_AND_ASSIGN(WaylandDataDeviceDelegate); -}; - -void data_device_start_drag(wl_client* client, - wl_resource* resource, - wl_resource* source_resource, - wl_resource* origin_resource, - wl_resource* icon_resource, - uint32_t serial) { - GetUserDataAs<DataDevice>(resource)->StartDrag( - source_resource ? GetUserDataAs<DataSource>(source_resource) : nullptr, - GetUserDataAs<Surface>(origin_resource), - icon_resource ? GetUserDataAs<Surface>(icon_resource) : nullptr, serial); -} - -void data_device_set_selection(wl_client* client, - wl_resource* resource, - wl_resource* data_source, - uint32_t serial) { - GetUserDataAs<DataDevice>(resource)->SetSelection( - data_source ? GetUserDataAs<DataSource>(data_source) : nullptr, serial); -} - -void data_device_release(wl_client* client, wl_resource* resource) { - wl_resource_destroy(resource); -} - -const struct wl_data_device_interface data_device_implementation = { - data_device_start_drag, data_device_set_selection, data_device_release}; - -//////////////////////////////////////////////////////////////////////////////// -// wl_data_device_manager_interface: - -void data_device_manager_create_data_source(wl_client* client, - wl_resource* resource, - uint32_t id) { - wl_resource* data_source_resource = wl_resource_create( - client, &wl_data_source_interface, wl_resource_get_version(resource), id); - SetImplementation(data_source_resource, &data_source_implementation, - std::make_unique<DataSource>( - new WaylandDataSourceDelegate(data_source_resource))); -} - -void data_device_manager_get_data_device(wl_client* client, - wl_resource* resource, - uint32_t id, - wl_resource* seat_resource) { - Display* display = GetUserDataAs<Display>(resource); - wl_resource* data_device_resource = wl_resource_create( - client, &wl_data_device_interface, wl_resource_get_version(resource), id); - SetImplementation(data_device_resource, &data_device_implementation, - display->CreateDataDevice(new WaylandDataDeviceDelegate( - client, data_device_resource))); -} - -const struct wl_data_device_manager_interface - data_device_manager_implementation = { - data_device_manager_create_data_source, - data_device_manager_get_data_device}; - -const uint32_t data_device_manager_version = 3; - -void bind_data_device_manager(wl_client* client, - void* data, - uint32_t version, - uint32_t id) { - wl_resource* resource = - wl_resource_create(client, &wl_data_device_manager_interface, - std::min(version, data_device_manager_version), id); - wl_resource_set_implementation(resource, &data_device_manager_implementation, - data, nullptr); -} - -//////////////////////////////////////////////////////////////////////////////// // wp_viewport_interface: // Implements the viewport interface to a Surface. The "viewport"-state is set @@ -1032,7 +696,7 @@ wl_global_create(wl_display_.get(), &zcr_vsync_feedback_v1_interface, 1, display_, bind_vsync_feedback); wl_global_create(wl_display_.get(), &wl_data_device_manager_interface, - data_device_manager_version, display_, + kWlDataDeviceManagerVersion, display_, bind_data_device_manager); wl_global_create(wl_display_.get(), &wp_viewporter_interface, 1, display_, bind_viewporter);
diff --git a/components/exo/wayland/wl_data_device_manager.cc b/components/exo/wayland/wl_data_device_manager.cc new file mode 100644 index 0000000..f9142f5 --- /dev/null +++ b/components/exo/wayland/wl_data_device_manager.cc
@@ -0,0 +1,359 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/exo/wayland/wl_data_device_manager.h" + +#include <wayland-server-protocol-core.h> + +#include <algorithm> +#include <memory> +#include <string> +#include <utility> + +#include "components/exo/data_device.h" +#include "components/exo/data_device_delegate.h" +#include "components/exo/data_offer.h" +#include "components/exo/data_offer_delegate.h" +#include "components/exo/data_source.h" +#include "components/exo/data_source_delegate.h" +#include "components/exo/display.h" +#include "components/exo/wayland/server_util.h" + +namespace exo { +namespace wayland { +namespace { + +uint32_t WaylandDataDeviceManagerDndAction(DndAction action) { + switch (action) { + case DndAction::kNone: + return WL_DATA_DEVICE_MANAGER_DND_ACTION_NONE; + case DndAction::kCopy: + return WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY; + case DndAction::kMove: + return WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE; + case DndAction::kAsk: + return WL_DATA_DEVICE_MANAGER_DND_ACTION_ASK; + } + NOTREACHED(); +} + +uint32_t WaylandDataDeviceManagerDndActions( + const base::flat_set<DndAction>& dnd_actions) { + uint32_t actions = 0; + for (DndAction action : dnd_actions) + actions |= WaylandDataDeviceManagerDndAction(action); + return actions; +} + +DndAction DataDeviceManagerDndAction(uint32_t value) { + switch (value) { + case WL_DATA_DEVICE_MANAGER_DND_ACTION_NONE: + return DndAction::kNone; + case WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY: + return DndAction::kCopy; + case WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE: + return DndAction::kMove; + case WL_DATA_DEVICE_MANAGER_DND_ACTION_ASK: + return DndAction::kAsk; + default: + NOTREACHED(); + return DndAction::kNone; + } +} + +base::flat_set<DndAction> DataDeviceManagerDndActions(uint32_t value) { + base::flat_set<DndAction> actions; + if (value & WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY) + actions.insert(DndAction::kCopy); + if (value & WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE) + actions.insert(DndAction::kMove); + if (value & WL_DATA_DEVICE_MANAGER_DND_ACTION_ASK) + actions.insert(DndAction::kAsk); + return actions; +} + +//////////////////////////////////////////////////////////////////////////////// +// wl_data_source_interface: + +class WaylandDataSourceDelegate : public DataSourceDelegate { + public: + explicit WaylandDataSourceDelegate(wl_resource* source) + : data_source_resource_(source) {} + + // Overridden from DataSourceDelegate: + void OnDataSourceDestroying(DataSource* device) override { delete this; } + void OnTarget(const std::string& mime_type) override { + wl_data_source_send_target(data_source_resource_, mime_type.c_str()); + wl_client_flush(wl_resource_get_client(data_source_resource_)); + } + void OnSend(const std::string& mime_type, base::ScopedFD fd) override { + wl_data_source_send_send(data_source_resource_, mime_type.c_str(), + fd.get()); + wl_client_flush(wl_resource_get_client(data_source_resource_)); + } + void OnCancelled() override { + wl_data_source_send_cancelled(data_source_resource_); + wl_client_flush(wl_resource_get_client(data_source_resource_)); + } + void OnDndDropPerformed() override { + if (wl_resource_get_version(data_source_resource_) >= + WL_DATA_SOURCE_DND_DROP_PERFORMED_SINCE_VERSION) { + wl_data_source_send_dnd_drop_performed(data_source_resource_); + wl_client_flush(wl_resource_get_client(data_source_resource_)); + } + } + void OnDndFinished() override { + if (wl_resource_get_version(data_source_resource_) >= + WL_DATA_SOURCE_DND_FINISHED_SINCE_VERSION) { + wl_data_source_send_dnd_finished(data_source_resource_); + wl_client_flush(wl_resource_get_client(data_source_resource_)); + } + } + void OnAction(DndAction dnd_action) override { + if (wl_resource_get_version(data_source_resource_) >= + WL_DATA_SOURCE_ACTION_SINCE_VERSION) { + wl_data_source_send_action(data_source_resource_, + WaylandDataDeviceManagerDndAction(dnd_action)); + wl_client_flush(wl_resource_get_client(data_source_resource_)); + } + } + + private: + wl_resource* const data_source_resource_; + + DISALLOW_COPY_AND_ASSIGN(WaylandDataSourceDelegate); +}; + +void data_source_offer(wl_client* client, + wl_resource* resource, + const char* mime_type) { + GetUserDataAs<DataSource>(resource)->Offer(mime_type); +} + +void data_source_destroy(wl_client* client, wl_resource* resource) { + wl_resource_destroy(resource); +} + +void data_source_set_actions(wl_client* client, + wl_resource* resource, + uint32_t dnd_actions) { + GetUserDataAs<DataSource>(resource)->SetActions( + DataDeviceManagerDndActions(dnd_actions)); +} + +const struct wl_data_source_interface data_source_implementation = { + data_source_offer, data_source_destroy, data_source_set_actions}; + +//////////////////////////////////////////////////////////////////////////////// +// wl_data_offer_interface: + +class WaylandDataOfferDelegate : public DataOfferDelegate { + public: + explicit WaylandDataOfferDelegate(wl_resource* offer) + : data_offer_resource_(offer) {} + + // Overridden from DataOfferDelegate: + void OnDataOfferDestroying(DataOffer* device) override { delete this; } + void OnOffer(const std::string& mime_type) override { + wl_data_offer_send_offer(data_offer_resource_, mime_type.c_str()); + wl_client_flush(wl_resource_get_client(data_offer_resource_)); + } + void OnSourceActions( + const base::flat_set<DndAction>& source_actions) override { + if (wl_resource_get_version(data_offer_resource_) >= + WL_DATA_OFFER_SOURCE_ACTIONS_SINCE_VERSION) { + wl_data_offer_send_source_actions( + data_offer_resource_, + WaylandDataDeviceManagerDndActions(source_actions)); + wl_client_flush(wl_resource_get_client(data_offer_resource_)); + } + } + void OnAction(DndAction action) override { + if (wl_resource_get_version(data_offer_resource_) >= + WL_DATA_OFFER_ACTION_SINCE_VERSION) { + wl_data_offer_send_action(data_offer_resource_, + WaylandDataDeviceManagerDndAction(action)); + wl_client_flush(wl_resource_get_client(data_offer_resource_)); + } + } + + private: + wl_resource* const data_offer_resource_; + + DISALLOW_COPY_AND_ASSIGN(WaylandDataOfferDelegate); +}; + +void data_offer_accept(wl_client* client, + wl_resource* resource, + uint32_t serial, + const char* mime_type) { + GetUserDataAs<DataOffer>(resource)->Accept(mime_type); +} + +void data_offer_receive(wl_client* client, + wl_resource* resource, + const char* mime_type, + int fd) { + GetUserDataAs<DataOffer>(resource)->Receive(mime_type, base::ScopedFD(fd)); +} + +void data_offer_destroy(wl_client* client, wl_resource* resource) { + wl_resource_destroy(resource); +} + +void data_offer_finish(wl_client* client, wl_resource* resource) { + GetUserDataAs<DataOffer>(resource)->Finish(); +} + +void data_offer_set_actions(wl_client* client, + wl_resource* resource, + uint32_t dnd_actions, + uint32_t preferred_action) { + GetUserDataAs<DataOffer>(resource)->SetActions( + DataDeviceManagerDndActions(dnd_actions), + DataDeviceManagerDndAction(preferred_action)); +} + +const struct wl_data_offer_interface data_offer_implementation = { + data_offer_accept, data_offer_receive, data_offer_finish, + data_offer_destroy, data_offer_set_actions}; + +//////////////////////////////////////////////////////////////////////////////// +// wl_data_device_interface: + +class WaylandDataDeviceDelegate : public DataDeviceDelegate { + public: + WaylandDataDeviceDelegate(wl_client* client, wl_resource* device_resource) + : client_(client), data_device_resource_(device_resource) {} + + // Overridden from DataDeviceDelegate: + void OnDataDeviceDestroying(DataDevice* device) override { delete this; } + bool CanAcceptDataEventsForSurface(Surface* surface) override { + return surface && + wl_resource_get_client(GetSurfaceResource(surface)) == client_; + } + DataOffer* OnDataOffer() override { + wl_resource* data_offer_resource = + wl_resource_create(client_, &wl_data_offer_interface, + wl_resource_get_version(data_device_resource_), 0); + std::unique_ptr<DataOffer> data_offer = std::make_unique<DataOffer>( + new WaylandDataOfferDelegate(data_offer_resource)); + SetDataOfferResource(data_offer.get(), data_offer_resource); + SetImplementation(data_offer_resource, &data_offer_implementation, + std::move(data_offer)); + + wl_data_device_send_data_offer(data_device_resource_, data_offer_resource); + wl_client_flush(client_); + + return GetUserDataAs<DataOffer>(data_offer_resource); + } + void OnEnter(Surface* surface, + const gfx::PointF& point, + const DataOffer& data_offer) override { + wl_data_device_send_enter( + data_device_resource_, + wl_display_next_serial(wl_client_get_display(client_)), + GetSurfaceResource(surface), wl_fixed_from_double(point.x()), + wl_fixed_from_double(point.y()), GetDataOfferResource(&data_offer)); + wl_client_flush(client_); + } + void OnLeave() override { + wl_data_device_send_leave(data_device_resource_); + wl_client_flush(client_); + } + void OnMotion(base::TimeTicks time_stamp, const gfx::PointF& point) override { + wl_data_device_send_motion( + data_device_resource_, TimeTicksToMilliseconds(time_stamp), + wl_fixed_from_double(point.x()), wl_fixed_from_double(point.y())); + wl_client_flush(client_); + } + void OnDrop() override { + wl_data_device_send_drop(data_device_resource_); + wl_client_flush(client_); + } + void OnSelection(const DataOffer& data_offer) override { + wl_data_device_send_selection(data_device_resource_, + GetDataOfferResource(&data_offer)); + wl_client_flush(client_); + } + + private: + wl_client* const client_; + wl_resource* const data_device_resource_; + + DISALLOW_COPY_AND_ASSIGN(WaylandDataDeviceDelegate); +}; + +void data_device_start_drag(wl_client* client, + wl_resource* resource, + wl_resource* source_resource, + wl_resource* origin_resource, + wl_resource* icon_resource, + uint32_t serial) { + GetUserDataAs<DataDevice>(resource)->StartDrag( + source_resource ? GetUserDataAs<DataSource>(source_resource) : nullptr, + GetUserDataAs<Surface>(origin_resource), + icon_resource ? GetUserDataAs<Surface>(icon_resource) : nullptr, serial); +} + +void data_device_set_selection(wl_client* client, + wl_resource* resource, + wl_resource* data_source, + uint32_t serial) { + GetUserDataAs<DataDevice>(resource)->SetSelection( + data_source ? GetUserDataAs<DataSource>(data_source) : nullptr, serial); +} + +void data_device_release(wl_client* client, wl_resource* resource) { + wl_resource_destroy(resource); +} + +const struct wl_data_device_interface data_device_implementation = { + data_device_start_drag, data_device_set_selection, data_device_release}; + +//////////////////////////////////////////////////////////////////////////////// +// wl_data_device_manager_interface: + +void data_device_manager_create_data_source(wl_client* client, + wl_resource* resource, + uint32_t id) { + wl_resource* data_source_resource = wl_resource_create( + client, &wl_data_source_interface, wl_resource_get_version(resource), id); + SetImplementation(data_source_resource, &data_source_implementation, + std::make_unique<DataSource>( + new WaylandDataSourceDelegate(data_source_resource))); +} + +void data_device_manager_get_data_device(wl_client* client, + wl_resource* resource, + uint32_t id, + wl_resource* seat_resource) { + Display* display = GetUserDataAs<Display>(resource); + wl_resource* data_device_resource = wl_resource_create( + client, &wl_data_device_interface, wl_resource_get_version(resource), id); + SetImplementation(data_device_resource, &data_device_implementation, + display->CreateDataDevice(new WaylandDataDeviceDelegate( + client, data_device_resource))); +} + +const struct wl_data_device_manager_interface + data_device_manager_implementation = { + data_device_manager_create_data_source, + data_device_manager_get_data_device}; + +} // namespace + +void bind_data_device_manager(wl_client* client, + void* data, + uint32_t version, + uint32_t id) { + wl_resource* resource = + wl_resource_create(client, &wl_data_device_manager_interface, + std::min(version, kWlDataDeviceManagerVersion), id); + wl_resource_set_implementation(resource, &data_device_manager_implementation, + data, nullptr); +} + +} // namespace wayland +} // namespace exo
diff --git a/components/exo/wayland/wl_data_device_manager.h b/components/exo/wayland/wl_data_device_manager.h new file mode 100644 index 0000000..33b39ff --- /dev/null +++ b/components/exo/wayland/wl_data_device_manager.h
@@ -0,0 +1,25 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_EXO_WAYLAND_WL_DATA_DEVICE_MANAGER_H_ +#define COMPONENTS_EXO_WAYLAND_WL_DATA_DEVICE_MANAGER_H_ + +#include <stdint.h> + +struct wl_client; + +namespace exo { +namespace wayland { + +constexpr uint32_t kWlDataDeviceManagerVersion = 3; + +void bind_data_device_manager(wl_client* client, + void* data, + uint32_t version, + uint32_t id); + +} // namespace wayland +} // namespace exo + +#endif // COMPONENTS_EXO_WAYLAND_WL_DATA_DEVICE_MANAGER_H_
diff --git a/components/feedback/anonymizer_tool.cc b/components/feedback/anonymizer_tool.cc index 39ea9cdd..7fbf845 100644 --- a/components/feedback/anonymizer_tool.cc +++ b/components/feedback/anonymizer_tool.cc
@@ -7,7 +7,7 @@ #include <memory> #include <utility> -#include "base/stl_util.h" +#include "base/strings/strcat.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" @@ -59,13 +59,46 @@ "(?i-s)(serial\\s*(?:number)?\\s*[:=]\\s*)([0-9a-zA-Z\\-\"]+)()", }; -// Returns the number of leading bytes that may be kept unsanitized. -std::string MaybeScrubIPv4Address(const std::string& addr) { +bool MaybeUnmapAddress(net::IPAddress* addr) { + if (!addr->IsIPv4MappedIPv6()) + return false; + + *addr = net::ConvertIPv4MappedIPv6ToIPv4(*addr); + return true; +} + +bool MaybeUntranslateAddress(net::IPAddress* addr) { + if (!addr->IsIPv6()) + return false; + + static const net::IPAddress kTranslated6To4(0, 0x64, 0xff, 0x9b, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0); + if (!IPAddressMatchesPrefix(*addr, kTranslated6To4, 96)) + return false; + + const auto bytes = addr->bytes(); + *addr = net::IPAddress(bytes[12], bytes[13], bytes[14], bytes[15]); + return true; +} + +// If |addr| points to a valid IPv6 address, this function truncates it at /32. +bool MaybeTruncateIPv6(net::IPAddress* addr) { + if (!addr->IsIPv6()) + return false; + + const auto bytes = addr->bytes(); + *addr = net::IPAddress(bytes[0], bytes[1], bytes[2], bytes[3], 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0); + return true; +} + +// Returns an appropriately scrubbed version of |addr| if applicable. +std::string MaybeScrubIPAddress(const std::string& addr) { struct { net::IPAddress ip_addr; int prefix_length; bool scrub; - } static const kWhitelistedIPv4Ranges[] = { + } static const kWhitelistedIPRanges[] = { // Private. {net::IPAddress(10, 0, 0, 0), 8, true}, {net::IPAddress(172, 16, 0, 0), 12, true}, @@ -84,20 +117,57 @@ {net::IPAddress(224, 0, 0, 0), 4, true}, // Link local. {net::IPAddress(169, 254, 0, 0), 16, true}, + {net::IPAddress(0xfe, 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), 10, + true}, // Broadcast. {net::IPAddress(255, 255, 255, 255), 32, false}, + // IPv6 loopback, unspecified and non-address strings. + {net::IPAddress::IPv6AllZeros(), 112, false}, + // IPv6 multicast all nodes and routers. + {net::IPAddress(0xff, 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1), + 128, false}, + {net::IPAddress(0xff, 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2), + 128, false}, + {net::IPAddress(0xff, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1), + 128, false}, + {net::IPAddress(0xff, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2), + 128, false}, + // IPv6 other multicast (link and interface local). + {net::IPAddress(0xff, 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), 16, + true}, + {net::IPAddress(0xff, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), 16, + true}, + }; net::IPAddress input_addr; - if (input_addr.AssignFromIPLiteral(addr) && input_addr.IsIPv4()) { - for (const auto& range : kWhitelistedIPv4Ranges) { + if (input_addr.AssignFromIPLiteral(addr) && input_addr.IsValid()) { + bool mapped = MaybeUnmapAddress(&input_addr); + bool translated = !mapped ? MaybeUntranslateAddress(&input_addr) : false; + for (const auto& range : kWhitelistedIPRanges) { if (IPAddressMatchesPrefix(input_addr, range.ip_addr, range.prefix_length)) { - return range.scrub ? base::StringPrintf( - "%s/%d", range.ip_addr.ToString().c_str(), - range.prefix_length) - : addr; + std::string prefix; + std::string out_addr = addr; + if (mapped) { + prefix = "M "; + out_addr = input_addr.ToString(); + } else if (translated) { + prefix = "T "; + out_addr = input_addr.ToString(); + } + if (range.scrub) { + out_addr = base::StringPrintf( + "%s/%d", range.ip_addr.ToString().c_str(), range.prefix_length); + } + return base::StrCat({prefix, out_addr}); } } + // |addr| may have been over-aggressively matched as an IPv6 address when + // it's really just an arbitrary part of a sentence. If the string is the + // same as the coarsely truncated address then keep it because even if + // it happens to be a real address, there is no loss of anonymity. + if (MaybeTruncateIPv6(&input_addr) && input_addr.ToString() == addr) + return addr; } return ""; } @@ -421,7 +491,7 @@ std::string matched_id_as_string = matched_id.as_string(); std::string replacement_id = (*identifier_space)[matched_id_as_string]; if (replacement_id.empty()) { - replacement_id = MaybeScrubIPv4Address(matched_id_as_string); + replacement_id = MaybeScrubIPAddress(matched_id_as_string); if (replacement_id != matched_id_as_string) { // The weird Uint64toString trick is because Windows does not like // to deal with %zu and a size_t in printf, nor does it support %llu.
diff --git a/components/feedback/anonymizer_tool_unittest.cc b/components/feedback/anonymizer_tool_unittest.cc index 6464e02..190dfad 100644 --- a/components/feedback/anonymizer_tool_unittest.cc +++ b/components/feedback/anonymizer_tool_unittest.cc
@@ -6,7 +6,6 @@ #include <gtest/gtest.h> -#include "base/stl_util.h" #include "base/strings/string_util.h" namespace feedback { @@ -132,7 +131,7 @@ EXPECT_EQ("[<IPv6: 2>]", AnonymizeCustomPatterns("[2001:db8:0:0:0:ff00:42:8329]")); EXPECT_EQ("[<IPv6: 3>]", AnonymizeCustomPatterns("[2001:db8::ff00:42:8329]")); - EXPECT_EQ("[<IPv6: 4>]", AnonymizeCustomPatterns("[::1]")); + EXPECT_EQ("[<IPv6: 4>]", AnonymizeCustomPatterns("[aa::bb]")); EXPECT_EQ("<IPv4: 1>", AnonymizeCustomPatterns("192.160.0.1")); EXPECT_EQ("<URL: 1>", @@ -228,6 +227,10 @@ "192.169.2.120\n" // IP address. "169.254.0.1\n" // Link local. "169.200.0.1\n" // IP address. + "fe80::\n" // Link local. + "fe80::ffff\n" // Link local. + "febf:ffff::ffff\n" // Link local. + "fecc::1111\n" // IP address. "224.0.0.24\n" // Multicast. "240.0.0.0\n" // IP address. "255.255.255.255\n" // Broadcast. @@ -243,7 +246,30 @@ "11:11;11::11\n" // IP address. "11::11\n" // IP address. "11:11:abcdef:0:0:0:0:0\n" // No PII. - "aa:aa:aa:aa:aa:aa"; // MAC address (BSSID). + "::\n" // Unspecified. + "::1\n" // Local host. + "Instance::Set\n" // Ignore match, no PII. + "Instant::ff\n" // Ignore match, no PII. + "net::ERR_CONN_TIMEOUT\n" // Ignore match, no PII. + "ff01::1\n" // All nodes address (interface local). + "ff01::2\n" // All routers (interface local). + "ff01::3\n" // Multicast (interface local). + "ff02::1\n" // All nodes address (link local). + "ff02::2\n" // All routers (link local). + "ff02::3\n" // Multicast (link local). + "ff02::fb\n" // mDNSv6 (link local). + "ff08::fb\n" // mDNSv6. + "ff0f::101\n" // All NTP servers. + "::ffff:cb0c:10ea\n" // IPv4-mapped IPV6 (IP address). + "::ffff:a0a:a0a\n" // IPv4-mapped IPV6 (private class A). + "::ffff:a0a:a0a\n" // Intentional duplicate. + "::ffff:ac1e:1e1e\n" // IPv4-mapped IPV6 (private class B). + "::ffff:c0a8:640a\n" // IPv4-mapped IPV6 (private class C). + "::ffff:6473:5c01\n" // IPv4-mapped IPV6 (Chrome). + "64:ff9b::a0a:a0a\n" // IPv4-translated 6to4 IPV6 (private class A). + "64:ff9b::6473:5c01\n" // IPv4-translated 6to4 IPV6 (Chrome). + "::0101:ffff:c0a8:640a\n" // IP address. + "aa:aa:aa:aa:aa:aa"; // MAC address (BSSID). std::string result = "aaaaaaaa [SSID=1]aaaaa\n" "aaaaaaaa<URL: 1>\n" @@ -268,6 +294,10 @@ "<IPv4: 16>\n" "<169.254.0.0/16: 17>\n" "<IPv4: 18>\n" + "<fe80::/10: 1>\n" + "<fe80::/10: 2>\n" + "<fe80::/10: 3>\n" + "<IPv6: 4>\n" "<224.0.0.0/4: 19>\n" "<IPv4: 20>\n" "255.255.255.255\n" @@ -280,9 +310,32 @@ "255.255.259.255\n" "255.300.255.255\n" "aaaa<IPv4: 28>aaa\n" - "11:11;<IPv6: 1>\n" - "<IPv6: 1>\n" + "11:11;<IPv6: 5>\n" + "<IPv6: 5>\n" "11:11:abcdef:0:0:0:0:0\n" + "::\n" + "::1\n" + "Instance::Set\n" + "Instant::ff\n" + "net::ERR_CONN_TIMEOUT\n" + "ff01::1\n" + "ff01::2\n" + "<ff01::/16: 13>\n" + "ff02::1\n" + "ff02::2\n" + "<ff02::/16: 16>\n" + "<ff02::/16: 17>\n" + "<IPv6: 18>\n" + "<IPv6: 19>\n" + "<IPv6: 20>\n" + "<M 10.0.0.0/8: 21>\n" + "<M 10.0.0.0/8: 21>\n" + "<M 172.16.0.0/12: 22>\n" + "<M 192.168.0.0/16: 23>\n" + "<M 100.115.92.1: 24>\n" + "<T 10.0.0.0/8: 25>\n" + "<T 100.115.92.1: 26>\n" + "<IPv6: 27>\n" "aa:aa:aa:00:00:01"; EXPECT_EQ(result, anonymizer_.Anonymize(data)); }
diff --git a/components/password_manager/content/browser/content_password_manager_driver_unittest.cc b/components/password_manager/content/browser/content_password_manager_driver_unittest.cc index 31d3bbb..21c0629 100644 --- a/components/password_manager/content/browser/content_password_manager_driver_unittest.cc +++ b/components/password_manager/content/browser/content_password_manager_driver_unittest.cc
@@ -243,8 +243,8 @@ driver->FillPasswordForm(fill_data); } -INSTANTIATE_TEST_CASE_P(, - ContentPasswordManagerDriverTest, - testing::Values(true, false)); +INSTANTIATE_TEST_SUITE_P(, + ContentPasswordManagerDriverTest, + testing::Values(true, false)); } // namespace password_manager
diff --git a/components/password_manager/core/browser/http_credentials_cleaner_unittest.cc b/components/password_manager/core/browser/http_credentials_cleaner_unittest.cc index b5e72c63..953610cd 100644 --- a/components/password_manager/core/browser/http_credentials_cleaner_unittest.cc +++ b/components/password_manager/core/browser/http_credentials_cleaner_unittest.cc
@@ -239,9 +239,9 @@ scoped_task_environment.RunUntilIdle(); } -INSTANTIATE_TEST_CASE_P(, - HttpCredentialCleanerTest, - ::testing::ValuesIn(kCases)); +INSTANTIATE_TEST_SUITE_P(, + HttpCredentialCleanerTest, + ::testing::ValuesIn(kCases)); TEST(HttpCredentialCleaner, StartCleanUpTest) { for (bool should_start_clean_up : {false, true}) {
diff --git a/components/password_manager/core/browser/login_database_unittest.cc b/components/password_manager/core/browser/login_database_unittest.cc index 762df3e4..34ef63fd 100644 --- a/components/password_manager/core/browser/login_database_unittest.cc +++ b/components/password_manager/core/browser/login_database_unittest.cc
@@ -2192,15 +2192,15 @@ MigrationToVCurrent(base::StringPrintf("login_db_v%d_broken.sql", version())); } -INSTANTIATE_TEST_CASE_P(MigrationToVCurrent, - LoginDatabaseMigrationTest, - testing::Range(1, kCurrentVersionNumber + 1)); -INSTANTIATE_TEST_CASE_P(MigrationToVCurrent, - LoginDatabaseMigrationTestV9, - testing::Values(9)); -INSTANTIATE_TEST_CASE_P(MigrationToVCurrent, - LoginDatabaseMigrationTestBroken, - testing::Range(1, 4)); +INSTANTIATE_TEST_SUITE_P(MigrationToVCurrent, + LoginDatabaseMigrationTest, + testing::Range(1, kCurrentVersionNumber + 1)); +INSTANTIATE_TEST_SUITE_P(MigrationToVCurrent, + LoginDatabaseMigrationTestV9, + testing::Values(9)); +INSTANTIATE_TEST_SUITE_P(MigrationToVCurrent, + LoginDatabaseMigrationTestBroken, + testing::Range(1, 4)); class LoginDatabaseUndecryptableLoginsTest : public testing::Test { protected:
diff --git a/components/password_manager/core/browser/password_store_default_unittest.cc b/components/password_manager/core/browser/password_store_default_unittest.cc index 28e69ac..7323fe8 100644 --- a/components/password_manager/core/browser/password_store_default_unittest.cc +++ b/components/password_manager/core/browser/password_store_default_unittest.cc
@@ -158,9 +158,9 @@ } // anonymous namespace -INSTANTIATE_TYPED_TEST_CASE_P(Default, - PasswordStoreOriginTest, - PasswordStoreDefaultTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(Default, + PasswordStoreOriginTest, + PasswordStoreDefaultTestDelegate); TEST(PasswordStoreDefaultTest, NonASCIIData) { PasswordStoreDefaultTestDelegate delegate;
diff --git a/components/password_manager/core/browser/password_store_origin_unittest.h b/components/password_manager/core/browser/password_store_origin_unittest.h index 1a6918d..80ea3ae 100644 --- a/components/password_manager/core/browser/password_store_origin_unittest.h +++ b/components/password_manager/core/browser/password_store_origin_unittest.h
@@ -59,7 +59,7 @@ T delegate_; }; -TYPED_TEST_CASE_P(PasswordStoreOriginTest); +TYPED_TEST_SUITE_P(PasswordStoreOriginTest); TYPED_TEST_P(PasswordStoreOriginTest, RemoveLoginsByURLAndTimeImpl_AllFittingOriginAndTime) { @@ -162,7 +162,7 @@ this->delegate_.store()->RemoveObserver(&observer); } -REGISTER_TYPED_TEST_CASE_P( +REGISTER_TYPED_TEST_SUITE_P( PasswordStoreOriginTest, RemoveLoginsByURLAndTimeImpl_AllFittingOriginAndTime, RemoveLoginsByURLAndTimeImpl_SomeFittingOriginAndTime,
diff --git a/components/password_manager/core/browser/sync/password_sync_bridge.cc b/components/password_manager/core/browser/sync/password_sync_bridge.cc index 2456785..5a2b1ca 100644 --- a/components/password_manager/core/browser/sync/password_sync_bridge.cc +++ b/components/password_manager/core/browser/sync/password_sync_bridge.cc
@@ -4,6 +4,8 @@ #include "components/password_manager/core/browser/sync/password_sync_bridge.h" +#include <unordered_set> + #include "base/auto_reset.h" #include "base/logging.h" #include "base/strings/string_number_conversions.h" @@ -176,11 +178,6 @@ } } -void PasswordSyncBridge::OnSyncStarting( - const syncer::DataTypeActivationRequest& request) { - NOTIMPLEMENTED(); -} - std::unique_ptr<syncer::MetadataChangeList> PasswordSyncBridge::CreateMetadataChangeList() { return std::make_unique<syncer::InMemoryMetadataChangeList>(); @@ -189,7 +186,97 @@ base::Optional<syncer::ModelError> PasswordSyncBridge::MergeSyncData( std::unique_ptr<syncer::MetadataChangeList> metadata_change_list, syncer::EntityChangeList entity_data) { - NOTIMPLEMENTED(); + base::AutoReset<bool> processing_changes(&is_processing_remote_sync_changes_, + true); + // Read all local passwords. + PrimaryKeyToFormMap key_to_local_form_map; + if (!password_store_sync_->ReadAllLogins(&key_to_local_form_map)) { + return syncer::ModelError(FROM_HERE, + "Failed to load entries from password store."); + } + + // Collect the client tags of remote passwords. Note that |entity_data| only + // contains client tag *hashes*. + std::unordered_set<std::string> client_tags_of_remote_passwords; + for (const syncer::EntityChange& entity_change : entity_data) { + client_tags_of_remote_passwords.insert(GetClientTag(entity_change.data())); + } + + // This is used to keep track of all the changes applied to the password + // store to notify other observers of the password store. + PasswordStoreChangeList password_store_changes; + base::Optional<syncer::ModelError> error; + { + ScopedStoreTransaction transaction(password_store_sync_); + // For any local password that doesn't exist in the remote passwords, issue + // a change_processor()->Put(). Password comparison is done by comparing the + // client tags. In addition, collect the client tags of local passwords. + std::unordered_set<std::string> client_tags_of_local_passwords; + for (const auto& pair : key_to_local_form_map) { + std::unique_ptr<syncer::EntityData> entity_data = + CreateEntityData(/*password_form=*/*pair.second); + const std::string client_tag_of_local_password = + GetClientTag(*entity_data); + client_tags_of_local_passwords.insert(client_tag_of_local_password); + if (client_tags_of_remote_passwords.count(client_tag_of_local_password) == + 0) { + change_processor()->Put( + /*storage_key=*/base::NumberToString(pair.first), + std::move(entity_data), metadata_change_list.get()); + } + } + + // For any remote password that doesn't exist in the local passwords, issue + // a password_store_sync_->AddLoginSync() and for those that exist in the + // local passwords, issue a password_store_sync_->UpdateLoginSync(). + // Password comparison is done by comparing the client tags. In both cases, + // invoke the change_processor()->UpdateStorageKey(). + const base::Time time_now = base::Time::Now(); + for (const syncer::EntityChange& entity_change : entity_data) { + const std::string client_tag_of_remote_password = + GetClientTag(entity_change.data()); + PasswordStoreChangeList changes; + if (client_tags_of_local_passwords.count(client_tag_of_remote_password) == + 0) { + changes = password_store_sync_->AddLoginSync( + PasswordFromEntityChange(entity_change, /*sync_time=*/time_now)); + DCHECK_LE(1U, changes.size()); + } else { + changes = password_store_sync_->UpdateLoginSync( + PasswordFromEntityChange(entity_change, /*sync_time=*/time_now)); + DCHECK_LE(1U, changes.size()); + } + if (changes.empty()) { + return syncer::ModelError( + FROM_HERE, "Failed to add/update an entry in the password store."); + } + change_processor()->UpdateStorageKey( + entity_change.data(), + /*storage_key=*/ + base::NumberToString(changes[0].primary_key()), + metadata_change_list.get()); + password_store_changes.push_back(changes[0]); + } + + // Persist the metadata changes. + // TODO(mamir): add some test coverage for the metadata persistence. + syncer::SyncMetadataStoreChangeList sync_metadata_store_change_list( + password_store_sync_->GetMetadataStore(), syncer::PASSWORDS); + // |metadata_change_list| must have been created via + // CreateMetadataChangeList() so downcasting is safe. + static_cast<syncer::InMemoryMetadataChangeList*>(metadata_change_list.get()) + ->TransferChangesTo(&sync_metadata_store_change_list); + error = sync_metadata_store_change_list.TakeError(); + } // End of scoped transaction. + + if (!password_store_changes.empty()) { + // It could be the case that there are no remote passwords. In such case, + // there would be no changes to the password store other than the sync + // metadata changes, and no need to notify observers since they aren't + // interested in changes to sync metadata. + password_store_sync_->NotifyLoginsChanged(password_store_changes); + } + return base::nullopt; } @@ -255,8 +342,7 @@ break; } } - password_store_changes.insert(password_store_changes.end(), - changes.begin(), changes.end()); + password_store_changes.push_back(changes[0]); } // Persist the metadata changes. @@ -287,7 +373,7 @@ PrimaryKeyToFormMap key_to_form_map; if (!password_store_sync_->ReadAllLogins(&key_to_form_map)) { change_processor()->ReportError( - {FROM_HERE, "Failed to load entries from table."}); + {FROM_HERE, "Failed to load entries from the password store."}); return; } @@ -302,7 +388,22 @@ } void PasswordSyncBridge::GetAllDataForDebugging(DataCallback callback) { - NOTIMPLEMENTED(); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + PrimaryKeyToFormMap key_to_form_map; + if (!password_store_sync_->ReadAllLogins(&key_to_form_map)) { + change_processor()->ReportError( + {FROM_HERE, "Failed to load entries from the password store."}); + return; + } + + auto batch = std::make_unique<syncer::MutableDataBatch>(); + for (const auto& pair : key_to_form_map) { + autofill::PasswordForm form = *pair.second; + form.password_value = base::UTF8ToUTF16("hidden"); + batch->Put(base::NumberToString(pair.first), CreateEntityData(form)); + } + std::move(callback).Run(std::move(batch)); } std::string PasswordSyncBridge::GetClientTag( @@ -333,8 +434,10 @@ syncer::ModelTypeSyncBridge::StopSyncResponse PasswordSyncBridge::ApplyStopSyncChanges( std::unique_ptr<syncer::MetadataChangeList> delete_metadata_change_list) { - NOTIMPLEMENTED(); - return ModelTypeSyncBridge::StopSyncResponse::kModelNoLongerReadyToSync; + // TODO(crbug.com/902349): Implement disable-sync case by a more robust + // implementation, via a dedicated method in PasswordStoreSync. + return ModelTypeSyncBridge::ApplyStopSyncChanges( + std::move(delete_metadata_change_list)); } } // namespace password_manager
diff --git a/components/password_manager/core/browser/sync/password_sync_bridge.h b/components/password_manager/core/browser/sync/password_sync_bridge.h index ddc73a7..7772f2ed 100644 --- a/components/password_manager/core/browser/sync/password_sync_bridge.h +++ b/components/password_manager/core/browser/sync/password_sync_bridge.h
@@ -41,8 +41,6 @@ void ActOnPasswordStoreChanges(const PasswordStoreChangeList& changes); // ModelTypeSyncBridge implementation. - void OnSyncStarting( - const syncer::DataTypeActivationRequest& request) override; std::unique_ptr<syncer::MetadataChangeList> CreateMetadataChangeList() override; base::Optional<syncer::ModelError> MergeSyncData(
diff --git a/components/password_manager/core/browser/sync/password_sync_bridge_unittest.cc b/components/password_manager/core/browser/sync/password_sync_bridge_unittest.cc index 7aaac0b..ef15682 100644 --- a/components/password_manager/core/browser/sync/password_sync_bridge_unittest.cc +++ b/components/password_manager/core/browser/sync/password_sync_bridge_unittest.cc
@@ -30,6 +30,7 @@ using testing::Invoke; using testing::NotNull; using testing::Return; +using testing::UnorderedElementsAre; constexpr char kSignonRealm1[] = "abc"; constexpr char kSignonRealm2[] = "def"; @@ -47,9 +48,9 @@ return arg.signon_realm == expected_signon_realm; } -// |*arg| must be of type PasswordStoreChangeList. +// |*arg| must be of type PasswordStoreChange. MATCHER_P(ChangeHasPrimaryKey, expected_primary_key, "") { - return arg[0].primary_key() == expected_primary_key; + return arg.primary_key() == expected_primary_key; } // |*arg| must be of type SyncMetadataStoreChangeList. @@ -378,8 +379,9 @@ AddLoginSync(FormHasSignonRealm(kSignonRealm1))); EXPECT_CALL(mock_processor(), UpdateStorageKey(_, kStorageKey, _)); EXPECT_CALL(*mock_password_store_sync(), CommitTransaction()); - EXPECT_CALL(*mock_password_store_sync(), - NotifyLoginsChanged(ChangeHasPrimaryKey(1))); + EXPECT_CALL( + *mock_password_store_sync(), + NotifyLoginsChanged(UnorderedElementsAre(ChangeHasPrimaryKey(1)))); // Processor shouldn't be notified about remote changes. EXPECT_CALL(mock_processor(), Put(_, _, _)).Times(0); @@ -407,7 +409,8 @@ UpdateLoginSync(FormHasSignonRealm(kSignonRealm1))); EXPECT_CALL(*mock_password_store_sync(), CommitTransaction()); EXPECT_CALL(*mock_password_store_sync(), - NotifyLoginsChanged(ChangeHasPrimaryKey(kPrimaryKey))); + NotifyLoginsChanged( + UnorderedElementsAre(ChangeHasPrimaryKey(kPrimaryKey)))); // Processor shouldn't be notified about remote changes. EXPECT_CALL(mock_processor(), Put(_, _, _)).Times(0); @@ -433,7 +436,8 @@ RemoveLoginByPrimaryKeySync(kPrimaryKey)); EXPECT_CALL(*mock_password_store_sync(), CommitTransaction()); EXPECT_CALL(*mock_password_store_sync(), - NotifyLoginsChanged(ChangeHasPrimaryKey(kPrimaryKey))); + NotifyLoginsChanged( + UnorderedElementsAre(ChangeHasPrimaryKey(kPrimaryKey)))); // Processor shouldn't be notified about remote changes. EXPECT_CALL(mock_processor(), Delete(_, _)).Times(0); @@ -476,4 +480,103 @@ EXPECT_FALSE(optional_specifics.has_value()); } +TEST_F(PasswordSyncBridgeTest, ShouldMergeSyncRemoteAndLocalPasswords) { + ON_CALL(mock_processor(), IsTrackingMetadata()).WillByDefault(Return(true)); + // Setup the test to have Form 1 and Form 2 stored locally, and Form 2 and + // Form 3 coming as remote changes. We will assign primary keys for Form 1 and + // Form 2. Form 3 will arrive as remote creation, and FakeDatabase will assign + // it primary key 1. + const int kPrimaryKey1 = 1000; + const int kPrimaryKey2 = 1001; + const int kExpectedPrimaryKey3 = 1; + const std::string kPrimaryKeyStr1 = "1000"; + const std::string kPrimaryKeyStr2 = "1001"; + const std::string kExpectedPrimaryKeyStr3 = "1"; + autofill::PasswordForm form1 = MakePasswordForm(kSignonRealm1); + autofill::PasswordForm form2 = MakePasswordForm(kSignonRealm2); + autofill::PasswordForm form3 = MakePasswordForm(kSignonRealm3); + sync_pb::PasswordSpecifics specifics1 = + CreateSpecificsWithSignonRealm(kSignonRealm1); + sync_pb::PasswordSpecifics specifics2 = + CreateSpecificsWithSignonRealm(kSignonRealm2); + sync_pb::PasswordSpecifics specifics3 = + CreateSpecificsWithSignonRealm(kSignonRealm3); + + fake_db()->AddLoginForPrimaryKey(kPrimaryKey1, form1); + fake_db()->AddLoginForPrimaryKey(kPrimaryKey2, form2); + + // Form 1 will be added to the change processor, Form 2 will be updated in the + // password sync store, and Form 3 will be added to the password store sync. + + // Interactions should happen in this order: + // +--> Put(1) ------------------------------------+ + // | | + // Begin() --|--> UpdateLoginSync(2) --> UpdateStorageKey(2)-|--> Commit() + // | | + // +--> AddLoginSync (3) --> UpdateStorageKey(3)-+ + + testing::Sequence s1, s2, s3; + EXPECT_CALL(*mock_password_store_sync(), BeginTransaction()) + .InSequence(s1, s2, s3); + EXPECT_CALL(mock_processor(), + Put(kPrimaryKeyStr1, EntityDataHasSignonRealm(kSignonRealm1), _)) + .InSequence(s1); + EXPECT_CALL(*mock_password_store_sync(), + UpdateLoginSync(FormHasSignonRealm(kSignonRealm2))) + .InSequence(s2); + EXPECT_CALL(*mock_password_store_sync(), + AddLoginSync(FormHasSignonRealm(kSignonRealm3))) + .InSequence(s3); + + EXPECT_CALL(mock_processor(), UpdateStorageKey(_, kPrimaryKeyStr2, _)) + .InSequence(s2); + EXPECT_CALL(mock_processor(), UpdateStorageKey(_, kExpectedPrimaryKeyStr3, _)) + .InSequence(s3); + EXPECT_CALL(*mock_password_store_sync(), CommitTransaction()) + .InSequence(s1, s2, s3); + + EXPECT_CALL(*mock_password_store_sync(), + NotifyLoginsChanged(UnorderedElementsAre( + ChangeHasPrimaryKey(kPrimaryKey2), + ChangeHasPrimaryKey(kExpectedPrimaryKey3)))) + .InSequence(s1, s2, s3); + + // Processor shouldn't be informed about Form 2 or Form 3. + EXPECT_CALL(mock_processor(), Put(kPrimaryKeyStr2, _, _)).Times(0); + EXPECT_CALL(mock_processor(), Put(kExpectedPrimaryKeyStr3, _, _)).Times(0); + + base::Optional<syncer::ModelError> error = bridge()->MergeSyncData( + bridge()->CreateMetadataChangeList(), + {syncer::EntityChange::CreateAdd( + /*storage_key=*/"", SpecificsToEntity(specifics2)), + syncer::EntityChange::CreateAdd( + /*storage_key=*/"", SpecificsToEntity(specifics3))}); + EXPECT_FALSE(error); +} + +TEST_F(PasswordSyncBridgeTest, ShouldGetAllDataForDebuggingWithHiddenPassword) { + const int kPrimaryKey1 = 1000; + const int kPrimaryKey2 = 1001; + autofill::PasswordForm form1 = MakePasswordForm(kSignonRealm1); + autofill::PasswordForm form2 = MakePasswordForm(kSignonRealm2); + + fake_db()->AddLoginForPrimaryKey(kPrimaryKey1, form1); + fake_db()->AddLoginForPrimaryKey(kPrimaryKey2, form2); + + std::unique_ptr<syncer::DataBatch> batch; + + bridge()->GetAllDataForDebugging(base::BindLambdaForTesting( + [&](std::unique_ptr<syncer::DataBatch> in_batch) { + batch = std::move(in_batch); + })); + + ASSERT_THAT(batch, NotNull()); + while (batch->HasNext()) { + const syncer::KeyAndData& data_pair = batch->Next(); + EXPECT_EQ("hidden", data_pair.second->specifics.password() + .client_only_encrypted_data() + .password_value()); + } +} + } // namespace password_manager
diff --git a/components/policy/core/browser/url_blacklist_manager.h b/components/policy/core/browser/url_blacklist_manager.h index 69af8bab..ca04695 100644 --- a/components/policy/core/browser/url_blacklist_manager.h +++ b/components/policy/core/browser/url_blacklist_manager.h
@@ -132,17 +132,6 @@ URLBlacklist::URLBlacklistState GetURLBlacklistState(const GURL& url) const; - // Returns true if a request for |url| is blocked by the current blacklist. - // - // Should only be called for requests for frames (Main frames or subframes). - // Other subresources or background downloads (e.g. extensions updates, sync, - // etc) should not be filtered. The sync signin page will also not be - // filtered. - // - // |reason| is populated with the exact reason for blocking the url if and - // only if the return value is true otherwise it is left untouched. - bool ShouldBlockRequestForFrame(const GURL& url, int* reason) const; - // Replaces the current blacklist. // Virtual for testing. virtual void SetBlacklist(std::unique_ptr<URLBlacklist> blacklist);
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json index 8294c7b3..995571468 100644 --- a/components/policy/resources/policy_templates.json +++ b/components/policy/resources/policy_templates.json
@@ -14425,7 +14425,7 @@ }, 'access_code_ttl': { 'type': 'integer', - 'minimum': 30, + 'minimum': 60, 'maximum': 3600, 'description': 'Time that access code is valid for (in seconds).' },
diff --git a/components/policy/resources/policy_templates_am.xtb b/components/policy/resources/policy_templates_am.xtb index 51cb5318..95f2765 100644 --- a/components/policy/resources/policy_templates_am.xtb +++ b/components/policy/resources/policy_templates_am.xtb
@@ -793,6 +793,11 @@ ይህ ቅንብር ከተሰናከለ እና ወጪ የUDP ግንኑኘቶች በኬላው የሚጣሩ ከሆኑ ይህ ማን በአውታረ መረብ ውስጥ ካሉ የደንበኛ ማሽኖች የሚመጡ ግንኙነቶችን ብቻ ነው የሚፈቅደው። ይህ መመሪያ እንዳልተዋቀረ ከተተወ ቅንብሩ ይነቃል።</translation> +<translation id="2813281962735757923">ይህ መመሪያ የጊዜ ክፈፎችን ይቆጣጠራል፣ በዚህ ጊዜ የ<ph name="PRODUCT_OS_NAME" /> መሣሪያው በራስ-ሰር ዝማኔዎች ካሉ እንዲፈትሽ አይፈቀድለትም። + ይህ መመሪአይ ወደ ባዶ ያልሆነ የጊዜ ክፍተቶች ዝርዝር ሲቀናበር፦ + መሣሪያዎች በተገለጹት የጊዜ ክፍተቶች ጊዜ በራስ-ሰር ዝማኔዎች ካሉ መፈተሽ አይችሉም። ሊከሰቱ በሚችሉ የደህንነት ችግሮች ምክንያት ቅልበሳ የሚያስፈልጋቸው ወይም ከአነስተኛው የ<ph name="PRODUCT_OS_NAME" /> ስሪት በታች የሆኑ መሣሪያዎች በዚህ መመሪያ ተጽዕኖ አያርፍባቸውም። በተጨማሪም፣ ይህ መመሪያ በተጠቃሚዎች ወይም በአስተዳዳሪዎች የተጠየቁ የዝማኔ ፍተሻዎችን አያግድም። + ይህ መመሪያ ካልተዋቀረ ወይም ምንም የጊዜ ክፈተቶች ከሌሉት፦ + ምንም ራስ-ሰር የዝማኔ ፍተሻዎች በዚህ መመሪያ አይታገዱም፣ ነገር ግን በሌሎች መመሪያዎች ሊታገዱ ይችላሉ። ይህ ባህሪ የሚነቃው እንደ ራስ-ጅምር ኪዮስኮች በተዋቀሩ የChrome መሣሪያዎች ላይ ብቻ ነው። ሌሎች መሣሪያዎች በዚህ መመሪያ አይገደቡም።</translation> <translation id="2823870601012066791">ለ<ph name="PRODUCT_OS_NAME" /> ደንበኛዎች የWindows መዝገብ ቦታ፦</translation> <translation id="2824715612115726353">ማንነትን የማያሳውቅ ሁነታን ያንቁ</translation> <translation id="2838830882081735096">የውሂብ ዝውውርን እና ኤአርሲ አይፍቀዱ</translation> @@ -1088,6 +1093,7 @@ <translation id="3547954654003013442">የተኪ ቅንብሮች</translation> <translation id="355118380775352753">በአማራጭ አሳሽ ውስጥ የሚከፈቱ ድር ጣቢያዎች</translation> <translation id="3577251398714997599">የሚረብሹ ማስታወሻዎች ላላቸው ጣቢያዎች የሆኑ የማስታወቂያዎች ቅንብሮች</translation> +<translation id="3591527072193107424">የቆየ አሳሽ ድጋፍ ባህሪን ያንቁ።</translation> <translation id="3591584750136265240">የመግባት ማረጋገጥ ባህሪውን ያዋቅሩ</translation> <translation id="3624171042292187668"> IsolateOriginsን እርስዎ ሊያገልሏቸው በሚፈልጓቸው የጣቢያዎች ዝርዝር ላይ በመጠቀም ከሁለቱም ዓለም፣ የማግለል እና ለተጠቃሚዎች የተወሰነ ተጽዕኖ፣ ምርጡን ለማግኘት የIsolateOrigins መመሪያውን መመልከቱ ከግምት ውስጥ ማስገባቱ ሳይሻል አይቀርም። ይህ ቅንብር SitePerProcess ሁሉንም ጣቢያዎች ያገልላል። @@ -1276,6 +1282,13 @@ <translation id="3965339130942650562">ስራ የፈታ የተጠቃሚ ዘግቶ መውጣት እስኪፈጸም ድረስ ጊዜ ማብቃት</translation> <translation id="3973371701361892765">መደርደሪያውን በጭራሽ በራስ-አትደብቅ</translation> <translation id="3984028218719007910"><ph name="PRODUCT_OS_NAME" /> ተዘግቶ ከተወጣ በኋላ አካባቢያዊ የመለያ ውሂብ ያስቀምጥ እንደሆነ ይለያል። ወደ እውነት ከተዋቀረ ምንም ቋሚ መለያዎች በ<ph name="PRODUCT_OS_NAME" /> ላይ አይቀመጡም፣ እና ተዘግቶ ከተወጣ በኋላ ሁሉም ውሂብ ከተጠቃሚ ክፍለ-ጊዜው ይወገዳል። ይህ መመሪያ ወደ ሐሰት ከተዋቀረ ወይም እንዳልተዋቀረ ከተተወ መሣሪያው (የተመሰጠረው) አካባቢያዊ የተጠቃሚ ውሂቡን ሊያስቀምጥ ይችላል።</translation> +<translation id="398475542699441679">ይህ መመሪያ የቆየ አሳሽ ድጋፍ ይነቃ እንደሆነ ይቆጣጠራል። + + ይህ መመሪያ እንዳልተዋቀረ ከተተወ ወይም ወደ ሐሰት ከተዋቀረ Chrome የተሰየሙ ዩአርኤሎች በተለዋጭ አሳሽ ላይ ለመክፈት አይሞክርም። + + ይህ መመሪያ ወደ እውነት ከተዋቀረ Chrome አንዳንድ ዩአርኤሎችን በተለዋጭ አሳሽ (እንደ Internet Explorer ያለ) ላይ ለማስጀመር ይሞክራል። ይህ ባህሪ በ<ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> ቡድን ውስጥ ያሉ መመሪያዎችን በመጠቀም የተዋቀረ ነው። + + ይህ ባህሪ የ<ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> ቅጥያ ምትክ ነው። የቅጥያው ውቅረት ወደዚህ ባህሪ ይተላለፋል፣ ነገር ግን በምትኩ የChrome መመሪያዎችን እንዲጠቀሙ በጣም ይመከራል። ይህ ለወደፊቱ የተሻለ ተኳኋኝነትን ያረጋግጣል።</translation> <translation id="3997519162482760140">በSAML መግቢያ ገጾች ላይ የቪዲዮ መቅረጫ መሣሪያዎች መዳረሻ የሚሰጣቸው ዩአርኤሎች</translation> <translation id="4001275826058808087">የድርጅት መሣሪያዎች አይቲ አስተዳዳድሪዎች ተጠቃሚዎች በChrome OS ምዝገባ በኩል የቅናሾች ክፍያ ማስመለስ ይችሉ ወይም አይቻሉ ለመቆጣጠር ይህን ጥቆማ መጠቀም ይችላሉ። @@ -1527,6 +1540,7 @@ የምሳሌ ስርዓተ ጥለቶችን ለማግኘት https://www.chromium.org/developers/how-tos/chrome-frame-getting-started ይመልከቱ።</translation> <translation id="467449052039111439">የዩ አር ኤልዎች ዝርዝር ይክፈቱ</translation> +<translation id="4674871290487541952">በቅጥያ ዝማኔዎች እና ጭነቶች ላይ ደህንነታቸው ያልተጠበቁ ስልተ-ቀመሮች በሙሉዕነት ፍተሻዎች ላይ ይፍቀዱ</translation> <translation id="4680936297850947973">በM68 ተቋርጧል። በምትኩ DefaultPopupsSetting ይጠቀሙ። ሙሉ ማብራሪያ ለማግኘት https://www.chromestatus.com/features/5675755719622656 ይመልከቱ። @@ -2569,6 +2583,12 @@ ይህ መመሪያ ወደ ሐሰት ከተዋቀረ የጀርባ ሁነታ ይሰናከልና ተጠቃሚው በአሳሽ ቅንብሮች ውስጥ ሊቆጣጠረው አይችልም። ይህ መመሪያ እንዳልተዋቀረ ከተተወ የጀርባ ሁነታ መጀመሪያ ይነቃና ተጠቃሚው በአሳሽ ቅንብሮች ውስጥ ሊቆጣጠረው ይችላል።</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> ደህንነቱ ለተጠበቀ የቅጥያዎች ዝማኔ እና ጭነት ያቀርባል። ይሁንና፣ ከChrome ድር መደብር ውጭ የተስተናገዱ የአንዳንድ ቅጥያዎች ይዘት ደህንነቱ ባልተጠበቀ የመፈረሚያ ወይም እንደ SHA1 ያሉ የሃሽ መስሪያ ስልተ-ቀመሮች ብቻ የተጠበቁ ሊሆን ይችላሉ። ይህ መመሪያ ሲሰናከል እንዲህ ያሉ የቅጥያዎች አዲስ ጭነት እና ዝማኔዎች በChrome አይፈቀዱም (የቅጥያ ገንቢዎቹ ቅጥያውን ይበልጥ ጠንከር ባሉ ስልተ-ቀመሮች ዳግም ካልገነቧቸው በስተቀር)። ይህ መመሪያ ሲነቃ እንዲህ ያሉ የቅጥያዎች ጭነት እና ዝማኔዎች ይፈቀዳሉ። + + ካልተዋቀረ ይህ ነባሪ ወደሆነው የነቃ ሁኔታ ይመለሳል። + ከ<ph name="PRODUCT_NAME" /> 75 ጀምሮ ካልተዋቀረ ይህ ነባሪ ወደሆነው የነቃ ሁኔታ ይመለሳል። + + ከ<ph name="PRODUCT_NAME" /> 77 ጀምሮ ይህ መመሪያ ችላ ይባልና እንደተሰናከለ ይቆጠራል።</translation> <translation id="7126716959063786004">በተግባር አስተዳደር ላይ ሂደቶችን መጨረስን ያንቁ</translation> <translation id="7127892035367404455">ወደ የዒላማ ስሪት ቀልብስ</translation> <translation id="7128918109610518786"><ph name="PRODUCT_OS_NAME" /> በአስጀማሪው አሞሌ ላይ እንደ የተሰኩ መተግበሪያዎች አድርጎ የሚያሳያቸውን የመተግበሪያዎች ለዪዎችን ይዘረዝራል።
diff --git a/components/policy/resources/policy_templates_ar.xtb b/components/policy/resources/policy_templates_ar.xtb index b52d23d..d0ea3add 100644 --- a/components/policy/resources/policy_templates_ar.xtb +++ b/components/policy/resources/policy_templates_ar.xtb
@@ -770,6 +770,11 @@ إذا تم إيقاف هذا الإعداد وتصفية اتصالات UDP الصادرة بواسطة الجدار الناري، فلن يسمح الجهاز سوى بالاتصالات القادمة من أجهزة العملاء داخل الشبكة المحلية. إذا تم ترك هذه السياسة غير معينة، فسيتم تفعيل الإعداد.</translation> +<translation id="2813281962735757923">تتحكَّم هذه السياسة في الإطارات الزمنية التي لا يتم خلالها السماح لجهاز <ph name="PRODUCT_OS_NAME" /> بالبحث عن تحديثات تلقائيًا. + في حال ضبط هذه السياسة على قائمة غير فارغة من الفترات الزمنية: + لن تتمكَّن الأجهزة من البحث عن تحديثات تلقائيًا خلال الفترات الزمنية المُحدَّدة. لن تتأثر الأجهزة بهذه السياسة إذا كانت تتطلب العودة إلى الحالة السابقة أو كانت أقل من الحد الأدنى لإصدار <ph name="PRODUCT_OS_NAME" />، وذلك بسبب مشاكل محتملة تتعلَّق بالأمان. علاوةً على ذلك، لن تحظر هذه السياسة عمليات البحث عن التحديثات التي يطلبها المستخدمون أو المشرفون. + وفي حال عدم ضبط هذه السياسة أو عدم احتوائها على فترات زمنية: + لن تحظر هذه السياسة أيًّا من عمليات بحث تلقائي عن التحديثات، ولكن قد يتم حظرها بموجب سياسات أخرى. يتم تفعيل هذه الميزة فقط على أجهزة Chrome التي تم إعدادها كأكشاك تشغيل تلقائي. لن يتم تقييد الأجهزة الأخرى بموجب هذه السياسة.</translation> <translation id="2823870601012066791">موقع سجل Windows لعملاء <ph name="PRODUCT_OS_NAME" />:</translation> <translation id="2824715612115726353">تفعيل وضع التصفح المتخفي</translation> <translation id="2838830882081735096">عدم السماح بترحيل البيانات وARC</translation> @@ -1054,6 +1059,7 @@ <translation id="3547954654003013442">إعدادات الخادم الوكيل</translation> <translation id="355118380775352753">مواقع الويب المُراد فتحها في متصفِّح بديل</translation> <translation id="3577251398714997599">إعداد الإعلانات للمواقع التي تتضمن إعلانات متداخلة</translation> +<translation id="3591527072193107424">يمكنك تفعيل ميزة "دعم المتصفِّحات القديمة"</translation> <translation id="3591584750136265240">تهيئة سلوك مصادقة تسجيل الدخول</translation> <translation id="3624171042292187668"> قد ترغب في الاطِّلاع على إعداد السياسة IsolateOrigins للحصول على أفضل النتائج من هاتين السياستين، أي العزل والتأثير المحدود في المستخدمين باستخدام سياسة IsolateOrigins التي تحتوي على قائمة بالمواقع الإلكترونية التي ترغب في عزلها. ويعزل إعداد SitePerProcess هذا جميع المواقع الإلكترونية. @@ -1237,6 +1243,13 @@ <translation id="3965339130942650562">المهلة المحددة قبل تسجيل خروج المستخدم غير النشط</translation> <translation id="3973371701361892765">عدم إخفاء الرفّ تلقائيًا على الإطلاق</translation> <translation id="3984028218719007910">لتحديد ما إذا كان <ph name="PRODUCT_OS_NAME" /> يحتفظ ببيانات الحساب المحلية بعد تسجيل الخروج. إذا تم تعيينها على "true"، فلن يتم الاحتفاظ بحسابات مستمرة بواسطة <ph name="PRODUCT_OS_NAME" /> وسيتم إلغاء جميع البيانات من جلسة المستخدم بعد تسجيل الخروج. وإذا تم تعيين هذه السياسة على "false" أو لم تتم تهيئتها، فإن الجهاز يمكن أن يحتفظ ببيانات المستخدم المحلية (مشفرة).</translation> +<translation id="398475542699441679">تتحكَّم هذه السياسة في إمكانية تفعيل الإضافة "دعم المتصفحات القديمة". + + عند ترك هذه السياسة بدون ضبط أو ضبطها على False، لن يحاول Chrome إطلاق عناوين URL محدَّدة في متصفِّح بديل. + + عند ضبط هذه السياسة على True، يحاول Chrome إطلاق عناوين URL معيَّنة في متصفِّح بديل (مثل Internet Explorer). يتم إعداد هذه الميزة باستخدام السياسات في المجموعة <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + وتُعد هذه الميزة بديلاً للإضافة <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. لن يظهر الإعداد من الإضافة في هذه الميزة، ولكن ننصح بشدة باستخدام سياسات Chrome بدلاً من ذلك. ويضمن ذلك مستوى أفضل من التوافق في المستقبل.</translation> <translation id="3997519162482760140">عناوين URL التي سيتم منحها إمكانية الدخول إلى أجهزة التقاط الفيديو في صفحات تسجيل الدخول إلى SAML</translation> <translation id="4001275826058808087">يمكن لمشرفي تكنولوجيا المعلومات في حالة أجهزة المؤسسات استخدام هذه العلامة للتحكم في السماح للمستخدمين باسترداد قيمة العروض من خلال تسجيل نظام تشغيل Chrome. @@ -1473,6 +1486,7 @@ <translation id="467236746355332046">الميزات المتاحة:</translation> <translation id="4674167212832291997">تخصيص قائمة أنماط عناوين URL التي يجب عرضها دائمًا بواسطة <ph name="PRODUCT_FRAME_NAME" />. إذا لم يتم تعيين هذه السياسة، فسيتم استخدام العارض التلقائي لجميع المواقع كما هو محدد بواسطة السياسة 'ChromeFrameRendererSettings'. للحصول على نماذج للأنماط، راجع https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">فتح قائمة عناوين URL</translation> +<translation id="4674871290487541952">تسمح هذه السياسة بالخوارزميات غير الآمنة في عمليات التحقُّق من السلامة أثناء عمليات تثبيت الإضافات وتحديثاتها</translation> <translation id="4680936297850947973">تمّ إيقاف هذه السياسة في M68. لذا يُرجى استخدام DefaultPopupsSetting بدلاً من ذلك. للحصول على شرح كامل، يمكنك الاطِّلاع على https://www.chromestatus.com/features/5675755719622656. في حال تفعيل هذه السياسة، سيتمّ السماح لمواقع الويب بالانتقال وفتح علامات التبويب/النوافذ الجديدة في آنٍ واحد. @@ -2446,6 +2460,12 @@ في حالة تعيين هذه السياسة إلى False، يتم إيقاف وضع الخلفية ولا يمكن التحكم فيه بواسطة المستخدم في إعدادات المتصفح. في حالة تركها دون تعيينها، يتم إيقاف وضع الخلفية مبدئيًا ويمكن التحكم فيه بواسطة المستخدم في إعدادات المتصفح.</translation> +<translation id="7123266440503901785">يتم تقديم <ph name="PRODUCT_NAME" /> لتثبيت الإضافات وتحديثها بشكلٍ آمن. ومع ذلك، قد يتم حماية محتوى بعض الإضافات التي تم استضافتها خارج "سوق Chrome الإلكتروني" فقط من خلال توقيع خوارزميات أو تجزئتها، مثل SHA1. عند إيقاف هذه السياسة، لن يسمح Chrome بتنفيذ آخر عمليات تثبيت وتحديث لبعض الإضافات (حتى يعيد مطوّرو برامج الإضافات إنشاء الإضافة باستخدام خوارزميات أقوى). وعند تفعيل هذه السياسة، يتم السماح بتنفيذ عمليات تثبيت وتحديث لبعض الإضافات. + + وسيتم إعداد ذلك تلقائيًا للسلوك المفعَّل عند عدم ضبط السياسة. + بدءًا من الإصدار 75 من <ph name="PRODUCT_NAME" />، سيتم إعداد ذلك تلقائيًا للسلوك الموقوف عند عدم ضبط السياسة. + + بدءًا من الإصدار 77 من<ph name="PRODUCT_NAME" />، سيتم تجاهل هذه السياسة ومعاملتها كأنها موقوفة.</translation> <translation id="7126716959063786004">تفعيل عمليات الإنهاء في "إدارة المهام"</translation> <translation id="7127892035367404455">العودة إلى الإصدار المستهدف</translation> <translation id="7128918109610518786">إدراج معرفات التطبيق التي يعرضها <ph name="PRODUCT_OS_NAME" /> كتطبيقات مثبتة في شريط المشغل.
diff --git a/components/policy/resources/policy_templates_bg.xtb b/components/policy/resources/policy_templates_bg.xtb index 0a7f0be..2962511 100644 --- a/components/policy/resources/policy_templates_bg.xtb +++ b/components/policy/resources/policy_templates_bg.xtb
@@ -765,6 +765,11 @@ Ако е деактивирана и изходящите връзки по UDP се филтрират от защитната стена, тогава тази машина ще позволява връзки само от клиентски машини в локалната мрежа. В случай че това правило не бъде зададено, настройката ще бъде активирана.</translation> +<translation id="2813281962735757923">Това правило контролира периодите, през които автоматичната проверка за актуализации няма да е разрешена на устройството с <ph name="PRODUCT_OS_NAME" />. + Когато за правилото е зададен списък с времеви интервали: + автоматичната проверка за актуализации няма да е възможна в рамките на посочените времеви интервали. Устройствата, за които се изисква връщане към друга версия или чиято версия на <ph name="PRODUCT_OS_NAME" /> е по-стара от минималната, няма да бъдат засегнати от това правило поради потенциални проблеми със сигурността. Освен това то няма да блокира проверките за актуализация, заявени от потребители или администратори. + Когато това правило не е зададено или не съдържа времеви интервали: + то няма да блокира автоматичните проверки за актуализации, но те може да бъдат предотвратявани от други правила. Тази функция е активирана само на устройства с Chrome, конфигурирани като терминали с автоматично стартиране. Другите устройства няма да бъдат ограничени от това правило.</translation> <translation id="2823870601012066791">Местоположение в системния регистър на Windows за клиенти под <ph name="PRODUCT_OS_NAME" />:</translation> <translation id="2824715612115726353">Активиране на режим „инкогнито“</translation> <translation id="2838830882081735096">Забраняване на мигрирането на данни и ARC</translation> @@ -1051,6 +1056,7 @@ <translation id="3547954654003013442">Настройки за прокси сървър</translation> <translation id="355118380775352753">Уебсайтове, които да се отварят в алтернативен браузър</translation> <translation id="3577251398714997599">Настройки за рекламите за сайтове с натрапчиви реклами</translation> +<translation id="3591527072193107424">Активиране на функцията „Поддръжка на наследени браузъри“</translation> <translation id="3591584750136265240">Конфигуриране на поведението при удостоверяване на данните за вход</translation> <translation id="3624171042292187668"> Бихте могли да разгледате настройката IsolateOrigins, за да получите най-доброто съчетание между изолиране и ограничено въздействие върху потребителите. За целта трябва да използвате IsolateOrigins със списък със сайтове, които искате да изолирате. Настоящата настройка SitePerProcess изолира всички сайтове. @@ -1237,6 +1243,13 @@ <translation id="3965339130942650562">Време за изчакване, преди да се изпълни излизане за неактивни потребители</translation> <translation id="3973371701361892765">Полицата да не се скрива автоматично никога</translation> <translation id="3984028218719007910">Определя дали <ph name="PRODUCT_OS_NAME" /> да запазва локални данни за профили след излизане. Ако е зададено „true“, <ph name="PRODUCT_OS_NAME" /> не съхранява постоянни профили и всички данни от потребителската сесия ще бъдат отхвърлени след изход. В случай че за това правило е зададено „false“ или не е конфигурирано, устройството може да запазва (шифровани) локални потребителски данни.</translation> +<translation id="398475542699441679">Това правило контролира активирането на „Поддръжка на наследени браузъри“. + + Когато правилото не е зададено или е false, Chrome няма да се опитва да отваря посочените URL адреси в алтернативен браузър. + + Когато правилото е true, Chrome ще опитва да отваря някои URL адреси в друг браузър (като например Internet Explorer). Тази функция се конфигурира чрез правилата в групата „<ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />“. + + Тя заменя разширението „<ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />“. Конфигурацията на разширението ще се прехвърли към функцията, но силно се препоръчва вместо това да се използват правилата за Chrome. Това ще обезпечи по-добра съвместимост в бъдеще.</translation> <translation id="3997519162482760140">URL адреси, които ще получават достъп до устройствата за заснемане на видео на страниците за влизане чрез SAML</translation> <translation id="4001275826058808087">Системните администратори на корпоративни устройства могат да използват този флаг, за да контролират дали на потребителите е разрешено да осребряват оферти чрез регистрацията за Chrome OS. @@ -1480,6 +1493,7 @@ За примерни образци вижте https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Отваряне на списък с URL адреси</translation> +<translation id="4674871290487541952">Разрешаване на несигурни алгоритми при проверката на целостта при актуализации и инсталирания на разширения</translation> <translation id="4680936297850947973">Това правило е оттеглено във версия M68. Вместо него използвайте DefaultPopupsSetting. За пълно обяснение вижте https://www.chromestatus.com/features/5675755719622656. @@ -2457,6 +2471,12 @@ При false този режим е деактивиран и не може да се управлява от настройките на браузъра. В случай че правилото не е зададено, режимът на заден план първоначално е деактивиран и потребителите могат да го контролират от настройките на браузъра.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> обезпечава сигурно инсталиране и актуализиране на разширения. Възможно е обаче съдържанието на някои разширения, хоствани извън уеб магазина на Chrome, да е защитено само с несигурни алгоритми за хеширане или подписване, като SHA1. Когато това правило е деактивирано, инсталирането и актуализирането на такива разширения няма да бъдат разрешавани от Chrome (докато програмистите на разширението не го обновят с по-надеждни алгоритми). Когато правилото е активирано, инсталирането и актуализирането на такива разширения ще се допуска. + + Ако правилото не е зададено, поведението по подразбиране ще бъде същото като при активирано правило. + От <ph name="PRODUCT_NAME" /> версия 75 поведението по подразбиране (когато правилото не е зададено) ще бъде като при деактивирано правило. + + От <ph name="PRODUCT_NAME" /> версия 77 правилото ще се пренебрегва и ще се третира като деактивирано.</translation> <translation id="7126716959063786004">Активиране на прекратяването на процеси в диспечера на задачите</translation> <translation id="7127892035367404455">Връщане към целева версия</translation> <translation id="7128918109610518786">Посочва идентификаторите на приложенията, които <ph name="PRODUCT_OS_NAME" /> показва като фиксирани в лентата на стартовия панел.
diff --git a/components/policy/resources/policy_templates_bn.xtb b/components/policy/resources/policy_templates_bn.xtb index 73d27a90..5ea7027b 100644 --- a/components/policy/resources/policy_templates_bn.xtb +++ b/components/policy/resources/policy_templates_bn.xtb
@@ -882,6 +882,11 @@ যদি এই সেটিং অক্ষম করা থাকে এবং ফায়ারওয়াল দ্বারা UDP সংযোগ ফিল্টার করা হয়, তাহলে এই মেশিন স্থানীয় নেটয়ার্কের ভিতরে কেবল ক্লায়েন্ট মেশিনগুলির সংযোগ করতে অনুমতি দেবে৷ যদি এই নীতি সেট না করে ছেড়ে যাওয়া হয় তাহলে সেটিং সক্ষম হবে৷</translation> +<translation id="2813281962735757923"><ph name="PRODUCT_OS_NAME" /> ডিভাইস কোন কোন সময়ে নিজে থেকে আপডেট খুঁজে নিতে পারবে না, সেটি এই নীতির মাধ্যমে নিয়ন্ত্রণ হয়। + সময়সীমার খালি না থাকা তালিকাতে এই নীতিটি সেট করা থাকলে: + উল্লেখিত সময়সীমার মধ্যে ডিভাইসটি নিজে থেকে আপডেট খুঁজে নিতে পারবে না। <ph name="PRODUCT_OS_NAME" />-এর প্রয়োজনীয় ভার্সনের চেয়ে পুরনো ভার্সন ব্যবহার করা ডিভাইস বা রোলব্যাকের প্রয়োজন আছে এমন ডিভাইসে নিরাপত্তা সম্পর্কিত সমস্যার সম্ভাবনা থাকার কারণে এই নীতি প্রয়োগ করা হবে না। তার সাথে, ব্যবহারকারী বা অ্যাডমিনিস্ট্রেটর আপডেট খুঁজতে চাইলে তা এই নীতির মাধ্যমে ব্লক করা হবে না। + এই নীতি সেট করা না থাকলে বা কোনও সময়সীমা উল্লেখ করা না থাকলে: + নিজে থেকে আপডেট খুঁজে নিতে এই নীতি বাধা দেবে না কিন্তু অন্য কোনও নীতির মাধ্যমে তা ব্লক হতে পারে। Chrome ডিভাইসটি কিয়স্ক মোডে নিজে থেকে চালু হওয়ার জন্য কনফিগার করা থাকলে তবেই এই ফিচারটি চালু হবে। অন্য কোনও ডিভাইসের উপর এই নীতির বিধিনিষেধ প্রয়োগ হবে না।</translation> <translation id="2823870601012066791"><ph name="PRODUCT_OS_NAME" /> ক্লায়েন্টের জন্য Windows রেজিস্ট্রি লোকেশন:</translation> <translation id="2824715612115726353">ছদ্মবেশ মোড সক্ষম করুন</translation> <translation id="283695852388224413">যদি এই নীতি সেট করা থাকে তাহলে পিনের কনফিগার করে থাকা সর্বোচ্চ দৈর্ঘ্য এনফোর্স করা হয়। ০ বা এর চেয়ে কম মান থাকার অর্থ এর কোনও সর্বোচ্চ দৈর্ঘ্য নেই; এবং ব্যবহারকারী যত বড় ইচ্ছা পিন সেট করতে পারেন। এই সেটিং যদি <ph name="PIN_UNLOCK_MINIMUM_LENGTH_POLICY_NAME" /> এর চেয়ে কম কিন্তু ০ এর চেয়ে বড় হয়, তাহলে সর্বনিম্ন দৈর্ঘ্য ও সর্বোচ্চ দৈর্ঘ্য একই হয়। @@ -1215,6 +1220,7 @@ <translation id="3547954654003013442">প্রক্সি সেটিংস</translation> <translation id="355118380775352753">বিকল্প ব্রাউজারে যে ওয়েবসাইটগুলি খোলা হবে</translation> <translation id="3577251398714997599">যে সাইটে ব্যাঘাতকারী বিজ্ঞাপন দেখানো হয় সেই সাইটের জন্য বিজ্ঞাপন সেটিংস</translation> +<translation id="3591527072193107424">পুরনো ব্রাউজার সাপোর্ট ফিচারটি চালু করুন।</translation> <translation id="3591584750136265240">লগইন প্রমাণীকরণ আচরণ কনফিগার করে</translation> <translation id="3624171042292187668"> আইসোলেশন চালু রাখা এবং ব্যবহারকারীদের উপরে সম্ভাব্য নেতিবাচক প্রভাব সীমিত রাখা, দুধরনেরই সুবিধা পাওয়ার জন্য আপনি IsolateOrigins নীতির সেটিং দেখে নিতে চাইতে পারেন যাতে IsolateOrigins ব্যবহার করে আপনার বেছে নেওয়া সাইটগুলি অন্যান্য সাইটের থেকে আইসোলেট করতে পারেন। SitePerProcess সেটিংস সমস্ত সাইট আইসোলেট করে। @@ -1408,6 +1414,13 @@ <translation id="3965339130942650562">নিষ্ক্রিয় ব্যবহারকারী লগ-আউট কার্যকর হওয়া পর্যন্ত সময় শেষ</translation> <translation id="3973371701361892765">তাকটি কখনই স্বয়ংক্রিয়ভাবে লুকায়িত রাখবেন না</translation> <translation id="3984028218719007910">লগআউটের পরে <ph name="PRODUCT_OS_NAME" /> স্থানীয় ডেটা রাখবে কি না তা নির্ধারণ করে৷ সত্যতে সেট থাকলে, <ph name="PRODUCT_OS_NAME" /> কোনো স্থির অ্যাকাউন্টকে রাখবে না ও লগ আউটের পরে ব্যবহারকারী সেশন থেকে সমস্ত ডেটা পরিত্যাগ করা হবে৷ এই নীতি মিথ্যাতে সেট থাকলে বা কনফিগার করা না থাকলে, ডিভাইস (এনক্রিপ্ট হওয়া) স্থানীয় ব্যবহারকারী ডেটা রাখতে পারে৷</translation> +<translation id="398475542699441679">পুরনো ব্রাউজার সাপোর্ট করার এক্সটেনশনটি চালু হবে কিনা সেটি এই নীতির মাধ্যমে নিয়ন্ত্রণ হয়। + + এই নীতি সেট না করা থাকলে বা "ফলস" হিসেবে সেট করা থাকলে Chrome অন্য কোনও ব্রাউজারে, নির্দিষ্ট করে দেওয়া ইউআরএল খোলার চেষ্টা করবে না। + + এই নীতি বা "ট্রু" হিসেবে সেট করা থাকলে Chrome অন্য কোনও ব্রাউজারে (যেমন Internet Explorer) কিছু ইউআরএল খোলার চেষ্টা করবে। এই ফিচারটি <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> গ্রুপের নীতি ব্যবহার করে কনফিগার করা হয়। + + এই ফিচারটি <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> এক্সটেনশনের বদলে ব্যবহার করা হয়। এক্সটেনশনের সব কনফিগারেশন এই ফিচারে চলে আসবে, তবে এর পরিবর্তে Chrome-এর নীতি ব্যবহারের জন্য পরামর্শ দেওয়া হচ্ছে। ফলে, ভবিষ্যতে এটি আরও ভাল কাজ করবে।</translation> <translation id="3997519162482760140">SAML লগইন পৃষ্ঠাগুলিতে যেসব URL কে ভিডিও ক্যাপচার ডিভাইসে অ্যাক্সেস দেওয়া হবে</translation> <translation id="4001275826058808087">এন্টারপ্রাইজ ডিভাইসগুলির জন্য IT প্রশাসক, Chrome OS নথিভুক্তকরণের মাধ্যমে ব্যবহারকারীদের অফারগুলি ভাঙ্গানোর জন্য ব্যবহারকারীদের মঞ্জুরি দেওয়া হবে কিনা তা নিয়ন্ত্রণ করতে এই ফ্ল্যাগ ব্যবহার করতে পারে৷ @@ -1722,6 +1735,7 @@ প্যাটার্নের উদাহরণের জন্য http://www.chromium.org/developers/how-tos/chrome-frame-getting-started দেখুন৷</translation> <translation id="467449052039111439">URL-এর একটি তালিকা খুলুন</translation> +<translation id="4674871290487541952">এক্সটেনশন আপডেট এবং ইনস্টলগুলিতে ইন্টিগ্রিটি চেক করার ক্ষেত্রে অসুরক্ষিত অ্যালগরিদমকে অনুমতি দেওয়া হবে</translation> <translation id="4680936297850947973">M68-এ বন্ধ করা হয়েছে। এর পরিবর্তে DefaultPopupsSetting ব্যবহার করুন। সম্পূর্ণ বিবরণের জন্য, https://www.chromestatus.com/features/5675755719622656 দেখুন। @@ -2858,6 +2872,12 @@ <translation id="7123160381479171745">যেসব ব্যবহারকারীরা ডিভাইসে লগ-ইন করার মঞ্জুরিপ্রাপ্ত তাদের তালিকা নির্ধারণ করে। এন্ট্রিগুলি <ph name="USER_WHITELIST_ENTRY_FORMAT" /> রূপে হয়, যেমন <ph name="USER_WHITELIST_ENTRY_EXAMPLE" />। কোনও ডোমেনে অবাধ ব্যবহারকারীদের মঞ্জুরি দিতে <ph name="USER_WHITELIST_ENTRY_WILDCARD" /> রূপের এন্ট্রিগুলি ব্যবহার করুন। যদি এই নীতি কনফিগার করা না থাকলে, কোন ব্যবহারকারীদের সাইন-ইন করার মঞ্জুরি দেওয়া হবে সে ব্যাপারে কোনও বিধিনিষেধ থাকে না। মনে রাখবেন যে নতুন ব্যবহারকারী তৈরি করার জন্য <ph name="DEVICE_ALLOW_NEW_USERS_POLICY_NAME" /> নীতি এখনও উপযুক্তভাবে কনফিগার করা আবশ্যক।</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" />-এ নিরাপদে এক্সটেনশন আপডেট এবং ইনস্টল করা যায়। তবে, Chrome ওয়েব স্টোর-এর বাইরে হোস্ট করা কিছু এক্সটেনশনের কন্টেন্ট হয়ত শুধুমাত্র SHA1 ইত্যাদির মতো অনিরাপদ সাইনিং অথবা হ্যাশিং অ্যালগরিদম দিয়ে সুরক্ষিত থাকে। এই নীতি বন্ধ থাকলে Chrome এই ধরনের এক্সটেনশনের ক্ষেত্রে নতুন করে আপডেট এবং ইনস্টল করার অনুমতি দেবে না (এক্সটেনশনের ডেভলপার আরও উন্নত অ্যালগরিদম দিয়ে এক্সটেনশনটি তৈরি না করা পর্যন্ত)। এই নীতি চালু থাকলে এই ধরনের এক্সটেনশনের জন্য আপডেট এবং ইনস্টল করার অনুমতি পাওয়া যাবে। + + সেট করা না থাকলে স্বভাবত এটি চালু থাকবে। + <ph name="PRODUCT_NAME" /> 75 ভার্সন থেকে, সেট করা না থাকলে এটি স্বভাবত বন্ধ থাকবে। + + <ph name="PRODUCT_NAME" /> 75 ভার্সন থেকে, এই নীতি এড়িয়ে যাওয়া হবে এবং বন্ধ আছে হিসেবে বিবেচিত হবে।</translation> <translation id="7126716959063786004">টাস্ক ম্যানেজারে প্রক্রিয়াগুলি বন্ধ করার সুবিধা চালু করে</translation> <translation id="7127892035367404455">টার্গেট ভার্সনে ফিরে যান</translation> <translation id="7128918109610518786">লঞ্চার বারে পিন করা অ্যাপ্লিকেশন হিসাবে <ph name="PRODUCT_OS_NAME" /> যে অ্যাপ্লিকেশন চিহ্নিতকারী দেখায় তার তালিকা প্রদান করে৷
diff --git a/components/policy/resources/policy_templates_ca.xtb b/components/policy/resources/policy_templates_ca.xtb index 92d5c85..c4d264b 100644 --- a/components/policy/resources/policy_templates_ca.xtb +++ b/components/policy/resources/policy_templates_ca.xtb
@@ -768,6 +768,11 @@ Si aquesta opció de configuració està desactivada i el tallafocs filtra les connexions UDP sortints, aquest ordinador només permetrà les connexions de màquines de client a la xarxa local. Si aquesta política no es defineix, la configuració s'activarà.</translation> +<translation id="2813281962735757923">Aquesta política controla els intervals de temps en què no es permet que el dispositiu <ph name="PRODUCT_OS_NAME" /> cerqui actualitzacions automàticament. + Si aquesta política s'estableix en una llista no buida d'intervals de temps: + Els dispositius no podran cercar actualitzacions automàticament durant els intervals de temps especificats. Aquesta política no afectarà els dispositius <ph name="PRODUCT_OS_NAME" /> que s'hagin de revertir a una versió anterior o que tinguin una versió anterior a la mínima, ja que podria provocar problemes de seguretat. A més, aquesta política no bloquejarà les cerques d'actualitzacions sol·licitades per usuaris o administradors. + Si aquesta política no s'estableix o no conté cap interval de temps: + La política no bloquejarà les cerques automàtiques d'actualitzacions, però pot ser que hi hagi altres polítiques que sí que les bloquegin. Aquesta funció només s'activa en dispositius Chrome configurats com a quioscos d'inici automàtic. Aquesta política no restringirà altres dispositius.</translation> <translation id="2823870601012066791">Ubicació del registre de Windows per a clients amb <ph name="PRODUCT_OS_NAME" />:</translation> <translation id="2824715612115726353">Activa el mode d'incògnit</translation> <translation id="2838830882081735096">No permetis la migració de dades i ARC</translation> @@ -1058,6 +1063,7 @@ <translation id="3547954654003013442">Configuració del servidor intermediari</translation> <translation id="355118380775352753">Llocs web que s'obriran al navegador alternatiu</translation> <translation id="3577251398714997599">Configuració d'anuncis per als llocs web amb anuncis intrusius</translation> +<translation id="3591527072193107424">Activa la funció Compatibilitat amb navegadors antics.</translation> <translation id="3591584750136265240">Configura el comportament de l'autenticació d'inici de sessió</translation> <translation id="3624171042292187668"> Pots utilitzar la política IsolateOrigins amb una llista dels llocs web que vols aïllar per treure el màxim partit de les dues opcions: aïllar llocs web amb el mínim impacte possible per als usuaris. L'opció de configuració SitePerProcessAndroid aïlla tots els llocs web. @@ -1241,6 +1247,13 @@ <translation id="3965339130942650562">Temps d'espera fins que s'executi el tancament de sessió de l'usuari inactiu</translation> <translation id="3973371701361892765">No amaguis mai el prestatge automàticament</translation> <translation id="3984028218719007910">Determina si <ph name="PRODUCT_OS_NAME" /> conserva les dades de comptes locals després de tancar la sessió. Si es defineix a «true» (cert), <ph name="PRODUCT_OS_NAME" /> no conserva cap compte persistent i es descartaran totes les dades de la sessió de l'usuari després de tancar la sessió. Si aquesta política es defineix a «false» (fals) o no es configura, el dispositiu pot conservar dades d'usuari locals (xifrades).</translation> +<translation id="398475542699441679">Aquesta política controla si s'activa l'extensió Compatibilitat amb navegadors antics. + + Si aquesta política es deixa sense establir o s'estableix en "false", Chrome no provarà d'iniciar URL designats en un altre navegador. + + Si aquesta política s'estableix en "true", Chrome provarà d'iniciar alguns URL en un altre navegador (com ara Internet Explorer). Aquesta funció està configurada mitjançant les polítiques del grup <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + Aquesta funció substitueix l'extensió <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. La configuració de l'extensió inclou aquesta funció, però et recomanem que utilitzis les polítiques de Chrome en lloc seu. Això garantirà una millor compatibilitat en el futur.</translation> <translation id="3997519162482760140">URL que obtindran permís per accedir a dispositius de captura de vídeo en pàgines d'inici de sessió amb SAML</translation> <translation id="4001275826058808087">Els administradors de TI de dispositius empresarials poden utilitzar aquesta marca per controlar si es permet als usuaris bescanviar ofertes mitjançant el registre de Chrome OS. @@ -1483,6 +1496,7 @@ Per veure patrons d'exemple, consulteu l'enllaç https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Obre una llista d'URL</translation> +<translation id="4674871290487541952">Permet els algoritmes insegurs en comprovar la integritat de les instal·lacions i actualitzacions de l'extensió</translation> <translation id="4680936297850947973">Aquesta política es considera obsoleta a M68. Substitueix-la per DefaultPopupsSetting. Per veure l'explicació completa, consulta https://www.chromestatus.com/features/5675755719622656. @@ -2461,6 +2475,12 @@ Si aquesta política s'estableix en False, el mode de segon pla es desactiva i l'usuari no el pot controlar a la configuració del navegador. Si aquesta política es deixa sense establir, el mode de segon pla es desactiva en un primer moment i l'usuari el pot controlar a la configuració del navegador.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> permet actualitzar i instal·lar les extensions de manera segura. Tanmateix, pot ser que el contingut d'algunes extensions allotjades fora de Chrome Web Store només estigui protegit per algoritmes de resum o de signatura poc segurs, com ara SHA1. Si aquesta política es desactiva, Chrome no permetrà que tornis a instal·lar ni que actualitzis aquestes extensions fins que els seus desenvolupadors no les tornin a crear amb algoritmes més segurs. Si aquesta política s'activa, s'admetrà la instal·lació i les actualitzacions d'aquest tipus d'extensions. + + Aquest comportament serà el predeterminat si la política no s'estableix. + A partir de <ph name="PRODUCT_NAME" /> 75, si la política no s'estableix, es desactivarà de manera predeterminada. + + A partir de <ph name="PRODUCT_NAME" /> 77, aquesta política s'ignorarà i es considerarà desactivada.</translation> <translation id="7126716959063786004">Activa la finalització de processos al gestor de tasques</translation> <translation id="7127892035367404455">Torna a la versió de destinació</translation> <translation id="7128918109610518786">Enumera els identificadors de les aplicacions que <ph name="PRODUCT_OS_NAME" /> mostra com a aplicacions fixades a la barra d'execució ràpida.
diff --git a/components/policy/resources/policy_templates_cs.xtb b/components/policy/resources/policy_templates_cs.xtb index 7a1081c..8cbf1aa 100644 --- a/components/policy/resources/policy_templates_cs.xtb +++ b/components/policy/resources/policy_templates_cs.xtb
@@ -772,6 +772,11 @@ Pokud je toto nastavení deaktivováno a odchozí připojení UDP jsou filtrována bránou firewall, lze se k tomuto počítači připojit pouze z klientských počítačů v místní síti. Pokud tato zásada není nastavena, bude nastavení aktivováno.</translation> +<translation id="2813281962735757923">Tato zásada určuje časové rámce, v nichž zařízení se systémem <ph name="PRODUCT_OS_NAME" /> nemá povoleno automaticky kontrolovat dostupnost aktualizací. + Když je tato zásada nastavená na neprázdný seznam časových intervalů: + Zařízení během zadaných časových intervalů nebudou moci automaticky kontrolovat dostupnost aktualizací. Tato zásada vzhledem k možným bezpečnostním problémům nebude mít vliv na zařízení, která vyžadují vrácení na starší verzi nebo v nichž je nižší než minimální verze systému <ph name="PRODUCT_OS_NAME" />. Nebude také blokovat kontroly dostupnosti aktualizací, o které požádají uživatelé nebo administrátoři. + Když tato zásada není nastavená nebo neobsahuje žádné časové intervaly: + Tato zásada nebude blokovat automatické kontroly dostupnosti aktualizací, mohou je však blokovat jiné zásady. Tato funkce je aktivovaná jen na zařízeních Chrome, která jsou nakonfigurována jako automaticky spouštěné terminály. Ostatní zařízení touto zásadou omezena nebudou.</translation> <translation id="2823870601012066791">Umístění v registru systému Windows pro klienty <ph name="PRODUCT_OS_NAME" />:</translation> <translation id="2824715612115726353">Povolit anonymní režim</translation> <translation id="2838830882081735096">Zakázat migraci dat a rozšíření ARC</translation> @@ -1064,6 +1069,7 @@ <translation id="3547954654003013442">Nastavení proxy serveru</translation> <translation id="355118380775352753">Weby, které se mají otevírat v alternativním prohlížeči</translation> <translation id="3577251398714997599">Nastavení reklam pro weby s rušivými reklamami</translation> +<translation id="3591527072193107424">Aktivovat funkci Podpora starších prohlížečů.</translation> <translation id="3591584750136265240">Konfigurace chování přihlašovacího ověření</translation> <translation id="3624171042292187668"> Chcete-li využívat izolaci, ale omezit její dopad na uživatele, použijte zásadu IsolateOrigins se seznamem webů, které chcete izolovat. Toto nastavení (SitePerProcess) izoluje všechny weby. @@ -1249,6 +1255,13 @@ <translation id="3965339130942650562">Časový limit před odhlášením nečinného uživatele</translation> <translation id="3973371701361892765">Nikdy poličku automaticky neskrývat</translation> <translation id="3984028218719007910">Určuje, zda systém <ph name="PRODUCT_OS_NAME" /> po odhlášení zachová místní data účtu. Pokud je tato zásada nastavena na hodnotu True, nebude systém <ph name="PRODUCT_OS_NAME" /> uchovávat žádné účty trvale a všechna data návštěvy uživatele budou po odhlášení smazána. Pokud je tato zásada nastavena na hodnotu False, nebo není nastavena, může zařízení uchovat (šifrovaná) místní uživatelská data.</translation> +<translation id="398475542699441679">Tato zásada ovládá zapnutí funkce Podpora starších prohlížečů. + + Když je tato zásada ponechána nenastavená nebo je nastavená na hodnotu false, Chrome se zadané adresy URL nebude pokoušet otevírat v alternativním prohlížeči. + + Když je tato zásada nastavená na hodnotu true, Chrome se některé adresy URL bude pokoušet otevřít v alternativním prohlížeči (jako je Internet Explorer). Tato funkce se konfiguruje pomocí zásad ve skupině <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + Tato funkce nahrazuje rozšíření <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. Konfigurace se z rozšíření přenese do této funkce. Místo rozšíření důrazně doporučujeme používat zásady Chromu. Zajistíte tím lepší kompatibilitu do budoucnosti.</translation> <translation id="3997519162482760140">Adresy URL, kterým bude na přihlašovacích stránkách SAML udělen přístup k zařízením pro záznam videa</translation> <translation id="4001275826058808087">Administrátoři IT spravující podniková zařízení mohou pomocí tohoto příznaku uživatelům povolit nebo zakázat uplatnění zvláštních nabídek při registraci systému Chrome OS. @@ -1499,6 +1512,7 @@ Ukázkové vzory naleznete na stránce https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Otevřít seznam adres URL</translation> +<translation id="4674871290487541952">V kontrolách integrity při aktualizacích a instalacích rozšíření povolit nezabezpečené algoritmy</translation> <translation id="4680936297850947973">Podpora této zásady byla od verze M68 ukončena. Použijte namísto ní zásadu DefaultPopupsSetting. Úplné vysvětlení najdete na stránce https://www.chromestatus.com/features/5675755719622656. @@ -2519,6 +2533,12 @@ Pokud je tato zásada nastavena na hodnotu false, režim na pozadí je deaktivován a uživatel jej nemůže ovládat v nastaveních prohlížeče. Pokud je tato zásada ponechána nenastavená, režim na pozadí je ve výchozím nastavení deaktivován, ale uživatel jej může ovládat v nastaveních prohlížeče.</translation> +<translation id="7123266440503901785">Prohlížeč <ph name="PRODUCT_NAME" /> zajišťuje bezpečnou aktualizaci a instalaci rozšíření. Obsah některých rozšíření hostovaných mimo Internetový obchod Chrome však může být chráněn jen nedostatečně bezpečnými podepisovacími nebo hašovacími algoritmy, jako je například SHA1. Pokud je tato zásada vypnutá, Chrome nové instalace a aktualizace takových rozšíření nebude povolovat (dokud vývojáři do rozšíření neimplementují bezpečnější algoritmy). Pokud je tato zásada zapnutá, instalace a aktualizace takových rozšíření jsou povoleny. + + Pokud tato zásada není nastavená, prohlížeč se chová, jako kdyby byla zapnutá. + Od verze <ph name="PRODUCT_NAME" /> 75 se jako výchozí bude používat chování odpovídající vypnuté zásadě. + + Od verze <ph name="PRODUCT_NAME" /> 77 tato zásada bude ignorována a prohlížeč se bude chovat, jako kdyby byla vypnutá.</translation> <translation id="7126716959063786004">Umožnit ukončování procesů ve Správci úloh</translation> <translation id="7127892035367404455">Vrátit se k cílové verzi</translation> <translation id="7128918109610518786">Seznam identifikátorů aplikací, které se v <ph name="PRODUCT_OS_NAME" /> zobrazují jako připnuté na liště spouštěče. @@ -3215,7 +3235,7 @@ Pokud tuto zásadu nenastavíte, použije se pro systém <ph name="PRODUCT_OS_NAME" /> výchozí doba 345 600 000 milisekund (čtyři dny) a pro prohlížeč <ph name="PRODUCT_NAME" /> 604 800 000 milisekund (jeden týden).</translation> <translation id="8685024486845674965">Ochrana hesla – upozornění je spouštěno opětovným použitím hesla</translation> <translation id="8693243869659262736">Použít integrovaného klienta DNS</translation> -<translation id="8703488928438047864">Nahlásit stav desky</translation> +<translation id="8703488928438047864">Nahlásit stav panelu</translation> <translation id="8704831857353097849">Seznam deaktivovaných pluginů</translation> <translation id="8711086062295757690">Určuje klíčové slovo, které v adresním řádku spouští vyhledávání tohoto poskytovatele.
diff --git a/components/policy/resources/policy_templates_da.xtb b/components/policy/resources/policy_templates_da.xtb index 9b146dc..2319476 100644 --- a/components/policy/resources/policy_templates_da.xtb +++ b/components/policy/resources/policy_templates_da.xtb
@@ -771,6 +771,11 @@ Hvis denne indstilling er deaktiveret, og udgående UDP-forbindelser filtreres af firewallen, vil denne computer kun tillade forbindelser fra klientcomputere på det lokale netværk. Hvis denne politik ikke er angivet, aktiveres denne indstilling.</translation> +<translation id="2813281962735757923">Denne politik styrer de tidsrum, hvor <ph name="PRODUCT_OS_NAME" />-enheden ikke har tilladelse til automatisk at søge efter opdateringer. + Hvis politikken er konfigureret med en liste over tidsintervaller, som ikke er tom: + Enheder kan ikke automatisk søge efter opdateringer i de angivne tidsintervaller. Enheder, der kræver en tilbagetrækning eller er ældre end minimumsversionen for <ph name="PRODUCT_OS_NAME" />, berøres ikke af denne politik på grund af potentielle sikkerhedsproblemer. Derudover blokerer politikken ikke for søgning efter opdateringer, hvis brugere eller administratorer anmoder om dette. + Hvis politikken ikke er konfigureret eller ikke indeholder tidsintervaller: + Automatiske søgninger efter opdateringer blokeres ikke af denne politik, men blokeres muligvis af andre politikker. Denne funktion er kun aktiveret på Chrome-enheder, der er konfigureret som terminaler med automatisk opstart. Andre enheder begrænses ikke af denne politik.</translation> <translation id="2823870601012066791"><ph name="PRODUCT_OS_NAME" />-klienters placering i Windows-registreringsdatabasen:</translation> <translation id="2824715612115726353">Aktiver inkognitotilstand</translation> <translation id="2838830882081735096">Tillad ikke datamigrering og ARC</translation> @@ -1062,6 +1067,7 @@ <translation id="3547954654003013442">Proxyindstillinger</translation> <translation id="355118380775352753">Websites, der skal åbnes i en alternativ browser</translation> <translation id="3577251398714997599">Annonceindstilling for websites med påtrængende annoncer</translation> +<translation id="3591527072193107424">Aktivér funktionen Emulator til ældre websites.</translation> <translation id="3591584750136265240">Konfigurer adfærden for logingodkendelse</translation> <translation id="3624171042292187668"> Det er en god idé at kigge på politikindstillingen IsolateOrigins for at få det bedste fra begge verdener (isolering og begrænset indvirkning på brugerne) ved at bruge IsolateOrigins sammen med en liste over de websites, du vil isolere. Denne indstilling, SitePerProcess, isolerer alle websites. @@ -1249,6 +1255,13 @@ <translation id="3965339130942650562">Timeout, indtil brugeren logges ud på grund af inaktivitet</translation> <translation id="3973371701361892765">Skjul aldrig hylden automatisk</translation> <translation id="3984028218719007910">Bestemmer, om <ph name="PRODUCT_OS_NAME" /> bevarer lokale kontodata efter logout. Hvis den er angivet til sand, er der ingen vedvarende konti, der bevares af <ph name="PRODUCT_OS_NAME" />, og alle data fra brugersessionen kasseres efter logout. Hvis denne politik er angivet til falsk eller ikke er konfigureret, kan enheden beholde (krypterede) lokale brugerdata.</translation> +<translation id="398475542699441679">Denne politik styrer, om Emulator til ældre websites skal aktiveres. + + Hvis politikken angives som falsk eller ikke konfigureres, forsøger Chrome ikke at starte angivne webadresser i en alternativ browser. + + Hvis politikken angives som sand, forsøger Chrome at starte nogle webadresser i en alternativ browser (f.eks. Internet Explorer). Denne funktion konfigureres via politikkerne i gruppen <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + Denne funktion erstatter udvidelsen <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. Konfigurationen fra udvidelsen overføres til denne funktion, men vi anbefaler på det kraftigste, at du bruger Chrome-politikker i stedet. Dette sikrer en bedre kompatibilitet fremover.</translation> <translation id="3997519162482760140">Webadresser, der får adgang til videooptagelsesenheder på SAML-loginsider</translation> <translation id="4001275826058808087">It-administratorer for virksomhedsenheder kan bruge denne markering til at kontrollere, om brugerne skal have tilladelse til at indløse tilbud via Chrome OS-registrering. @@ -1490,6 +1503,7 @@ Du kan se eksempler på mønstre på https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Åbn en liste over webadresser</translation> +<translation id="4674871290487541952">Tillad usikre algoritmer i integritetstjek ved opdateringer og installationer af udvidelser</translation> <translation id="4680936297850947973">Udfaset i M68. Brug DefaultPopupsSetting i stedet. Få en fuld forklaring på https://www.chromestatus.com/features/5675755719622656. @@ -2487,6 +2501,12 @@ Hvis denne politik er angivet til Falsk, er baggrundstilstanden deaktiveret og kan ikke styres af brugeren i browserindstillingerne. Hvis denne politik ikke er indstillet, er baggrundstillingen i første omgang deaktiveret og kan styres af brugeren i browserindstillingerne.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> giver sikker opdatering og installation af udvidelser. Indholdet i nogle udvidelser, der hostes uden for Chrome Webshop, er dog muligvis kun beskyttet af usikkert login eller hashing-algoritmer som f.eks. SHA1. Hvis politikken deaktiveres, tillader Chrome ikke nye installationer og opdateringer af sådanne udvidelser (indtil udvidelsernes udviklere har genopbygget udvidelserne med stærkere algoritmer). Hvis politikken aktiveres, tillades installation og opdateringer af sådanne udvidelser. + + Hvis den ikke konfigureres, anvendes den aktiverede adfærd som standard. + Hvis den ikke konfigureres, anvendes den deaktiverede adfærd som standard fra og med <ph name="PRODUCT_NAME" /> 75. + + Politikken ignoreres og behandles som deaktiveret fra og med <ph name="PRODUCT_NAME" /> 77.</translation> <translation id="7126716959063786004">Gør det muligt at afslutte processer via Jobliste</translation> <translation id="7127892035367404455">Gå tilbage til målversion</translation> <translation id="7128918109610518786">Angiver applikationsid'er på en liste, som <ph name="PRODUCT_OS_NAME" /> viser som fastgjorte apps på applisten.
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb index 9d345fa..5b05b12 100644 --- a/components/policy/resources/policy_templates_de.xtb +++ b/components/policy/resources/policy_templates_de.xtb
@@ -775,6 +775,11 @@ Falls die Einstellung deaktiviert ist und ausgehende UDP-Verbindungen von der Firewall gefiltert werden, erlaubt dieser Computer nur Verbindungen von Clientcomputern im lokalen Netzwerk. Wenn diese Richtlinie nicht konfiguriert ist, wird die Einstellung aktiviert.</translation> +<translation id="2813281962735757923">Über diese Richtlinie wird der Zeitraum festgelegt, in dem das <ph name="PRODUCT_OS_NAME" />-Gerät nicht automatisch nach Updates suchen darf. + Folgendes passiert, wenn diese Richtlinie auf eine nicht leere Liste von Zeiträumen festgelegt wird: + Geräte können während der festgelegten Zeiträume nicht automatisch nach Updates suchen. Auf Geräten, für die ein Rollback erforderlich ist oder die eine Version von <ph name="PRODUCT_OS_NAME" /> ausführen, die unter der Mindestversion liegt, hat diese Richtlinie aufgrund potenzieller Sicherheitsprobleme keine Auswirkungen. Außerdem blockiert diese Richtlinie keine Prüfungen auf Updates, die von Nutzern oder Administratoren angefordert werden. + Wenn diese Richtlinie nicht konfiguriert ist oder keine Zeiträume enthält, passiert Folgendes: + Automatische Prüfungen auf Updates werden zwar nicht durch diese Richtlinie blockiert, können jedoch durch andere Richtlinien blockiert werden. Diese Funktion ist nur auf Chrome-Geräten aktiviert, die als automatisch startende Kioske konfiguriert wurden. Andere Geräte werden von dieser Richtlinie nicht eingeschränkt.</translation> <translation id="2823870601012066791">Windows-Registrierungspfad für <ph name="PRODUCT_OS_NAME" />-Clients:</translation> <translation id="2824715612115726353">Inkognitomodus aktivieren</translation> <translation id="2838830882081735096">Datenmigration und ARC nicht zulassen</translation> @@ -1061,6 +1066,7 @@ <translation id="3547954654003013442">Proxy-Einstellungen</translation> <translation id="355118380775352753">Websites, die in einem alternativen Browser geöffnet werden sollen</translation> <translation id="3577251398714997599">Einstellungen für Werbung für Websites mit aufdringlichen Werbeanzeigen</translation> +<translation id="3591527072193107424">Funktion für die Unterstützung älterer Browser aktivieren.</translation> <translation id="3591584750136265240">Verhalten der Log-in-Authentifizierung konfigurieren</translation> <translation id="3624171042292187668"> Sie sollten sich die Richtlinieneinstellung "IsolateOrigins" ansehen, um die Auswirkungen auf die Nutzer bei der Isolierung von Websites gering zu halten. Verwenden Sie dazu "IsolateOrigins" mit einer Liste von Websites, die Sie isolieren möchten. Mit der Einstellung "SitePerProcess" werden alle Websites isoliert. @@ -1244,6 +1250,13 @@ <translation id="3965339130942650562">Zeitlimit bis zur Abmeldung eines inaktiven Nutzers</translation> <translation id="3973371701361892765">Ablage nie automatisch ausblenden</translation> <translation id="3984028218719007910">Legt fest, ob lokale Kontodaten nach der Abmeldung in <ph name="PRODUCT_OS_NAME" /> gespeichert werden. Bei Einstellung auf "true" werden Konten nicht dauerhaft in <ph name="PRODUCT_OS_NAME" /> gespeichert und alle Daten der Nutzersitzung werden nach der Abmeldung verworfen. Ist die Richtlinie auf "false" gesetzt oder nicht konfiguriert, können (verschlüsselte) lokale Nutzerdaten auf dem Gerät verbleiben.</translation> +<translation id="398475542699441679">Mit dieser Richtlinie wird festgelegt, ob die Unterstützung für ältere Browser aktiviert wird. + + Wenn die Richtlinie nicht konfiguriert oder auf "false" gesetzt ist, versucht Chrome nicht, bestimmte URLs in einem alternativen Browser zu starten. + + Wenn diese Richtlinie auf "true" gesetzt ist, versucht Chrome, einige URLs in einem alternativen Browser, wie z. B. Internet Explorer, zu starten. Diese Funktion wird mithilfe der Richtlinien in der Gruppe <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> konfiguriert. + + Sie ist ein Ersatz für die Erweiterung <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. Konfigurationen von der Erweiterung werden nicht für diese Funktion übernommen. Es wird jedoch dringend empfohlen, stattdessen die Chrome-Richtlinien zu verwenden. Dadurch wird eine bessere Kompatibilität in der Zukunft gewährleistet.</translation> <translation id="3997519162482760140">URLs, denen auf SAML-Log-in-Seiten Zugriff auf Videoaufnahmegeräte gestattet wird</translation> <translation id="4001275826058808087">IT-Administratoren von Unternehmensgeräten können hiermit festlegen, ob Nutzer Angebote über die Chrome OS-Registrierung einlösen können. @@ -1485,6 +1498,7 @@ Beispielmuster finden Sie unter https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">URL-Liste öffnen</translation> +<translation id="4674871290487541952">Unsichere Algorithmen in Integritätsprüfungen bei Erweiterungsupdates und -installationen erlauben</translation> <translation id="4680936297850947973">In M68 nicht mehr verfügbar. Verwenden Sie stattdessen "DefaultPopupsSetting". Eine vollständige Erläuterung finden Sie unter https://www.chromestatus.com/features/5675755719622656. @@ -2471,6 +2485,12 @@ Ist diese Richtlinie auf "false" gesetzt, wird der Hintergrundmodus deaktiviert und der Prozess kann nicht vom Nutzer über die Browsereinstellungen gesteuert werden. Ist diese Richtlinie nicht konfiguriert, wird der Hintergrundmodus anfänglich deaktiviert und der Prozess kann vom Nutzer über die Browsereinstellungen gesteuert werden.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> bietet eine sichere Aktualisierung und Installation von Erweiterungen. Der Inhalt einiger Erweiterungen wird jedoch außerhalb des Chrome Web Store gehostet und kann nur durch unsichere Anmelde- oder Hash-Algorithmen wie SHA1 geschützt werden. Wenn diese Richtlinie deaktiviert wird, wird eine Neuinstallation und Aktualisierung solcher Erweiterungen von Chrome nicht erlaubt (bis die Entwickler der Erweiterung diese mit stärkeren Algorithmen neu erstellen). Wenn diese Richtlinie aktiviert ist, ist die Installation und Aktualisierung solcher Erweiterungen zulässig. + + Ist diese Richtlinie nicht konfiguriert, wird sie standardmäßig aktiviert. + Ist diese Richtlinie ab <ph name="PRODUCT_NAME" /> 75 nicht konfiguriert, wird sie standardmäßig deaktiviert. + + Ab <ph name="PRODUCT_NAME" /> 77 wird diese Richtlinie ignoriert und als deaktiviert eingestuft.</translation> <translation id="7126716959063786004">Beenden von Prozessen im Task-Manager erlauben</translation> <translation id="7127892035367404455">Rollback auf die Zielversion</translation> <translation id="7128918109610518786">Listet die App-IDs auf, die unter <ph name="PRODUCT_OS_NAME" /> in der Übersichtsleiste als in der Übersicht angezeigte Apps erscheinen.
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb index a2f157e..037758a 100644 --- a/components/policy/resources/policy_templates_es-419.xtb +++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -776,6 +776,11 @@ Si se inhabilita esta configuración y el firewall filtra las conexiones UDP de salida, esta computadora solo permitirá las conexiones de computadoras cliente que se encuentren en la red local. Si esta política no se establece, la configuración estará habilitada.</translation> +<translation id="2813281962735757923">Esta política controla los períodos durante los cuales el dispositivo <ph name="PRODUCT_OS_NAME" /> no puede comprobar automáticamente si hay actualizaciones disponibles. + Cuando se configura esta política con una lista no vacía de períodos: + Los dispositivos no podrán comprobar automáticamente si hay actualizaciones disponibles durante los períodos especificados. Debido a posibles problemas de seguridad, esta política no afectará a los dispositivos que necesiten una reversión o tengan versiones anteriores a la mínima de <ph name="PRODUCT_OS_NAME" />. Además, esta política no bloqueará comprobaciones de actualizaciones que soliciten los usuarios o administradores. + Cuando no se configura esta política o no contiene períodos: + Esta política no bloqueará ninguna comprobación de actualizaciones, pero otras políticas sí pueden bloquearlas. Esta función solo está disponible en dispositivos Chrome configurados como kioscos de inicio automático. Esta política no restringirá otros dispositivos.</translation> <translation id="2823870601012066791">Ubicación del registro de Windows para los clientes de <ph name="PRODUCT_OS_NAME" />:</translation> <translation id="2824715612115726353">Activar el modo de incógnito</translation> <translation id="2838830882081735096">No permitir la migración de datos y ARC</translation> @@ -1066,6 +1071,7 @@ <translation id="3547954654003013442">Configuración de proxy</translation> <translation id="355118380775352753">Sitios web que se abren en un navegador alternativo</translation> <translation id="3577251398714997599">Configuración de anuncios para sitios con anuncios intrusivos</translation> +<translation id="3591527072193107424">Habilitar la función "Compatibilidad con navegadores heredados"</translation> <translation id="3591584750136265240">Configurar el comportamiento de autenticación en el acceso</translation> <translation id="3624171042292187668"> Si usas la política IsolateOrigins con una lista de sitios que deseas aislar, puedes aprovechar ambas características, el aislamiento y el impacto limitado de los usuarios. La configuración SitePerProcess aísla todos los sitios. @@ -1253,6 +1259,13 @@ <translation id="3965339130942650562">Está ejecutado el tiempo de espera para salir del navegador cuando el usuario se encuentre inactivo</translation> <translation id="3973371701361892765">Nunca ocultar automáticamente los archivos</translation> <translation id="3984028218719007910">Determina si <ph name="PRODUCT_OS_NAME" /> mantiene los datos de cuenta locales tras cerrar la sesión. Si el valor se establece en "true", <ph name="PRODUCT_OS_NAME" /> no conservará ninguna cuenta de forma permanente y todos los datos de la sesión del usuario se descartarán al cerrar la sesión. Si esta política no se configura o se establece en "false", el dispositivo puede guardar datos de usuario locales (encriptados).</translation> +<translation id="398475542699441679">Esta política controla si se habilita la Compatibilidad con navegadores heredados. + + Si no se configura esta política o se configura como falsa, Chrome no intentará iniciar las URL designadas en un navegador alternativo. + + Si se configura como verdadera, Chrome intentará iniciar algunas URL en un navegador alternativo (como Internet Explorer). Esta función está configurada conforme a las políticas del grupo <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> + + y reemplaza la extensión <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. Adoptará la configuración de la extensión, pero te recomendamos encarecidamente que en su lugar uses las políticas de Chrome. De esta manera, podremos garantizar una mejor compatibilidad en el futuro.</translation> <translation id="3997519162482760140">URL a las que se les concede acceso a los dispositivos de captura de video en las páginas de acceso de SAML</translation> <translation id="4001275826058808087">Los administradores TI de dispositivos empresariales pueden usar esta marca para controlar si permiten a los usuarios canjear ofertas a través del registro del Sistema operativo de Chrome. @@ -1494,6 +1507,7 @@ Para ver ejemplos de patrones, visita https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Abrir una lista de direcciones URL</translation> +<translation id="4674871290487541952">Permitir los algoritmos no seguros en las verificaciones de integridad de las instalaciones y actualizaciones de extensiones</translation> <translation id="4680936297850947973">Dejó de estar disponible en M68. En su lugar, usa DefaultPopupsSetting. Para obtener una explicación completa, consulta https://www.chromestatus.com/features/5675755719622656. @@ -2488,6 +2502,12 @@ Si esta política se establece en False, se inhabilita el modo en segundo plano, y el usuario no puede controlarlo en la configuración del navegador. Si esta política no se establece, el modo en segundo plano se inhabilita inicialmente, y el usuario puede controlarlo en la configuración del navegador.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> garantiza que la instalación y actualización de extensiones sean seguras. Sin embargo, es posible que el contenido de algunas extensiones alojadas fuera de Chrome Web Store solo cuente con la protección de algoritmos de autenticación (hash) y acceso no seguros, como SHA1. Si se inhabilita esta política, Chrome no permitirá la instalación ni la actualización de esas extensiones (hasta que los desarrolladores vuelvan a diseñar la extensión con algoritmos más seguros). Si se habilita, Chrome permitirá la instalación y actualización de las extensiones. + + Si no se establece, se considerará habilitada. + A partir de <ph name="PRODUCT_NAME" /> 75, la configuración predeterminada se comportará como si estuviera inhabilitada. + + A partir de <ph name="PRODUCT_NAME" /> 77, si ignorará esta política y se tratará como inhabilitada.</translation> <translation id="7126716959063786004">Permitir finalizar procesos en el Administrador de tareas</translation> <translation id="7127892035367404455">Reversión a la versión objetivo</translation> <translation id="7128918109610518786">Muestra la lista de identificadores de las aplicaciones que <ph name="PRODUCT_OS_NAME" /> muestra como aplicaciones fijas en la barra del menú de aplicaciones.
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb index dcc28f6..b8498475 100644 --- a/components/policy/resources/policy_templates_es.xtb +++ b/components/policy/resources/policy_templates_es.xtb
@@ -803,6 +803,11 @@ Si se inhabilita esta opción y el cortafuegos filtra las conexiones UDP salientes, este ordenador solo permitirá conexiones de ordenadores cliente que se encuentren en la red local. Si no se establece esta política, se habilitará la opción.</translation> +<translation id="2813281962735757923">Esta política controla los intervalos de tiempo durante los cuales el dispositivo <ph name="PRODUCT_OS_NAME" /> no tiene permiso para buscar actualizaciones automáticamente. + Si a esta política se le asigna una lista de intervalos de tiempo que no esté vacía: + Los dispositivos no podrán buscar actualizaciones automáticamente durante los intervalos especificados. Por motivos de seguridad, los dispositivos que deban restaurarse o cuya versión del sistema operativo sea anterior a <ph name="PRODUCT_OS_NAME" /> no se verán afectados por esta política. Esta política no bloqueará las comprobaciones de actualizaciones solicitadas por los usuarios o administradores. + Si no se asigna ningún valor a esta política o no contiene ningún intervalo de tiempo: + La política no bloqueará ninguna comprobación de actualizaciones automática, pero otras políticas podrían hacerlo. Esta función solo está habilitada en los dispositivos Chrome configurados como kioscos de inicio automático. Esta política no afectará a otros dispositivos.</translation> <translation id="2823870601012066791">Ubicación del registro de Windows para clientes de <ph name="PRODUCT_OS_NAME" />:</translation> <translation id="2824715612115726353">Habilitar modo de incógnito</translation> <translation id="2838830882081735096">No permitir la migración de datos ni ARC</translation> @@ -1100,6 +1105,7 @@ <translation id="3547954654003013442">Configuración de proxy</translation> <translation id="355118380775352753">Sitios web que se abren en el navegador alternativo</translation> <translation id="3577251398714997599">Configuración de anuncios de sitios web con anuncios invasivos</translation> +<translation id="3591527072193107424">Habilita la función de compatibilidad con navegadores antiguos.</translation> <translation id="3591584750136265240">Configurar el comportamiento de la autenticación de inicio de sesión</translation> <translation id="3624171042292187668"> Para conseguir aislamiento y que el impacto en los usuarios sea limitado, utiliza la política IsolateOrigins con una lista de los sitios web que quieras aislar. La opción SitePerProcess aísla todos los sitios web. @@ -1287,6 +1293,13 @@ <translation id="3965339130942650562">Tiempo de espera para cerrar sesión cuando el usuario se encuentre inactivo</translation> <translation id="3973371701361892765">No ocultar automáticamente los archivos</translation> <translation id="3984028218719007910">Permite determinar si <ph name="PRODUCT_OS_NAME" /> mantiene los datos de cuenta locales tras cerrar la sesión. Si el valor se establece en "true", <ph name="PRODUCT_OS_NAME" /> no conservará ninguna cuenta de forma permanente y todos los datos de la sesión del usuario se descartarán al cerrar la sesión. Si esta política no se configura o el valor correspondiente se establece en "false", el dispositivo puede guardar datos de usuario locales (encriptados).</translation> +<translation id="398475542699441679">Esta política determina si es necesario habilitar la compatibilidad con navegadores antiguos. + + Si esta política no se define o se le asigna el valor "False", Chrome no intentará acceder a las URL designadas en otro navegador. + + Si a la política se le asigna el valor "True", Chrome intentará acceder a algunas URL en otro navegador (como Internet Explorer). Esta función se configura a través de las políticas del grupo de <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + Esta función sustituye a la extensión de <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. Los ajustes de configuración de la extensión se aplicarán en esta función, pero se recomienda usar la política de Chrome. De esta forma, se asegurará una mayor compatibilidad en el futuro.</translation> <translation id="3997519162482760140">URLs a las que los dispositivos de captura de vídeo podrán acceder en las páginas de inicio de sesión con SAML</translation> <translation id="4001275826058808087">Los administradores de TI para dispositivos de empresa pueden utilizar esta opción para controlar si permiten que los usuarios canjeen ofertas a través del servicio de registro de Chrome OS. @@ -1540,6 +1553,7 @@ Puedes consultar ejemplos de patrones en la página https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Abrir una lista de URLs</translation> +<translation id="4674871290487541952">Permite los algoritmos no seguros en las comprobaciones de integridad de las actualizaciones e instalaciones de extensiones</translation> <translation id="4680936297850947973">Obsoleta en M68. Usa DefaultPopupsSetting en su lugar. Consulta una explicación completa en la página https://www.chromestatus.com/features/5675755719622656. @@ -2584,6 +2598,12 @@ Si se asigna el valor false, se inhabilitará el modo de segundo plano y el usuario no podrá controlarlo desde la configuración del navegador. Si no se configura esta política, el modo de segundo plano estará inhabilitado de forma inicial y el usuario podrá controlarlo desde la configuración del navegador.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> se ocupa de la instalación y las actualizaciones de seguridad de las extensiones. Sin embargo, el contenido de algunas extensiones alojadas fuera de Chrome Web Store solo lo pueden proteger algoritmos de hash o de firma no seguros, como SHA1. Si esta política no está habilitada, Chrome no permitirá la instalación ni las actualizaciones de esas extensiones hasta que sus desarrolladores modifiquen su diseño e incluyan algoritmos más seguros. Si esta política está habilitada, se permitirá la instalación y las actualizaciones de esas extensiones. + + Si esta política no está configurada, el comportamiento será como si estuviera habilitada. + A partir de la versión 75 de <ph name="PRODUCT_NAME" />, si la política no está configurada, el comportamiento será como si no estuviera habilitada. + + A partir de la versión 77 de <ph name="PRODUCT_NAME" />, esta política se ignorará y se tratará como si estuviera inhabilitada.</translation> <translation id="7126716959063786004">Habilitar la finalización de procesos en el administrador de tareas</translation> <translation id="7127892035367404455">Vuelve a instalar la versión de destino</translation> <translation id="7128918109610518786">Presenta una relación de los identificadores de aplicaciones que muestra <ph name="PRODUCT_OS_NAME" /> como aplicaciones fijadas en la barra de aplicaciones.
diff --git a/components/policy/resources/policy_templates_et.xtb b/components/policy/resources/policy_templates_et.xtb index 278a98f..90dc2eec 100644 --- a/components/policy/resources/policy_templates_et.xtb +++ b/components/policy/resources/policy_templates_et.xtb
@@ -810,6 +810,11 @@ Kui seade on keelatud ja tulemüür filtreerib väljuvad UDP-ühendused, siis lubab seade klientseadmetest tulevaid ühendusi vaid kohalikus võrgus. Kui jätate selle reegli määramata, siis seade lubatakse.</translation> +<translation id="2813281962735757923">See reegel juhib perioode, mille jooksul ei tohi operatsioonisüsteemiga <ph name="PRODUCT_OS_NAME" /> seade automaatselt värskendusi kontrollida. + Kui selle reegli väärtuseks on määratud mis tahes ajavahemikud, toimub järgmine. + Seadmed ei saa nendel konkreetsetel ajavahemikel automaatselt värskendusi kontrollida. See reegel ei mõjuta võimalike turvaohtude tõttu seadmeid, mis tuleb viia vanemale versioonile või mis kasutavad vanemat kui minimaalset nõutavat versiooni <ph name="PRODUCT_OS_NAME" />. Peale selle ei blokeeri see reegel kasutajate või administraatorite taotletud värskenduste kontrolle. + Kui see reegel on määramata või ei sisalda ajavahemikke, toimub järgmine. + See reegel ei blokeeri automaatseid värskenduste kontrolle, kuid muud reeglid võivad seda teha. See funktsioon on lubatud ainult Chrome’i seadetes, mis on seadistatud kui automaatselt käivituvad kioskid. Teisi seadmeid need eeskirjad ei piira.</translation> <translation id="2823870601012066791">Windowsi registri asukoht operatsioonisüsteemiga <ph name="PRODUCT_OS_NAME" /> klientide puhul:</translation> <translation id="2824715612115726353">Luba inkognitorežiim</translation> <translation id="2838830882081735096">Keela andmete üleviimine ja ARC</translation> @@ -1103,6 +1108,7 @@ <translation id="3547954654003013442">Puhverserveri seaded</translation> <translation id="355118380775352753">Alternatiivses brauseris avatavad veebisaidid</translation> <translation id="3577251398714997599">Sekkuvate reklaamidega saitide reklaamiseaded</translation> +<translation id="3591527072193107424">Pärandbrauseri toe funktsiooni lubamine.</translation> <translation id="3591584750136265240">Sisselogimise autentimise käitumise seadistamine</translation> <translation id="3624171042292187668"> Soovitame teil vaadata reegli IsolateOrigins seadet, et kasutada nii isoleerimist kui ka piirata mõju kasutajate jaoks, kasutades reeglit IsolateOrigins saitide puhul, mille soovite isoleerida. Seade SitePerProcess isoleerib kõik saidid. @@ -1291,6 +1297,13 @@ <translation id="3965339130942650562">Ajalõpp kuni jõudeolekus kasutaja väljalogimiseni</translation> <translation id="3973371701361892765">Ära peida hoidlat kunagi automaatselt</translation> <translation id="3984028218719007910">Määrab, kas <ph name="PRODUCT_OS_NAME" /> säilitab kohaliku konto andmed pärast väljalogimist. Selle reegli lubamisel ei säilita <ph name="PRODUCT_OS_NAME" /> kontode andmeid ja kasutaja seansi kõik andmed eemaldatakse pärast väljalogimist. Kui keelate selle reegli või jätate määramata, siis võib seade säilitada kohaliku kasutaja andmeid (krüptitult).</translation> +<translation id="398475542699441679">See reegel kontrollib, kas lubada pärandbrauserite tugi. + + Kui see reegel on seadistamata või keelatud, ei ürita Chrome alternatiivses brauseris määratud URLe avada. + + Kui see reegel on lubatud, üritab Chrome osasid URLe alternatiivses brauseris avada (näiteks Internet Expolrer). See funktsioon on seadistatud, kasutades reegleid grupis <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + See funktsioon on laienduse <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> asendus. Laienduse konfiguratsioonid lisatakse sellesse funktsiooni, aga tungivalt soovituslik on siiski Chrome’i reegleid kasutada. See tagab parema ühilduvuse tulevikus.</translation> <translation id="3997519162482760140">URL-id, millele antakse SAML-i sisselogimislehtedel juurdepääs videosalvestusseadmetele</translation> <translation id="4001275826058808087">Ettevõtte seadmete IT-administraatorid saavad selle märgistuse abil juhtida, kas lubada kasutajatel pakkumisi lunastada Chrome OS-i registreerimise abil. @@ -1541,6 +1554,7 @@ Vaadake näidismustreid aadressilt http://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Ava URL-ide loend</translation> +<translation id="4674871290487541952">Ebaturvaliste algoritmide lubamine laienduse värskendamise ja installimise terviklikkuse kontrollis</translation> <translation id="4680936297850947973">Versioonis M68 on tugi katkestatud. Kasutage selle asemel reeglit DefaultPopupsSetting. Vaadake täielikku selgitust aadressilt https://www.chromestatus.com/features/5675755719622656. @@ -2587,6 +2601,12 @@ Kui reegel on seatud väärtusele Väär, on taustarežiim keelatud ja kasutaja ei saa seda brauseri seadetes muuta. Kui jätate reegli määramata, on taustarežiim vaikimisi keelatud ja kasutaja saab seda brauseri seadetes muuta.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> tagab turvalise värskendamise ja laienduste installimise. Kuid osade laienduste, mida ei hosti Chrome'i veebipood, sisu võib olla kaistud ainult ebaturvalise sisselogimise või räsialgoritmidega (näiteks SHA1). Kui see reegel on keelatud, ei luba Chrome selliste laienduste installimist ega värskendamist (kuni laienduse arendajad loovad laienduse uuesti tugevamate algoritmidega). Kui see reegel on lubatud, on selliste laienduste installimine ja värskendamine lubatud. + + Kui see on seadistamata, käsitletakse seda vaikimisi kui lubatud. + Alates tootest <ph name="PRODUCT_NAME" /> 75: kui see on seadistamata, käsitletakse seda vaikimisi kui keelatud. + + Alates tootest <ph name="PRODUCT_NAME" /> 77: seda reeglit ignoreeritakse ja käsitletakse nagu see oleks keelatud.</translation> <translation id="7126716959063786004">Lõpetamisprotsesside lubamine tegumihalduris</translation> <translation id="7127892035367404455">Tagasiminek sihtversioonile</translation> <translation id="7128918109610518786">Loetleb rakenduste identifikaatorid, mida <ph name="PRODUCT_OS_NAME" /> näitab käivitusribal kinnitatud rakendustena.
diff --git a/components/policy/resources/policy_templates_fa.xtb b/components/policy/resources/policy_templates_fa.xtb index 0e19203..2a4da90 100644 --- a/components/policy/resources/policy_templates_fa.xtb +++ b/components/policy/resources/policy_templates_fa.xtb
@@ -778,6 +778,11 @@ اگر این گزینه غیرفعال باشد و اتصالهای UDP خروجی توسط فایروال فیلتر شده باشد، این دستگاه فقط به دستگاههای سرویسگیرنده در شبکه محلی اجازه اتصال میدهد. اگر این خطمشی تنظیم نشده باقی بماند، تنظیم فعال خواهد شد.</translation> +<translation id="2813281962735757923">این خطمشی، بازههای زمانی را کنترل میکند که در طول آنها دستگاه <ph name="PRODUCT_OS_NAME" /> مجاز نیست بهطور خودکار بهروزرسانیها را بررسی کند. + وقتی این خطمشی روی یک فهرست غیرخالی ازبازههای زمانی تنظیم شده باشد: + دستگاهها نمیتوانند درطول بازههای زمانی مشخصشده، بهروزرسانیها را بهطور خودکار بررسی کنند. دستگاههایی که به عقبگرد نیاز دارند یا نسخه پایینتری از حداقل نسخه <ph name="PRODUCT_OS_NAME" /> دارند به دلیل مشکلات امنیتی بالقوه، تحت تأثیر این خطمشی قرار نخواهند گرفت. علاوهبراین، این خطمشی بررسی بهروزرسانیها را که توسط کاربران یا سرپرستها درخواست میشود مسدود نخواهد کرد. + وقتی این خطمشی تنظیم نشود یا حاوی هیچ بازه زمانی نباشد: + هیچ بررسی خودکار بهروزرسانیها توسط این خطمشی مسدود نخواهد شد، اما ممکن است توسط خطمشیهای دیگر مسدود شود. این ویژگی فقط در دستگاههای Chrome پیکربندیشده بهصورت کیوسکهای راهاندازی خودکار فعال است. سایر دستگاهها با این خطمشی محدود نخواهند شد.</translation> <translation id="2823870601012066791">مکان رجیستری Windows برای کارخواههای <ph name="PRODUCT_OS_NAME" />:</translation> <translation id="2824715612115726353">فعال کردن حالت ناشناس</translation> <translation id="2838830882081735096">اجازه ندادن به انتقال داده و ARC</translation> @@ -1063,6 +1068,7 @@ <translation id="3547954654003013442">تنظیمات پروکسی</translation> <translation id="355118380775352753">وبسایتهایی برای باز شدن در مرورگر جایگزین</translation> <translation id="3577251398714997599">تنظیم آگهی برای سایتهای حاوی آگهیهای مزاحم</translation> +<translation id="3591527072193107424">ویژگی «پشتیبانی از مرورگر قدیمی» فعال شود.</translation> <translation id="3591584750136265240">پیکربندی رفتار احراز هویت ورود به سیستم</translation> <translation id="3624171042292187668"> بهتر است تنظیم خطمشی IsolateOrigins را هم بررسی کنید تا با استفاده از IsolateOrigins همراه با فهرست سایتهایی که میخواهید جدا کنید، بهترین نتیجه را برای هردو جنبه (جداشدگی و تأثیر محدود بر کاربران) دریافت کنید. این تنظیم SitePerProcess، همه سایتها را جدا میکند. @@ -1249,6 +1255,13 @@ <translation id="3965339130942650562">فاصله زمانی تا زمانی که خروج از سیستم کاربر غیرفعال اجرا شود</translation> <translation id="3973371701361892765">هرگز قفسه بصورت خودکار پنهان نشود</translation> <translation id="3984028218719007910">تعین میکند آیا <ph name="PRODUCT_OS_NAME" /> دادههای حساب محلی را بعد از خروج حفظ کند یا نه. در صورت تنظیم روی درست، هیچ حساب دائمی توسط <ph name="PRODUCT_OS_NAME" /> حفظ نمیشود و از همه دادههای جلسه کاربر بعد از خروج از سیستم صرفنظر میشود. اگر این خطمشی روی نادرست تنظیم شود یا پیکربندی نشود، ممکن است دستگاه دادههای کاربر محلی (رمزگذاریشده) را حفظ کند.</translation> +<translation id="398475542699441679">این خطمشی کنترل میکند که «پشتیبانی از مرورگر قدیمی» فعال شود یا نه. + + وقتی این خطمشی تنظیم نشده باشد یا روی نادرست تنظیم شده باشد، Chrome تلاش نمیکند نشانیهای وب مشخصشده را در مرورگر جایگزین راهاندازی کند. + + وقتی این خطمشی روی درست تنظیم شده باشد، Chrome تلاش میکند بعضی از نشانیهای وب را در مرورگر جایگزین (مانند Internet Explorer) راهاندازی کند. این ویژگی با استفاده از خطمشیهای موجود در گروه <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> پیکربندی شده است. + + این ویژگی جایگزینی برای افزونه <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> است. پیکربندی از افزونه به این ویژگی منتقل خواهد شد اما اکیداً پیشنهاد میشود از خطمشیهای Chrome بهجای آن استفاده شود. این کار سازگاری بهتر در آینده را تضمین میکند.</translation> <translation id="3997519162482760140">نشانیهای وب که اجازه دسترسی به دستگاههای ضبط ویدئو را در صفحههای ورود به سیستم SAML خواهند داشت</translation> <translation id="4001275826058808087">سرپرستان فناوری اطلاعات برای دستگاههای شرکتی میتوانند از این پرچم استفاده کنند تا کنترل کنند آیا به کاربران اجازه دهند از پیشنهادات از طریق ثبت Chrome OS استفاده کنند. @@ -1489,6 +1502,7 @@ برای دیدن الگوهای نمونه به https://www.chromium.org/developers/how-tos/chrome-frame-getting-started بروید.</translation> <translation id="467449052039111439">باز کردن فهرستی از نشانیهای وب</translation> +<translation id="4674871290487541952">به الگوریتمهای غیرایمن در بررسیهای یکپارچگی مربوط به بهروزرسانیها و نصبهای افزونه اجازه داده شود</translation> <translation id="4680936297850947973">در M68 منسوخ شده است. بهجای آن از DefaultPopupsSetting استفاده کنید. برای توضیح کامل، @@ -2477,6 +2491,12 @@ اگر این خطمشی روی نادرست تنظیم شود، حالت پسزمینه غیرفعال میشود و نمیتواند توسط کاربر در تنظیمات مرورگر کنترل شود. اگر این خطمشی تنظیم نشود، حالت پسزمینه از ابتدا غیرفعال است و کاربر میتواند آن را در تنظیمات مرورگر کنترل کند.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> برای ایمنسازی بهروزرسانی و نصب افزونهها ارائه میشود بااینوجود، ممکن است محتوای بعضی از افزونههای میزبانیشده خارج از «نتبازار Chrome»، فقط با الگوریتمهای ورود به سیستم یا درهمسازی غیرایمن مانند SHA1 محافظت شوند. وقتی این خطمشی غیرفعال است، Chrome نصب جدید و بهروزرسانیهای این افزونهها را مجاز نمیکند (تا وقتیکه برنامهنویسهای افزونه، افزونه را با الگوریتمهای قویتری بازسازی کنند). وقتی این خطمشی فعال است، نصب و بهروزرسانیهای این افزونهها مجاز خواهند بود. + + اگر این مورد تنظیم نشده باشد، بهطور پیشفرض روی فعال خواهد بود. + در <ph name="PRODUCT_NAME" /> 75، اگر این مورد تنظیم نشده باشد، بهطور پیشفرض روی غیرفعال خواهد بود. + + در <ph name="PRODUCT_NAME" /> 77، این خطمشی نادیده گرفته خواهد شد و بهعنوان غیرفعال درنظر گرفته خواهد شد.</translation> <translation id="7126716959063786004">فعال کردن پایان دادن به پردازشها در «مدیر فعالیتها»</translation> <translation id="7127892035367404455">عقبگرد به نسخه هدف</translation> <translation id="7128918109610518786">شناسههای برنامه <ph name="PRODUCT_OS_NAME" /> را فهرست میکند که بهصورت برنامههای پین شده در نوار راه انداز نشان داده میشود
diff --git a/components/policy/resources/policy_templates_fi.xtb b/components/policy/resources/policy_templates_fi.xtb index b8812069..5f0fe14 100644 --- a/components/policy/resources/policy_templates_fi.xtb +++ b/components/policy/resources/policy_templates_fi.xtb
@@ -783,6 +783,11 @@ Jos asetus ei ole käytössä ja lähtevät UDP-yhteydet menevät palomuurin kautta, tämä kone hyväksyy vain paikallisessa verkossa olevien asiakaskoneiden yhteydet. Jos käytäntöä ei määritetä, asetus on käytössä.</translation> +<translation id="2813281962735757923">Tämä käytäntö määrittää aikavälit, joiden aikana <ph name="PRODUCT_OS_NAME" /> ‑laite ei saa tarkastaa päivityksiä automaattisesti. + Kun tämän käytännön arvo on aikavälien luettelo, joka ei ole tyhjä: + Laitteet eivät voi tarkastaa päivityksiä automaattisesti määritettyinä aikoina. Jos laite on palautettava edelliseen versioon tai siinä on<ph name="PRODUCT_OS_NAME" /> ‑vähimmäisversiota vanhempi versio, tällä käytännöllä ei tietoturvasyistä ole vaikutusta. Tämä käytäntö ei myöskään estä käyttäjän tai järjestelmänvalvojan pyytämää päivitysten tarkastusta. + Jos tällä käytännöllä ei ole arvoa tai arvossa ei ole aikavälejä: + Tämä käytäntö ei estä automaattisia päivitysten tarkastuksia, mutta muut käytännöt voivat estää ne. Tämä ominaisuus on käytössä vain Chrome-laitteissa, jotka on määritetty automaattisesti käynnistyviksi kioskeiksi. Tämä käytäntö ei rajoita muita laitteita.</translation> <translation id="2823870601012066791">Käyttöjärjestelmässä <ph name="PRODUCT_OS_NAME" /> toimivien asiakkaiden sijainti Windows-rekisterissä:</translation> <translation id="2824715612115726353">Ota incognito-tila käyttöön</translation> <translation id="2838830882081735096">Estä tietojen siirtäminen ja ARC</translation> @@ -1074,6 +1079,7 @@ <translation id="3547954654003013442">Välityspalvelimen asetukset</translation> <translation id="355118380775352753">Sivustot, jotka avataan vaihtoehtoisessa selaimessa</translation> <translation id="3577251398714997599">Häiritseviä mainoksia sisältävien sivustojen mainosasetukset</translation> +<translation id="3591527072193107424">Ota Vanhojen selaimien tuki ‑ominaisuus käyttöön.</translation> <translation id="3591584750136265240">Määritä kirjautumistodennuksen käytös.</translation> <translation id="3624171042292187668"> Suosittelemme tutustumaan IsolateOrigins-käytännön asetukseen saadaksesi molempien parhaat puolet, eristämisen ja rajallisen vaikutuksen käyttäjille, käyttämällä IsolateOrigins-käytäntöä eristettävien sivustojen luettelon kanssa. Tämä asetus, SitePerProcess, eristää kaikki sivustot. @@ -1261,6 +1267,13 @@ <translation id="3965339130942650562">Käyttämättömän käyttökerran uloskirjausaika</translation> <translation id="3973371701361892765">Älä koskaan piilota hyllyä automaattisesti</translation> <translation id="3984028218719007910">Määrittää, säilyttääkö <ph name="PRODUCT_OS_NAME" /> paikalliset käyttäjätilitiedot uloskirjautumisen jälkeen. Jos asetus on tosi, <ph name="PRODUCT_OS_NAME" /> ei säilytä tilitietoja pysyvästi ja käyttökerran tiedot poistetaan uloskirjautumisen jälkeen. Jos käytännön asetus on epätosi tai sitä ei määritetä, paikalliset käyttäjätiedot voidaan tallentaa laitteelle salattuina.</translation> +<translation id="398475542699441679">Tämä käytäntö määrittää, otetaanko Vanhojen selaimien tuki käyttöön vai ei. + + Jos tätä käytäntöä ei ole määritetty tai sen arvoksi on asetettu epätosi, Chrome ei yritä käynnistää määritettyjä URL-osoitteita eri selaimessa. + + Jos tämän käytännön arvoksi on asetettu tosi, Chrome yrittää käynnistää jotkin URL-osoitteet eri selaimessa (esim. Internet Explorerissa). Tämä ominaisuus on määritetty ryhmän <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> käytäntöjen mukaan. + + Tämä ominaisuus korvaa <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> ‑laajennuksen. Laajennuksen määritykset siirtyvät tähän ominaisuuteen, mutta on erittäin suositeltavaa käyttää niiden sijaan Chromen käytäntöjä. Näin varmistat paremman yhteensopivuuden tulevaisuudessa.</translation> <translation id="3997519162482760140">URL-osoitteet, joille sallitaan videon kaappauslaitteiden käyttö SAML-kirjautumissivuilla</translation> <translation id="4001275826058808087">Yrityslaitteiden järjestelmänvalvojat voivat hallita tämän käytännön avulla, sallitaanko käyttäjien lunastaa tarjouksia Chrome-käyttöjärjestelmän rekisteröitymisen kautta. @@ -1503,6 +1516,7 @@ Esimerkkimalleja on osoitteessa http://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Avaa seuraavat sivut:</translation> +<translation id="4674871290487541952">Salli suojaamattomat algoritmit laajennuspäivitysten ja ‑asennusten aitoustarkistuksissa</translation> <translation id="4680936297850947973">Poistettu käytöstä M68:ssa. Ota sen sijaan käyttöön DefaultPopupsSetting. Saat lisätietoja osoitteesta https://www.chromestatus.com/features/5675755719622656. @@ -2496,6 +2510,12 @@ Jos tämän käytännön arvo on Epätosi, taustatila on poissa käytöstä, eikä käyttäjä voi muokata sitä selaimen asetuksissa. Jos tätä käytäntöä ei aseteta, taustatila on oletuksena pois käytöstä, mutta käyttäjä voi muokata sitä selaimen asetuksissa.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> on tarkoitettu laajennusten turvalliseen päivitykseen ja asentamiseen. Joidenkin Chrome Web Storen ulkopuolella isännöityjen laajennusten sisältöä saatetaan kuitenkin suojata vain suojaamattomalla allekirjoituksella tai tiivistysalgoritmilla, kuten SHA1:llä. Jos käytäntö ei ole käytössä, Chrome ei salli tällaisten laajennusten tuoreita asennuksia ja päivityksiä (kunnes laajennuksen kehittäjät rakentavat laajennuksen uudelleen vahvemmilla algoritmeilla). Jos käytäntö on käytössä, tällaisten laajennusten asennus ja päivitys sallitaan. + + Jos tätä ei ole määritetty, käytäntö on oletuksena käytössä. + Versiosta <ph name="PRODUCT_NAME" /> 75 alkaen käytäntö ei ole oletuksena käytössä, jos sitä ei ole määritetty. + + Versiosta <ph name="PRODUCT_NAME" /> 77 alkaen käytäntö jätetään huomiotta ja sitä kohdellaan käytöstä poistettuna.</translation> <translation id="7126716959063786004">Ota käyttöön prosessien lopettaminen tehtävänhallinnasta</translation> <translation id="7127892035367404455">Palautus kohdeversioon</translation> <translation id="7128918109610518786">Näyttää sovellukset, jotka <ph name="PRODUCT_OS_NAME" /> näyttää kiinnitettyinä käynnistyspalkissa.
diff --git a/components/policy/resources/policy_templates_fil.xtb b/components/policy/resources/policy_templates_fil.xtb index d22acae..4b4b296 100644 --- a/components/policy/resources/policy_templates_fil.xtb +++ b/components/policy/resources/policy_templates_fil.xtb
@@ -804,6 +804,11 @@ Kung naka-disable ang setting na ito at pini-filter ng firewall ang mga papalabas na UDP na koneksyon, papayagan lang ng makinang ito ang mga koneksyon mula sa mga makina ng kliyente sa loob ng lokal na network. Kung iniwang hindi nakatakda ang patakarang ito, i-e-enable ang setting.</translation> +<translation id="2813281962735757923">Kinokontrol ng patakarang ito ang mga panahon kung kailan hindi pinapayagan ang <ph name="PRODUCT_OS_NAME" /> device na awtomatikong tumingin kung may mga update. + Kapag itinakda ang patakarang ito sa isang listahang may lamang mga agwat ng panahon: + Hindi awtomatikong matitingnan ng mga device kung may mga update sa mga tinukoy na agwat ng panahon. Ang mga device na nangangailangan ng rollback o mas luma sa minimum na bersyon ng <ph name="PRODUCT_OS_NAME" /> ay hindi maaapektuhan ng patakarang ito dahil sa mga potensyal na isyu sa seguridad. Gayundin, hindi iba-block ng patakarang ito ang mga pagtingin ng update na hinihiling ng mga user o administrator. + Kapag ang patakarang ito ay na-unset o hindi naglalaman ng mga agwat ng panahon: + Walang awtomatikong pagtingin ng update ang iba-block ng patakarang ito, ngunit maaaring i-block ng iba pang patakaran ang mga iyon. Naka-enable lang ang feature na ito sa mga Chrome device na naka-configure bilang mga auto-launch kiosk. Hindi paghihigpitan ng patakarang ito ang iba pang device.</translation> <translation id="2823870601012066791">Lokasyon ng registry ng Windows para sa mga <ph name="PRODUCT_OS_NAME" /> client:</translation> <translation id="2824715612115726353">Paganahin ang Incognito mode</translation> <translation id="2838830882081735096">Huwag payagan ang paglipat ng data at ARC</translation> @@ -1100,6 +1105,7 @@ <translation id="3547954654003013442">Mga setting ng proxy</translation> <translation id="355118380775352753">Mga website na bubuksan sa alternatibong browser</translation> <translation id="3577251398714997599">Setting ng mga ad para sa mga site na may mga nakakasagabal na ad</translation> +<translation id="3591527072193107424">I-enable ang feature na Suporta sa Legacy Browser.</translation> <translation id="3591584750136265240">I-configure ang gawi sa pagpapatotoo sa pag-log in</translation> <translation id="3624171042292187668"> Maaari mong tingnan ang setting ng patakarang IsolateOrigins para masulit ang pag-isolate at limitadong epekto para sa mga user, sa pamamagitan ng paggamit sa IsolateOrigins kasama ng listahan ng mga site na gusto mong i-isolate. Ina-isolate ng setting na SitePerProcess ang lahat ng site. @@ -1288,6 +1294,13 @@ <translation id="3965339130942650562">Mag-timeout hanggang maisagawa ang pag-log-out ng idle na user</translation> <translation id="3973371701361892765">Huwag kailanman awtomatikong itago ang shelf</translation> <translation id="3984028218719007910">Tinutukoy kung pinapanatili ng <ph name="PRODUCT_OS_NAME" /> ang lokal na data ng account pagkatapos ng pag-logout. Kung nakatakda sa true, walang mga umiiral nang account ang pananatilihin ng <ph name="PRODUCT_OS_NAME" /> at idi-discard ang lahat ng data mula sa session ng user pagkatapos ng pag-logout. Kung nakatakda sa false o hindi naka-configure ang patakarang ito, maaaring magpanatili ng (na-encrypt na) lokal na data ng user ang device.</translation> +<translation id="398475542699441679">Kinokontrol ng patakarang ito kung ie-enable ang Suporta sa Legacy Browser. + + Kung ang patakarang ito ay iiwanang hindi nakatakda, o nakatakda sa false, hindi susubukan ng Chrome na maglunsad ng mga itinalagang URL sa isang alternatibong browser. + + Kapag nakatakda sa true ang patakarang ito, susubukan ng Chrome na maglunsad ng ilang URL sa isang alternatibong browser (gaya ng Internet Explorer). Ang feature na ito ay kino-configure gamit ang mga patakaran sa grupong <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + Ang feature na ito ay pamalit sa extension na <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. Ipapasa sa feature na ito ang configuration mula sa extension, ngunit lubos na inirerekomendang ang mga patakaran ng Chrome na lang ang gamitin. Tinitiyak nitong magiging mas maayos ang compatibility sa hinaharap.</translation> <translation id="3997519162482760140">Mga URL na bibigyan ng access sa mga device na nagka-capture ng video sa mga page ng pag-login ng SAML</translation> <translation id="4001275826058808087">Magagamit ng mga IT admin para sa mga enterprise device ang flag na ito upang kontrolin kung papayagan ang mga user na kumuha ng mga alok sa pamamagitan ng Pagpaparehistro ng Chrome OS. @@ -1539,6 +1552,7 @@ Para sa mga halimbawang pattern, tingnan ang https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Magbukas ng listahan ng mga URL</translation> +<translation id="4674871290487541952">Payagan ang mga hindi secure na algorithm sa mga integrity check sa mga pag-update at pag-install ng extension</translation> <translation id="4680936297850947973">Hindi na ginagamit sa M68. Gamitin na lang ang DefaultPopupsSetting. Para sa kumpletong paliwanag, tingnan ang https://www.chromestatus.com/features/5675755719622656. @@ -2584,6 +2598,12 @@ Kung nakatakda sa to False ang patakarang ito, idi-disable ang background mode at hindi makokontrol ng user sa mga setting ng browser. Kung hindi itinakda ang patakarang ito, paunang idi-disable ang background mode at maaaring makontrol ng user sa mga setting ng browser.</translation> +<translation id="7123266440503901785">Binibigyang-daan ng <ph name="PRODUCT_NAME" /> ang secure na pag-update at pag-install ng mga extension. Gayunpaman, ang content ng ilang extension na naka-host sa labas ng Chrome Web Store ay maaari lang protektahan ng mga hindi secure na signing o hashing algorithm gaya ng SHA1. Kapag naka-disable ang patakarang ito, ang bagong pag-install at mga update sa ganoong mga extension ay hindi papayagan ng Chrome (hanggang sa muling i-bulid ng mga developer ng extension ang extension gamit ang mas mahuhusay na algorithm). Kapag naka-enable ang patakarang ito, papayagan ang pag-install at mga update para sa ganoong mga extension. + + Ito ay babalik sa default na pagkilos na naka-enable kapag hindi nakatakda. + Simula sa <ph name="PRODUCT_NAME" /> 75, ito ay babalik sa default na pagkilos na naka-disable kapag hindi nakatakda. + + Simula sa <ph name="PRODUCT_NAME" /> 77, babalewalain ang patakarang ito at ituturing ito bilang naka-disable.</translation> <translation id="7126716959063786004">I-enable ang pagtapos ng mga proseso sa Task Manager</translation> <translation id="7127892035367404455">Pag-roll back sa target na bersyon</translation> <translation id="7128918109610518786">Nililista ang mga tagatukoy ng application na ipinapakita ng <ph name="PRODUCT_OS_NAME" /> bilang mga na-pin na app sa bar ng launcher
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb index 56bccc7..dc133de 100644 --- a/components/policy/resources/policy_templates_fr.xtb +++ b/components/policy/resources/policy_templates_fr.xtb
@@ -815,6 +815,11 @@ Si ce paramètre est désactivé et si les connexions UDP sortantes sont filtrées par le pare-feu, ce poste autorise uniquement les connexions émanant des postes clients au sein du réseau local. Si cette règle n'est pas configurée, le paramètre est activé.</translation> +<translation id="2813281962735757923">Cette règle permet de définir les périodes durant lesquelles l'appareil <ph name="PRODUCT_OS_NAME" /> n'est pas autorisé à rechercher automatiquement des mises à jour. + Si des périodes sont définies lors de la configuration de cette règle : + Aucune recherche automatique de mises à jour n'est effectuée pendant ces périodes. Les appareils nécessitant un rollback ou équipés d'une version antérieure à <ph name="PRODUCT_OS_NAME" /> ne sont pas concernés par cette règle en raison de problèmes de sécurité potentiels. Sachez également que cette règle n'empêche pas l'utilisateur ou l'administrateur de procéder à une recherche de mises à jour. + Si cette règle n'est pas configurée ou si aucune période n'est définie : + La recherche automatique de mises à jour n'est pas bloquée par cette règle, mais peut l'être par d'autres. Cette fonctionnalité n'est activée que sur les appareils Chrome configurés pour se lancer automatiquement en mode Kiosque. Elle ne limitera pas les autres appareils.</translation> <translation id="2823870601012066791">Emplacement du registre Windows pour les clients <ph name="PRODUCT_OS_NAME" /> :</translation> <translation id="2824715612115726353">Activer le mode navigation privée</translation> <translation id="2838830882081735096">Interdire la migration de données et ARC</translation> @@ -1112,6 +1117,7 @@ <translation id="3547954654003013442">Paramètres de proxy</translation> <translation id="355118380775352753">Sites Web à ouvrir dans le navigateur secondaire</translation> <translation id="3577251398714997599">Paramètre des annonces pour les sites présentant des annonces intrusives</translation> +<translation id="3591527072193107424">Activer la fonctionnalité Legacy Browser Support.</translation> <translation id="3591584750136265240">Configurer le mode d'authentification lors de la connexion</translation> <translation id="3624171042292187668"> Nous vous conseillons d'examiner le paramètre de la règle IsolateOrigins pour obtenir le meilleur résultat, c'est-à-dire l'isolation avec un impact limité sur les utilisateurs, et d'utiliser IsolateOrigins avec une liste des sites que vous souhaitez isoler. Le paramètre SitePerProcess isole tous les sites. @@ -1300,6 +1306,13 @@ <translation id="3965339130942650562">Délai avant exécution de la déconnexion de l'utilisateur en cas d'inactivité</translation> <translation id="3973371701361892765">Ne jamais masquer automatiquement l'étagère</translation> <translation id="3984028218719007910">Détermine si <ph name="PRODUCT_OS_NAME" /> doit conserver les données locales des comptes après la déconnexion. Si cette règle est définie sur "true", aucun compte persistant n'est conservé par <ph name="PRODUCT_OS_NAME" />. Par ailleurs, toutes les données de la session utilisateur sont supprimées après la déconnexion. Si cette règle est définie sur "false" ou si elle n'est pas configurée, l'appareil peut conserver des données utilisateur locales (chiffrées).</translation> +<translation id="398475542699441679">Cette règle contrôle l'activation de Legacy Browser Support. + + Si elle n'est pas définie, ou si elle est définie sur "false", Chrome n'essaiera pas de lancer les URL indiquées dans un autre navigateur. + + Si elle est définie sur "true", Chrome essaiera de lancer certaines URL dans un autre navigateur (par exemple Internet Explorer). Cette fonctionnalité est configurée à l'aide des règles du groupe <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + Cette fonctionnalité remplace l'extension <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. La configuration définie dans l'extension sera appliquée à cette fonctionnalité, mais il est vivement conseillé de lui préférer les règles Chrome. Une meilleure compatibilité sera ainsi assurée à l'avenir.</translation> <translation id="3997519162482760140">URL autorisées à accéder aux appareils de capture vidéo sur les pages de connexion SAML</translation> <translation id="4001275826058808087">Les administrateurs informatiques des appareils d'entreprise peuvent utiliser cet indicateur pour autoriser ou non les utilisateurs à profiter de leurs offres via le service d'enregistrement de Chrome OS. @@ -1551,6 +1564,7 @@ Pour voir des exemples de formats, accédez à l'adresse https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Ouvrir une liste d'URL</translation> +<translation id="4674871290487541952">Autoriser les algorithmes non sécurisés dans les vérifications de l'intégrité des mises à jour et des installations d'extension</translation> <translation id="4680936297850947973">Règle abandonnée dans la version M68. Utilisez à la place la règle DefaultPopupsSetting. Pour obtenir une explication complète, consultez la page https://www.chromestatus.com/features/5675755719622656. @@ -2596,6 +2610,12 @@ Si cette règle est définie sur "False", le mode arrière-plan est désactivé et ne peut pas être contrôlé par l'utilisateur dans les paramètres du navigateur. Si cette règle n'est pas définie, le mode arrière-plan est désactivé initialement et peut être contrôlé par l'utilisateur dans les paramètres du navigateur.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> assure la sécurité de la mise à jour et de l'installation d'extensions. Cependant, le contenu de certaines extensions hébergées en dehors du Chrome Web Store peut n'être protégé que par une connexion non sécurisée ou des algorithmes de hachage tels que SHA1. Si cette règle est désactivée, Chrome n'autorisera pas la nouvelle installation ni la mise à jour de ces extensions (tant que les développeurs ne les dotent pas d'algorithmes plus sécurisés). Si cette règle est activée, l'installation et la mise à jour de ces extensions seront autorisées. + + Si elle n'est pas définie, la règle sera activée par défaut. + À partir de <ph name="PRODUCT_NAME" /> 75, la règle sera désactivée par défaut. + + À partir de <ph name="PRODUCT_NAME" /> 77, la règle sera ignorée et considérée comme désactivée.</translation> <translation id="7126716959063786004">Mettre fin aux processus dans le gestionnaire des tâches</translation> <translation id="7127892035367404455">Rétablir la version cible</translation> <translation id="7128918109610518786">Permet de répertorier les identifiants des applications épinglées que <ph name="PRODUCT_OS_NAME" /> affiche dans la barre du lanceur d'applications.
diff --git a/components/policy/resources/policy_templates_gu.xtb b/components/policy/resources/policy_templates_gu.xtb index 0f1d129..7c6418c 100644 --- a/components/policy/resources/policy_templates_gu.xtb +++ b/components/policy/resources/policy_templates_gu.xtb
@@ -881,6 +881,11 @@ જો આ સેટિંગ અક્ષમ હોય અને ફાયરવૉલ દ્વારા બહાર જતાં UDP કનેક્શન્સ ફિલ્ટર કરવામાં આવે, તો પછી આ મશીન ફક્ત સ્થાનિક નેટવર્કમાંના ક્લાયન્ટ મશીનોને જ મંજૂરી આપશે. જો આ નીતિને સેટ કર્યા વિના છોડેલી છે, તો સેટિંગ સક્ષમ થશે.</translation> +<translation id="2813281962735757923">આ નીતિ એ સમયગાળાનું નિયંત્રણ કરે છે, જે દરમિયાન <ph name="PRODUCT_OS_NAME" /> ડિવાઇસને અપડેટ માટે ઑટોમૅટિક રીતે ચેક કરવાની મંજૂરી નથી. + જ્યારે આ નીતિ સમયના અંતરાલની ખાલી ન હોય તેવી સૂચિ પર સેટ કરવામાં આવી હોય, ત્યારે: + નિશ્ચિત કરેલા સમય અંતરાલ દરમિયાન ડિવાઇસ ઑટોમૅટિક રીતે અપડેટ માટે ચેક નહીં કરી શકે. સુરક્ષાની સંભવિત સમસ્યાઓને કારણે, રોલબૅક જરૂરી હોય તેવાં અથવા <ph name="PRODUCT_OS_NAME" />ના ન્યૂનતમ વર્ઝન કરતાં નીચેનું વર્ઝન ધરાવતાં હોય તેવાં ડિવાઇસ પર આ નીતિની અસર પડશે નહીં. આ ઉપરાંત, આ નીતિ વપરાશકર્તાઓ અથવા વ્યવસ્થાપકો દ્વારા વિનંતી કરાયેલા અપડેટ ચેકને બ્લૉક કરશે નહીં. + જ્યારે આ નીતિ સેટ ન કરવામાં આવી હોય અથવા સમયના અંતરાલ ધરાવતી ન હોય, ત્યારે: + આ નીતિ દ્વારા ઑટોમૅટિક રીતે થતા કોઈપણ અપડેટ ચેક બ્લૉક કરવામાં આવશે નહીં, જોકે અન્ય નીતિ દ્વારા તેમને બ્લૉક કરવામાં આવે તેમ બની શકે છે. આ સુવિધા ફક્ત ઑટો-લૉન્ચ કિઓસ્ક તરીકે ગોઠવાયેલાં Chrome ડિવાઇસ પર જ ચાલુ કરવામાં આવેલી છે. અન્ય ડિવાઇસ પર આ નીતિ દ્વારા મર્યાદા મુકવામાં આવશે નહીં.</translation> <translation id="2823870601012066791"><ph name="PRODUCT_OS_NAME" /> ક્લાયન્ટ માટે Windowsની નોંધણી કરાવવાનું સ્થાન:</translation> <translation id="2824715612115726353">છૂપા મોડને ચાલુ કરો</translation> <translation id="283695852388224413">જો આ નીતિ સેટ કરેલ હોય, તો મહત્તમ પિન લંબાઈ લાગુ કરેલ હોય છે. 0 અથવા ઓછાનું મૂલ્ય એટલે કે કોઈ મહત્તમ લંબાઈ નથી; તે કિસ્સામાં વપરાશકર્તા પિનને તેમને તે જોઈએ ત્યાં સુધી સેટ કરી શકે છે. જો આ સેટિંગ <ph name="PIN_UNLOCK_MINIMUM_LENGTH_POLICY_NAME" /> કરતાં ઓછી હોય અથવા 0 કરતાં વધારે હોય, તો મહત્તમ લંબાઈ ન્યૂનતમ લંબાઈના બરાબર હોય છે. @@ -1214,6 +1219,7 @@ <translation id="3547954654003013442">પ્રૉક્સી સેટિંગ</translation> <translation id="355118380775352753">વૈકલ્પિક બ્રાઉઝરમાં ખોલવા માટેની વેબસાઇટ</translation> <translation id="3577251398714997599">ખલેલ પાડતી જાહેરાતોવાળી સાઇટ માટે જાહેરાતની સેટિંગ</translation> +<translation id="3591527072193107424">લેગસી બ્રાઉઝર સહાય સુવિધા ચાલુ કરો.</translation> <translation id="3591584750136265240">લોગિન પ્રમાણીકરણ વર્તણૂંકને ગોઠવો</translation> <translation id="3624171042292187668"> તમે આઇસોલેટ કરવા માગતા હોય તે સાઇટની સૂચિ સાથે IsolateOriginsનો ઉપયોગ કરીને, તમે વપરાશકર્તાઓ માટે, આઇસોલેશન અને મર્યાદિત અસર, બન્ને દુનિયાનો શ્રેષ્ઠ લાભ મેળવવા માટે કદાચ IsolateOrigins નીતિ સેટ કરવા માગતા હોય. આ સેટિંગ, SitePerProces, બધી સાઇટને આઇસોલેટ કરે છે. @@ -1406,6 +1412,13 @@ <translation id="3965339130942650562">નિષ્ક્રિય વપરાશકર્તા લૉગ-આઉટ અમલમાં આવી જાય ત્યાં સુધી સમયબાહ્ય</translation> <translation id="3973371701361892765">આ શેલ્ફને ક્યારેય સ્વતઃછુપાવો કરશો નહીં</translation> <translation id="3984028218719007910">લૉગ આઉટ કર્યા પછી <ph name="PRODUCT_OS_NAME" /> સ્થાનિક ડેટાને રાખે કે નહિ તે નિર્ધારિત કરે છે. જો true પર સેટ છે, તો <ph name="PRODUCT_OS_NAME" /> દ્વારા સતત એકાઉન્ટ રાખવામાં આવશે નહિ લૉગઆઉટ પછી વપરાશકર્તા સત્રનાં બધા ડેટાને છોડવામાં આવશે. જો આ નીતિ false પર સેટ છે અથવા કન્ફિગર કરેલી નથી, તો ડિવાઇસ (એન્ક્રિપ્ટેડ) સ્થાનિક વપરાશકર્તા ડેટા રાખી શકે છે.</translation> +<translation id="398475542699441679">લેગસી બ્રાઉઝર સહાય ચાલુ કરવી કે નહીં તેનું આ નીતિ નિયંત્રણ કરે છે. + + આ નીતિ સેટ કર્યા વિનાની છોડી દેવાઈ હોય, અથવા false પર સેટ કરેલી હોય, ત્યારે Chrome નિર્દિષ્ટ URLને વૈકલ્પિક બ્રાઉઝરમાં લૉન્ચ કરવાનો પ્રયાસ નહીં કરે. + + આ નીતિ true પર સેટ કરેલી હોય, ત્યારે Chrome અમુક URLને (Internet Explorer જેવા) વૈકલ્પિક બ્રાઉઝરમાં લૉન્ચ કરવાનો પ્રયાસ કરશે. આ સુવિધા <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> ગ્રૂપમાં રહેલી નીતિનો ઉપયોગ કરીને ગોઠવવામાં આવી છે. + + આ સુવિધા <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> એક્સ્ટેંશનને બદલે આવી છે. એક્સ્ટેંશનમાં રહેલી ગોઠવણ આ સુવિધામાં પણ અપનાવવામાં આવશે, પરંતુ તેને બદલે Chrome નીતિનો ઉપયોગ કરવાનું સલાહભર્યું છે. આને કારણે ભવિષ્યમાં વધુ સારી સુસંગતતા મળવાની ખાતરી આપી શકાય.</translation> <translation id="3997519162482760140">URL કે જેને SAML લૉગ ઇન પેજ પર વીડિયો કૅપ્ચર ડિવાઇસનો ઍક્સેસ આપવામાં આવશે</translation> <translation id="4001275826058808087">એન્ટરપ્રાઇઝ ડિવાઇસ માટે આઇટી સંચાલકો Chrome OS નોંધણી દ્વારા વપરાશકર્તાઓને ઓફર્સને રીડિમ કરવાની મંજૂરી આપવી કે નહીં તે નિયંત્રિત કરવા માટે આ ધ્વજનો ઉપયોગ કરી શકે છે. @@ -1717,6 +1730,7 @@ ઉદાહરણના પેટર્ન્સ માટે http://www.chromium.org/developers/how-tos/chrome-frame-getting-started જુઓ.</translation> <translation id="467449052039111439">URL ની સૂચિ ખોલો</translation> +<translation id="4674871290487541952">એક્સ્ટેંશન અપડેટ અને ઇન્સ્ટૉલ કરતી વખતે સંપૂર્ણતા ચેક કરવામાં અસુરક્ષિત ઍલ્ગોરિધમની મંજૂરી આપો</translation> <translation id="4680936297850947973">M68માં ટાળવામાં આવેલા. એને બદલે DefaultPopupsSettingનો ઉપયોગ કરો. સંપૂર્ણ વર્ણન માટે, https://www.chromestatus.com/features/5675755719622656 જુઓ. @@ -2847,6 +2861,12 @@ <translation id="7123160381479171745">ઉપકરણ પર લોગિન કરવા માટેની વપરાશકર્તાઓની સૂચિને નિર્ધારિત કરે છે. એન્ટ્રીઓ <ph name="USER_WHITELIST_ENTRY_FORMAT" />નું ફોર્મ છે, જેમ કે <ph name="USER_WHITELIST_ENTRY_EXAMPLE" />. ડોમેન પર સ્વૈચ્છિક વપરાશકર્તાઓને મંજૂરી આપવા માટે, <ph name="USER_WHITELIST_ENTRY_WILDCARD" /> ફોર્મની એન્ટ્રીઓનો ઉપયોગ કરે છે. જો નીતિ ગોઠવેલી નથી, તો કયા વપરાશકર્તાઓને સાઇન ઇન કરવાની મંજૂરી આપવામાં આવે તેના પર કોઈ પ્રતિબંધો નથી. નોંધો કે નવા વપરાશકર્તાઓ બનાવવા માટે હજુ પણ <ph name="DEVICE_ALLOW_NEW_USERS_POLICY_NAME" /> નીતિને યોગ્યરીતે ગોઠવેલી હોવાની જરૂર છે.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> વડે એક્સ્ટેંશન સુરક્ષિત રીતે અપડેટ અને ઇન્સ્ટૉલ કરી શકાય છે. જોકે, Chrome વેબ સ્ટોરની બહાર હોસ્ટ કરાતાં અમુક એક્સ્ટેંશનના કન્ટેન્ટનું રક્ષણ, સાઇન અથવા હૅશ કરતા SHA1 જેવાં અસુરક્ષિત ઍલ્ગોરિધમ દ્વારા કરવામાં આવતું હોય તેમ બની શકે છે. આ નીતિ બંધ કરવામાં આવી હોય, ત્યારે Chrome આવા એક્સ્ટેંશનને નવેસરથી ઇન્સ્ટૉલ કરવા અને તેમને અપડેટ કરવાની પરવાનગી ન આપે તેમ બની શકે છે (એક્સ્ટેંશન ડેવલપર વધુ પ્રબળ ઍલ્ગોરિધમ વડે એક્સ્ટેંશન બનાવે નહીં ત્યાં સુધી). આ નીતિ ચાલુ કરવામાં આવી હોય, ત્યારે આવા એક્સ્ટેંશનને ઇન્સ્ટૉલ અને અપડેટ કરવાની પરવાનગી આપવામાં આવશે. + + સેટ કરેલી નહીં હોય, ત્યારે ડિફૉલ્ટ તરીકે તેને ચાલુ રાખવામાં આવશે. + <ph name="PRODUCT_NAME" /> 75 અને તે પછી, સેટ કરેલી નહીં હોય, ત્યારે ડિફૉલ્ટ તરીકે તેને બંધ રાખવામાં આવશે. + + <ph name="PRODUCT_NAME" /> 77 અને તે પછી, આ નીતિ અવગણવામાં આવશે અને બંધ હોય તેમ માનવામાં આવશે.</translation> <translation id="7126716959063786004">કાર્યના મેનેજરમાં પ્રક્રિયા સમાપ્ત કરવાનો વિકલ્પ ચાલુ કરો</translation> <translation id="7127892035367404455">લક્ષ્ય વર્ઝન પર રોલબૅક કરો</translation> <translation id="7128918109610518786">લૉન્ચર બારમાં <ph name="PRODUCT_OS_NAME" /> પિન કરેલી એપ્લિકેશંસ તરીકે બતાવે છે તે ઍપ્લિકેશન ઓળખકર્તાઓને સૂચિબદ્ધ કરે છે.
diff --git a/components/policy/resources/policy_templates_hi.xtb b/components/policy/resources/policy_templates_hi.xtb index 89fc8b8a..7728d8fd 100644 --- a/components/policy/resources/policy_templates_hi.xtb +++ b/components/policy/resources/policy_templates_hi.xtb
@@ -807,6 +807,11 @@ यदि यह सेटिंग अक्षम हो और फ़ायरवॉल द्वारा आउटगोइंग UDP कनेक्शन फ़िल्टर किए गए हों, तो यह मशीन केवल स्थानीय नेटवर्क के अंदर वाली क्लाइंट मशीनों के कनेक्शन की ही अनुमति देगी. यदि इस नीति को सेट किए बिना छोड़ दिया जाता है तो सेटिंग सक्षम हो जाएगी.</translation> +<translation id="2813281962735757923">जब यह नीति समय फ़्रेम को नियंत्रित करती है, तब <ph name="PRODUCT_OS_NAME" /> डिवाइस पर अपने आप अपडेट की जाँच नहीं की जा सकती है. + जब यह नीति समय के अंतरालों की गैर-खाली सूची पर सेट होती है: + तय समय अंतरालों पर, डिवाइस अपने आप अपडेट की जाँच नहीं कर सकेंगे. जिन डिवाइसों को रोलबैक की ज़रूरत है या जिन पर कम से कम <ph name="PRODUCT_OS_NAME" /> वर्शन चल रहा है, उन पर संभावित सुरक्षा समस्याओं की वजह से इस नीति का असर नहीं होगा. आगे, उपयोगकर्ताओं या एडमिन के अनुरोध किए हुए अपडेट की जाँचों को यह नीति ब्लॉक नहीं करेगी. + जब यह नीति सेट नहीं की हुई हो या इसमें कोई समय अंतराल नहीं हो: + यह नीति अपने आप होने वाली किसी भी अपडेट जाँच को ब्लॉक नहीं करेगी, लेकिन उन जाँचों को दूसरी नीतियां ब्लॉक कर सकती हैं. यह सुविधा सिर्फ़ उन Chrome डिवाइस पर चालू है जो अपने आप लॉन्च होने वाले किओस्क के तौर पर सेट हैं. दूसरे डिवाइसों पर इस नीति के प्रतिबंध लागू नहीं होंगे.</translation> <translation id="2823870601012066791"><ph name="PRODUCT_OS_NAME" /> क्लाइंट के लिए Windows रजिस्ट्री का स्थान:</translation> <translation id="2824715612115726353">गुप्त मोड सक्षम करें</translation> <translation id="2838830882081735096">डेटा माइग्रेशन और ARC की अनुमति न दें</translation> @@ -1104,6 +1109,7 @@ <translation id="3547954654003013442">प्रॉक्सी सेटिंग</translation> <translation id="355118380775352753">वैकल्पिक ब्राउज़र में खोली जाने वाली वेबसाइटें</translation> <translation id="3577251398714997599">तंग करने वाले विज्ञापनों वाली साइटों के लिए विज्ञापन सेटिंग</translation> +<translation id="3591527072193107424">'पुराने ब्राउज़र के लिए मदद' सुविधा चालू करें.</translation> <translation id="3591584750136265240">लॉगिन प्रमाणीकरण व्यवहार काॅन्फ़िगर करें</translation> <translation id="3624171042292187668"> शायद आप IsolateOrigins नीति की सेटिंग पर नज़र डालना चाहें, ताकि जिन साइटों को आप आइसोलेट करना चाहते हैं, उनकी सूची वाली IsolateOrigins का इस्तेमाल करके आप आइसोलेशन और उपयोगकर्ताओं के लिए सीमित असर, इन दोनों उपायों का सबसे अच्छा इस्तेमाल कर सकें. यह SitePerProcess सेटिंग सभी साइटों को आइसोलेट करती है. @@ -1292,6 +1298,13 @@ <translation id="3965339130942650562">गतिविधि नहीं कर रहे उपयोगकर्ता को जब तक लॉग-आउट नहीं कर दिया जाता तब तक टाइमआउट</translation> <translation id="3973371701361892765">अलमारी को कभी भी स्वत:-न छिपाएं</translation> <translation id="3984028218719007910">यह तय करती है कि <ph name="PRODUCT_OS_NAME" /> लॉग आउट के बाद स्थानीय खाता डेटा रखे या नहीं. अगर यह सही पर सेट होती है तो, <ph name="PRODUCT_OS_NAME" /> कोई निरंतर खाता नहीं रखता और लॉग आउट के बाद उपयोगकर्ता सत्र से सभी डेटा हटा दिए जाएंगे. अगर यह नीति गलत पर सेट हो या कॉन्फ़िगर नहीं की गई हो तो, डिवाइस (सुरक्षित किया गया) स्थानीय उपयोगकर्ता डेटा रख सकता है.</translation> +<translation id="398475542699441679">यह नीति तय करती है कि 'पुराने ब्राउज़र के लिए मदद' चालू की जाए या नहीं. + + जब यह नीति सेट किए बिना छोड़ दी जाती है या गलत पर सेट की हुई होती है, तो Chrome दिए गए यूआरएल किसी दूसरे ब्राउज़र में खोलने की कोशिश नहीं करेगा. + + जब यह नीति सही पर सेट की हुई होती है, तो Chrome कुछ यूआरएल दूसरे ब्राउज़र (जैसे Internet Explorer) पर खोलने की कोशिश करेगा. यह सुविधा <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> समूह की नीतियों का इस्तेमाल करके कॉन्फ़िगर की गई है. + + यह सुविधा <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> एक्सटेंशन के बदले में है. एक्सटेंशन का कॉन्फ़िगरेशन इस सुविधा पर लागू होगा, लेकिन इस बात की पुरज़ोर सलाह दी जाती है कि इसके बजाय Chrome नीतियों का इस्तेमाल करें. इससे आने वाले समय में बेहतर तरीके से काम होता है.</translation> <translation id="3997519162482760140">वैसे URL जिन्हें SAML लॉगिन पेजों पर वीडियो कैप्चर डिवाइस का एक्सेस दिया जाएगा</translation> <translation id="4001275826058808087">एंटरप्राइज़ डिवाइस के आईटी ए़डमिन इस फ़्लैग का उपयोग यह नियंत्रित करने के लिए कर सकते हैं कि उपयोगकर्ताओं को 'Chrome OS रजिस्ट्रेशन' के ज़रिए ऑफ़र रिडीम कराने की अनुमति दी जाए या नहीं. @@ -1540,6 +1553,7 @@ उदाहरण पैटर्न के लिए https://www.chromium.org/developers/how-tos/chrome-frame-getting-started देखें.</translation> <translation id="467449052039111439">यूआरएल की कोई सूची खोलें</translation> +<translation id="4674871290487541952">एक्सटेंशन अपडेट और इंस्टॉल पर एकीकरण जाँच में असुरक्षित एल्गोरिद्म की अनुमति दें</translation> <translation id="4680936297850947973">M68 में रोक दिया गया है. इसके बजाय DefaultPopupsSetting का इस्तेमाल करें. पूरी जानकारी पाने के लिए, https://www.chromestatus.com/features/5675755719622656 देखें. @@ -2591,6 +2605,12 @@ अगर यह नीति 'गलत' पर सेट की जाती है तो, बैकग्राउंड मोड बंद हो जाता है और उपयोगकर्ता उसे ब्राउज़र सेटिंग में नियंत्रित नहीं कर सकता. अगर यह नीति सेट नहीं की जाती है तो, बैकग्राउंड मोड शुरू में बंद रहता है और उपयोगकर्ता उसे ब्राउज़र सेटिंग में नियंत्रित कर सकता है.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> सुरक्षित अपडेट और एक्सटेंशन का इंस्टॉलेशन उपलब्ध कराता है. हालांकि, Chrome वेब स्टोर से बाहर होस्ट किए गए कुछ एक्सटेंशन की सामग्री सिर्फ़ असुरक्षित हस्ताक्षर करके या SHA1 जैसे एल्गोरिद्म को हैश करके सुरक्षित की जा सकती है. जब यह नीति बंद होती है, तब ऐसे एक्सटेंशन के नए इंस्टॉलेशन और अपडेट की अनुमति Chrome नहीं देगा (जब तक कि एक्सटेंशन डेवलपर ज़्यादा मज़बूत एल्गोरिद्म के साथ फिर से एक्सटेंशन न बना लें). जब यह नीति चालू होती है, तब ऐसे एक्सटेंशन के इंस्टॉलेशन और अपडेट की अनुमति रहेगी. + + सेट नहीं किए गए होने पर, चालू बर्ताव के लिए यह डिफ़ॉल्ट रहेगा. + <ph name="PRODUCT_NAME" /> 75 में शुरू करने पर, सेट नहीं किए गए होने पर, बंद बर्ताव के लिए यह डिफ़ॉल्ट रहेगा. + + <ph name="PRODUCT_NAME" /> 77 में शुरू करने पर, यह नीति अनदेखी कर दी जाएगी और उसे बंद माना जाएगा.</translation> <translation id="7126716959063786004">काम का प्रबंधक में प्रक्रियाएं खत्म होना चालू करती है</translation> <translation id="7127892035367404455">टार्गेट वर्शन में रोलबैक करें</translation> <translation id="7128918109610518786">उन ऐप्लिकेशन पहचानकर्ताओं को सूची में लिखता है जिन्हें <ph name="PRODUCT_OS_NAME" />PRODUCT_OS_NAME, लॉन्चर बार में पिन किए गए ऐप्लिकेशन के तौर पर दिखाता है.
diff --git a/components/policy/resources/policy_templates_hu.xtb b/components/policy/resources/policy_templates_hu.xtb index a3e98a6..a88dbf0 100644 --- a/components/policy/resources/policy_templates_hu.xtb +++ b/components/policy/resources/policy_templates_hu.xtb
@@ -780,6 +780,11 @@ Ha ez a lehetőség ki van kapcsolva, és a tűzfal szűri a kimenő UDP-kapcsolatokat, akkor ez a számítógép csak olyan kapcsolatokat fog engedélyezni az ügyfelek számítógépei felől, amelyek a helyi hálózaton belül találhatók. Ha a házirend nincs beállítva, akkor a rendszer engedélyezi a beállítást.</translation> +<translation id="2813281962735757923">Ez a házirend szabályozza az időintervallumot, amely során a(z) <ph name="PRODUCT_OS_NAME" />-eszköz nem kereshet automatikusan frissítéseket. + Ha a házirend időintervallumok nem üres listájára van állítva: + Az eszközök nem tudnak automatikusan frissítéseket keresni a megadott időintervallumokon belül. A korábbi állapot visszaállítását igénylő és a minimális <ph name="PRODUCT_OS_NAME" />-verzió alatti eszközökre nem érvényes ez a házirend a lehetséges biztonsági problémák elkerülése érdekében. Továbbá a házirend nem tiltja a felhasználók és adminisztrátorok által kérelmezett frissítéskereséseket. + Ha a házirend nincs beállítva, vagy nem tartalmaz időintervallumokat: + Ez a házirend nem tiltja az automatikus frissítéskereséseket, más házirendek azonban tilthatják őket. Ez a funkció csak az automatikusan induló kioszkként beállított Chrome-eszközökön használható. A többi eszközt nem korlátozza ez a házirend.</translation> <translation id="2823870601012066791">A Windows beállításjegyzékének helye <ph name="PRODUCT_OS_NAME" />-ügyfelek esetében:</translation> <translation id="2824715612115726353">Inkognitómód engedélyezése</translation> <translation id="2838830882081735096">Adatmigráció és ARC letiltása</translation> @@ -1069,6 +1074,7 @@ <translation id="3547954654003013442">Proxybeállítások</translation> <translation id="355118380775352753">Az alternatív böngészőben megnyíló webhelyek</translation> <translation id="3577251398714997599">Hirdetésbeállítások a tolakodó hirdetéseket tartalmazó webhelyekre vonatkozóan</translation> +<translation id="3591527072193107424">A Régi böngészők támogatása funkció engedélyezése</translation> <translation id="3591584750136265240">Bejelentkezési hitelesítési viselkedés konfigurálása</translation> <translation id="3624171042292187668"> Tekintse át az IsolateOrigins házirend beállításait, és annak érdekében, hogy az izoláció is megvalósuljon, és a felhasználók számára is korlátozottan legyen érzékelhető a hatás, alkalmazza az IsolateOrigins házirendet az izolálni kívánt webhelyek listáján. Ez a SitePerProcess beállítás minden webhelyet izolál. @@ -1252,6 +1258,13 @@ <translation id="3965339130942650562">Időtúllépés, amely után a felhasználót a rendszer tétlenség esetén kijelentkezteti.</translation> <translation id="3973371701361892765">A polc soha ne legyen automatikusan elrejtve</translation> <translation id="3984028218719007910">Meghatározza, hogy a(z) <ph name="PRODUCT_OS_NAME" /> megtartja-e a helyi fiókadatokat a kijelentkezést követően. Ha a beállítás igaz, akkor a(z) <ph name="PRODUCT_OS_NAME" /> nem tart meg állandó fiókokat, és a rendszer elveti a felhasználói munkamenet minden adatát a kijelentkezés után. Ha a házirend beállítása hamis, vagy nincs beállítva a házirend, akkor az eszköz megtarthatja a (titkosított) helyi felhasználói adatokat.</translation> +<translation id="398475542699441679">Ez a házirend vezérli a Régi böngészők támogatása funkció engedélyezését. + + Ha a házirend beállítatlanul marad, vagy értéke hamis, a Chrome nem próbálja meg másik böngészőben megnyitni a kijelölt URL-eket. + + Ha a házirend értéke igaz, a Chrome alternatív böngészőben (pl. Internet Explorer) próbál meg megnyitni bizonyos URL-eket. Ez a funkció a(z) <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> csoportban található házirendek használatával konfigurálható. + + A funkció a(z) <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> bővítmény helyébe lép. A rendszer a bővítmény konfigurációját alkalmazza erre a funkcióra, de erősen javasolt inkább a Chrome-házirendek használata. Ez biztosítja a jobb kompatibilitást a későbbiekben.</translation> <translation id="3997519162482760140">Azon URL-ek, amelyek hozzáférést kapnak a videórögzítő eszközökhöz a SAML bejelentkezési oldalakon</translation> <translation id="4001275826058808087">Vállalati eszközök rendszergazdái annak szabályozására használhatják ezt a jelölőt, hogy engedélyezik-e a felhasználóknak az ajánlatok beváltását Chrome OS-regisztráció útján. @@ -1493,6 +1506,7 @@ Példamintákért lásd a következő címet: https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Nyisson meg egy URL-listát</translation> +<translation id="4674871290487541952">Nem biztonságos algoritmusok engedélyezése a bővítmények frissítésekor és telepítésekor történő integritás-ellenőrzéseknél</translation> <translation id="4680936297850947973">Megszűnt az M68-as verzióban. Használja helyette a DefaultPopupsSetting házirendet. A teljes magyarázatot a következő linken találja: https://www.chromestatus.com/features/5675755719622656. @@ -2493,6 +2507,12 @@ Ha a házirend értéke False (hamis), a háttérmód le van tiltva, a felhasználó pedig ezt nem tudja módosítani a böngésző beállításaiban. Ha a házirend nincs beállítva, a háttérmód először le van tiltva, és ezt a felhasználó módosítani tudja a böngésző beállításaiban.</translation> +<translation id="7123266440503901785">A <ph name="PRODUCT_NAME" /> gondoskodik a bővítmények biztonságos frissítéséről és telepítéséről. Azonban előfordulhat, hogy bizonyos, a Chrome Internetes áruházon kívülről származó bővítmények tartalmának védelméről csak nem biztonságos aláíró vagy kivonatoló algoritmusok (pl. SHA1) gondoskodnak. Ha le van tiltva ez a házirend, a Chrome nem engedélyezi az ilyen bővítmények friss telepítését és frissítését (amíg a bővítmény fejlesztői újra el nem készítik a bővítményt erősebb algoritmusok használatával). Ha a házirend engedélyezve van, lehetséges az ilyen bővítmények telepítése és frissítése. + + Ha a házirend nincs beállítva, a rendszer alapértelmezés szerint az engedélyezett viselkedést használja. + A <ph name="PRODUCT_NAME" /> 75-ös verziójától kezdve a rendszer alapértelmezés szerint a letiltott viselkedést használja, ha nincs beállítva a házirend. + + A <ph name="PRODUCT_NAME" /> 77-es verziójától kezdve a rendszer figyelmen kívül hagyja és letiltottként kezeli a házirendet.</translation> <translation id="7126716959063786004">A folyamatok befejezésének engedélyezése a Feladatkezelőben</translation> <translation id="7127892035367404455">Visszaállítás célverzióra</translation> <translation id="7128918109610518786">Listázza a(z) <ph name="PRODUCT_OS_NAME" /> által az indítósávon rögzített alkalmazásként megjelenített alkalmazásazonosítókat.
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb index 5ffcfa63..44cb4a9 100644 --- a/components/policy/resources/policy_templates_it.xtb +++ b/components/policy/resources/policy_templates_it.xtb
@@ -755,6 +755,11 @@ Se questa impostazione viene disattivata e le connessioni UDP in uscita vengono filtrate dal firewall, questo computer consentirà soltanto connessioni da computer client all'interno della rete locale. Se questa norma non viene impostata l'impostazione verrà attivata.</translation> +<translation id="2813281962735757923">Questa norma consente di regolare gli intervalli di tempo durante i quali al dispositivo <ph name="PRODUCT_OS_NAME" /> non è consentito verificare automaticamente la disponibilità di aggiornamenti. + Quando questa norma è impostata su un elenco valido di intervalli di tempo: + Ai dispositivi non sarà consentito verificare automaticamente la disponibilità di aggiornamenti durante gli intervalli di tempo specificati. A causa di possibili problemi di sicurezza, questa norma non avrà conseguenze sui dispositivi che richiedono il rollback o dispongono di una versione inferiore alla versione minima di <ph name="PRODUCT_OS_NAME" />. Inoltre, questa norma non impedirà le verifiche degli aggiornamenti richieste dagli utenti o dagli amministratori. + Quando la norma non viene impostata o non contiene intervalli di tempo: + Le verifiche automatiche degli aggiornamenti non verranno bloccate da questa norma, ma potrebbero essere bloccate da altre norme. Questa funzionalità è attiva solo sui dispositivi Chrome configurati come kiosk ad avvio automatico. Gli altri dispositivi non risulteranno limitati da questa norma.</translation> <translation id="2823870601012066791">Posizione del Registro di sistema di Windows per client <ph name="PRODUCT_OS_NAME" />:</translation> <translation id="2824715612115726353">Attiva modalità di navigazione in incognito</translation> <translation id="2838830882081735096">Non consentire migrazione dei dati e ARC</translation> @@ -1041,6 +1046,7 @@ <translation id="3547954654003013442">Impostazioni proxy</translation> <translation id="355118380775352753">Siti web da aprire in un browser alternativo</translation> <translation id="3577251398714997599">Impostazione annunci per i siti con annunci invasivi</translation> +<translation id="3591527072193107424">Attiva la funzionalità Supporto dei browser precedenti.</translation> <translation id="3591584750136265240">Configura il comportamento di autenticazione dell'accesso</translation> <translation id="3624171042292187668"> Potresti considerare l'impostazione della norma IsolateOrigins per ottenere sia l'isolamento sia un impatto limitato per gli utenti. Usa IsolateOrigins con un elenco dei siti che vuoi isolare. Questa impostazione, SitePerProcess, isola tutti i siti. @@ -1224,6 +1230,13 @@ <translation id="3965339130942650562">Timeout fino a esecuzione uscita utente non attivo</translation> <translation id="3973371701361892765">Non nascondere mai automaticamente lo shelf</translation> <translation id="3984028218719007910">Consente di stabilire se tenere o meno memorizzati in <ph name="PRODUCT_OS_NAME" /> i dati degli account locali dopo l'uscita. Se la norma viene impostata su true, in <ph name="PRODUCT_OS_NAME" /> non verranno conservati gli account persistenti e tutti i dati della sessione utente verranno eliminati dopo l'uscita. Se la norma viene impostata su false o non viene configurata, il dispositivo potrebbe conservare i dati utente locali (criptati).</translation> +<translation id="398475542699441679">Questa norma consente di stabilire se attivare il Supporto dei browser precedenti. + + Se questa norma non viene impostata o viene impostata su false, Chrome non proverà ad avviare gli URL stabiliti in un browser alternativo. + + Quando questa norma è impostata su true, Chrome prova ad avviare alcuni URL in un browser alternativo (ad esempio, Internet Explorer). Questa funzionalità viene configurata con le norme nel gruppo <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + Questa funzionalità sostituisce l'estensione <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. La configurazione dell'estensione viene riportata in questa funzionalità, ma consigliamo vivamente di utilizzare invece le norme di Chrome. Infatti, ciò garantisce una maggiore compatibilità in futuro.</translation> <translation id="3997519162482760140">URL a cui verrà concesso l'accesso ai dispositivi di acquisizione video su pagine di accesso SAML</translation> <translation id="4001275826058808087">Gli amministratori IT di dispositivi aziendali possono utilizzare questo flag per stabilire se consentire agli utenti di utilizzare le offerte tramite la registrazione a Chrome OS. @@ -1459,6 +1472,7 @@ Per avere pattern di esempio, visita il sito https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Apri un elenco di URL</translation> +<translation id="4674871290487541952">Consente algoritmi non protetti nei controlli dell'integrità durante gli aggiornamenti e le installazioni delle estensioni</translation> <translation id="4680936297850947973">Ritirata in M68. Usa DefaultPopupsSetting. Per una spiegazione completa, consulta la pagina https://www.chromestatus.com/features/5675755719622656. @@ -2444,6 +2458,12 @@ Se questa norma viene impostata su false, la modalità in background viene disattivata e non può essere controllata dall'utente tramite le impostazioni del browser. Se la norma non viene impostata, la modalità in background viene inizialmente disattivata e può essere controllata dall'utente tramite le impostazioni del browser.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> garantisce la sicurezza degli aggiornamenti e dell'installazione delle estensioni. Tuttavia, i contenuti di alcune estensioni ospitate al di fuori del Chrome Web Store potrebbero essere protetti solo dagli accessi non sicuri o da algoritmi di hashing, ad esempio SHA1. Quando questa norma è disattivata, la nuova installazione o gli aggiornamenti di tali estensioni non verranno consentiti da Chrome (finché gli sviluppatori delle estensioni non ricreano le estensioni con algoritmi più efficaci). Se questa norma viene attivata, l'installazione e gli aggiornamenti di queste estensioni saranno concessi. + + Se la norma non è impostata, viene applicato per impostazione predefinita il comportamento previsto dalla norma attiva. + A partire dalla versione 75 di <ph name="PRODUCT_NAME" />, qualora la norma non fosse impostata, verrà invece applicato per impostazione predefinita il comportamento previsto in caso di norma non attiva. + + A partire dalla versione 77 di <ph name="PRODUCT_NAME" />, questa norma verrà ignorata e considerata come disattivata.</translation> <translation id="7126716959063786004">Consenti di terminare i processi in Task Manager</translation> <translation id="7127892035367404455">Rollback alla versione target</translation> <translation id="7128918109610518786">Consente di elencare gli ID delle applicazioni da visualizzare in <ph name="PRODUCT_OS_NAME" /> sotto forma di applicazioni bloccate nella barra Avvio applicazioni.
diff --git a/components/policy/resources/policy_templates_iw.xtb b/components/policy/resources/policy_templates_iw.xtb index 992aa35..6bd0a40 100644 --- a/components/policy/resources/policy_templates_iw.xtb +++ b/components/policy/resources/policy_templates_iw.xtb
@@ -773,6 +773,11 @@ אם ההגדרה הזו מושבתת וחומת האש מסננת חיבורי UDP, המחשב הזה יאפשר רק חיבורים ממחשבי לקוח הנמצאים ברשת המקומית. אם המדיניות הזו לא תוגדר, ההגדרה תופעל.</translation> +<translation id="2813281962735757923">המדיניות הזו קובעת את מסגרות הזמן שבהן מכשיר ה-<ph name="PRODUCT_OS_NAME" /> אינו מורשה לחפש עדכונים באופן אוטומטי. + כשבמדיניות הזו מוגדרת רשימת טווחי זמן שאינה ריקה: + מכשירים לא יוכלו לחפש עדכונים באופן אוטומטי בטווחי הזמן שצוינו. מכשירים שנדרשת עבורם החזרה למצב קודם או שהגרסה שלהם ישנה מגרסת המינימום <ph name="PRODUCT_OS_NAME" /> לא יושפעו מהמדיניות הזו, כדי למנוע בעיות אבטחה פוטנציאליות. בנוסף, המדיניות הזו לא תחסום בדיקות עדכונים שהתבקשו על-ידי משתמשים ומנהלי מערכת. + כשהמדיניות אינה מוגדרת או כשלא צוינו בה טווחי זמן: + המדיניות הזו לא תחסום חיפוש אוטומטי של עדכונים, אבל ייתכן שהחיפוש ייחסם על-ידי מדיניות אחרת. התכונה הזו מופעלת רק במכשירי Chrome שהוגדרו בתור קיוסקים המפעילים את עצמם. מכשירים אחרים לא יוגבלו על-ידי המדיניות הזו.</translation> <translation id="2823870601012066791">מיקום בקובץ הרישום של Windows בשביל לקוחות <ph name="PRODUCT_OS_NAME" />:</translation> <translation id="2824715612115726353">הפעל מצב גלישה בסתר</translation> <translation id="2838830882081735096">אל תאפשר העברת נתונים ו-ARC</translation> @@ -1062,6 +1067,7 @@ <translation id="3547954654003013442">הגדרות Proxy</translation> <translation id="355118380775352753">אתרים לפתיחה בדפדפן חלופי</translation> <translation id="3577251398714997599">הגדרות המודעות לאתרים עם מודעות שמפריעות</translation> +<translation id="3591527072193107424">הפעלת התכונה לתמיכה בדפדפן מדור קודם.</translation> <translation id="3591584750136265240">הגדרה של התנהגות האימות בהתחברות</translation> <translation id="3624171042292187668"> מומלץ לעיין בהגדרת המדיניות IsolateOrigins כדי ליהנות מהיתרונות של שתי האפשרויות - בידוד והשפעה מוגבלת על משתמשים - על-ידי שימוש ב-IsolateOrigins עם רשימה של האתרים שברצונך לבודד. ההגדרה הזו, SitePerProcess, מבודדת את כל האתרים. @@ -1247,6 +1253,13 @@ <translation id="3965339130942650562">זמן קצוב עד שמתבצעת התנתקות משתמש לא פעיל.</translation> <translation id="3973371701361892765">לעולם אל תסתיר אוטומטית את המדף</translation> <translation id="3984028218719007910">קובעת אם <ph name="PRODUCT_OS_NAME" /> ישמור את נתוני החשבון המקומיים לאחר התנתקות. אם הוגדר כ'אמת', לא יישמרו חשבונות קבועים כלשהם על ידי <ph name="PRODUCT_OS_NAME" /> וכל נתוני ההפעלה של המשתמש יסולקו לאחר התנתקות. אם מדיניות זו מוגדרת כ'שקר' או שאינה מוגדרת, המכשיר יכול לשמור את נתוני המשתמש המקומיים (מוצפנים).</translation> +<translation id="398475542699441679">המדיניות הזו קובעת אם להפעיל תמיכה בדפדפן מדור קודם. + + כשהמדיניות הזו אינה מוגדרת, או אם היא מוגדרת כ-false, Chrome לא ינסה להפעיל בדפדפן חלופי כתובות URL שצוינו. + + כשהמדיניות הזו מוגדרת כ-true, Chrome ינסה להפעיל חלק מכתובות ה-URL בדפדפן חלופי (למשל, Internet Explorer). התכונה הזו מוגדרת באמצעות המדיניות בקבוצה <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + התכונה הזו מחליפה את התוסף <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> . הגדרת התכונה הזו תתבסס על ההגדרה בתוסף, אבל מומלץ מאוד להשתמש במקום זאת במדיניות של Chrome. כך אפשר להבטיח תאימות טובה יותר בעתיד.</translation> <translation id="3997519162482760140">כתובות אתרים שיקבלו גישה להתקני צילום וידאו בדפי כניסה מסוג SAML</translation> <translation id="4001275826058808087">מנהלי IT עבור מכשירים ארגוניים יכולים להשתמש בסימון הזה כדי לקבוע אם לאפשר למשתמשים לממש מבצעים באמצעות הרשמה של מערכת ההפעלה של Chrome. @@ -1491,6 +1504,7 @@ כדי לראות דפוסים לדוגמה, עבור לכתובת https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">פתח רשימה של כתובות אתר</translation> +<translation id="4674871290487541952">מתן הרשאה לאלגוריתמים לא מאובטחים בבדיקות תקינות עבור עדכונים והתקנות של תוספים</translation> <translation id="4680936297850947973">הוצאה משימוש ב-M68. במקום זאת, יש להשתמש ב-DefaultPopupsSetting. הסבר מלא זמין בכתובת https://www.chromestatus.com/features/5675755719622656. @@ -2481,6 +2495,12 @@ אם מדיניות זו מוגדרת לערך False, 'מצב ברקע' מושבת והמשתמש לא יכול לשלוט בו מהגדרות הדפדפן. אם מדיניות זו אינה מוגדרת כלל, 'מצב ברקע' מושבת כברירת מחדל, אך המשתמש יכול לשלוט בו מהגדרות הדפדפן.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> מספק אבטחה בעדכונים ובהתקנות של תוספים. עם זאת, התוכן של חלק מהתוספים שמתארחים מחוץ לחנות האינטרנט של Chrome עשוי להיות מוגן רק על-ידי אלגוריתמים לא מאובטחים של חתימה או גיבוב (hashing), כמו SHA1. כשהמדיניות הזו מושבתת, התקנות חדשות ועדכונים של תוספים כאלה ייחסמו על-ידי Chrome (עד שמפתח התוסף יבנה אותו מחדש עם אלגוריתמים מאובטחים יותר). כשהמדיניות הזו מופעלת, ההתקנה והעדכונים של תוספים כאלה מותרת. + + אם היא לא מוגדרת, ברירת המחדל תהיה שימוש בהתנהגות המופעלת. + החל מ-<ph name="PRODUCT_NAME" /> 75, ברירת המחדל כשהמדיניות אינה מוגדרת תהיה ההתנהגות המושבתת. + + החל מ-<ph name="PRODUCT_NAME" /> 77, המדיניות הזו לא תובא בחשבון והמערכת תתייחס אליה כאילו שהיא מושבתת.</translation> <translation id="7126716959063786004">הפעלת האפשרות לסיים תהליכים במנהל המשימות</translation> <translation id="7127892035367404455">חזרה לגירסת היעד</translation> <translation id="7128918109610518786">מפרט רשימה של מזהי האפליקציות ש-<ph name="PRODUCT_OS_NAME" /> מציג כאפליקציות המוצמדות לסרגל האפליקציות.
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb index a77685ce..9f0c042 100644 --- a/components/policy/resources/policy_templates_ja.xtb +++ b/components/policy/resources/policy_templates_ja.xtb
@@ -778,6 +778,11 @@ この設定が無効な場合で発信 UDP 接続がファイアウォールによって除外されている場合は、ローカル ネットワーク内のクライアント コンピュータのみがこのコンピュータに接続できます。 このポリシーが未設定の場合、この設定は有効になります。</translation> +<translation id="2813281962735757923"><ph name="PRODUCT_OS_NAME" /> デバイスでアップデートの自動チェックを行わない時間帯を制御します。 + このポリシーで、空ではない時間帯のリストが設定されている場合は、次のようになります。 + 指定された時間帯にアップデートの自動チェックは行われません。ただし、ロールバックが必要なデバイスや <ph name="PRODUCT_OS_NAME" /> の最小バージョンよりも低いバージョンのデバイスは、セキュリティの問題が発生するおそれがあるため、このポリシーの影響を受けません。また、このポリシーによって、ユーザーや管理者が指定したアップデート チェックが妨げられることはありません。 + このポリシーが未設定であるか、時間帯が指定されていない場合は、次のようになります。 + アップデートの自動チェックは、このポリシーによって妨げられることはありません。ただし、他のポリシーによって妨げられる可能性はあります。この機能は、自動起動のキオスクとして設定された Chrome デバイスでのみ有効です。それ以外のデバイスは、このポリシーによる制限を受けません。</translation> <translation id="2823870601012066791">Windows レジストリでの <ph name="PRODUCT_OS_NAME" /> クライアントの場所:</translation> <translation id="2824715612115726353">シークレット モードを有効にする</translation> <translation id="2838830882081735096">データ移行と ARC を許可しない</translation> @@ -1069,6 +1074,7 @@ <translation id="3547954654003013442">プロキシ設定</translation> <translation id="355118380775352753">代替ブラウザで開くウェブサイト</translation> <translation id="3577251398714997599">煩わしい広告を含むサイトでの広告表示に関する設定</translation> +<translation id="3591527072193107424">従来のブラウザのサポート機能を有効にする。</translation> <translation id="3591584750136265240">ログイン認証の動作を設定する</translation> <translation id="3624171042292187668"> IsolateOrigins ポリシーの設定も参照し、状況に応じて使い分けてください。IsolateOrigins ポリシーでは、分離するサイトのリストを指定して、ユーザーへの影響を限定します。この設定(SitePerProcess)では、すべてのサイトを分離します。 @@ -1255,6 +1261,13 @@ <translation id="3965339130942650562">アイドル状態のユーザーがログアウトされるまでのタイムアウト</translation> <translation id="3973371701361892765">シェルフを自動的に非表示にしない</translation> <translation id="3984028218719007910">ログアウト後に <ph name="PRODUCT_OS_NAME" /> がローカル アカウントのデータを保持するかどうかを指定します。true に設定した場合、<ph name="PRODUCT_OS_NAME" /> は永続的アカウントを保持していないため、ユーザー セッションのすべてのデータがログアウト後に破棄されます。このポリシーを false に設定した場合または未設定の場合、端末は(暗号化された)ローカル ユーザー データを保持できます。</translation> +<translation id="398475542699441679">このポリシーでは、従来のブラウザのサポートを有効にするかどうかを管理します。 + + このポリシーが未設定または false に設定されている場合、Chrome では、指定した URL に対して代替ブラウザを起動しません。 + + このポリシーが true に設定されている場合、Chrome では、一部の URL に対して代替ブラウザ(Internet Explorer など)の起動を試みます。この機能は、<ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> グループのポリシーを使って設定します。 + + この機能は、<ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> 拡張機能に代わるものです。拡張機能での設定はこの機能に引き継がれますが、今後の互換性を考慮して、Chrome のポリシーを使用することをおすすめします。</translation> <translation id="3997519162482760140">SAML ログインページで動画キャプチャ デバイスへのアクセスを許可する URL</translation> <translation id="4001275826058808087">企業向けデバイスの IT 管理者はこのフラグを使用して、Chrome OS の登録特典の利用をユーザーに許可するかどうかを指定できます。 @@ -1496,6 +1509,7 @@ パターンの例については、https://www.chromium.org/developers/how-tos/chrome-frame-getting-started をご覧ください。</translation> <translation id="467449052039111439">URL のリストを開く</translation> +<translation id="4674871290487541952">拡張機能の更新とインストール時の整合性チェックで安全でないアルゴリズムを許可する</translation> <translation id="4680936297850947973">M68 でサポートを終了します。代わりに DefaultPopupsSetting を使用してください。 詳しくは、https://www.chromestatus.com/features/5675755719622656 をご覧ください。 @@ -2492,6 +2506,12 @@ このポリシーを False に設定すると、バックグラウンド モードが無効になります。ユーザーがブラウザ設定で変更することはできません。 このポリシーが未設定の場合、バックグラウンド モードは最初は無効の状態です。ユーザーはブラウザ設定で変更することができます。</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> では、拡張機能の更新やインストールを安全に行うことができます。ただし、Chrome Web Store 以外でホストされている一部の拡張機能のコンテンツは、安全でない署名アルゴリズムやハッシュ アルゴリズム(SHA1 など)のみによって保護されていることがあります。このポリシーが無効になっている場合、Chrome では、そうした拡張機能のフレッシュ インストールや更新は(その拡張機能のデベロッパーがアルゴリズムを強化したバージョンを再作成するまで)許可されません。このポリシーが有効になっている場合は、そうした拡張機能のインストールや更新が許可されます。 + + このポリシーが未設定の場合、デフォルトの動作は有効な場合と同じです。 + ただし、<ph name="PRODUCT_NAME" /> 75 以降では、未設定の場合のデフォルトの動作は無効な場合と同じになります。 + + さらに、<ph name="PRODUCT_NAME" /> 77 以降では、このポリシーは無視され、無効として扱われます。</translation> <translation id="7126716959063786004">タスク マネージャでプロセスを終了できるようにする</translation> <translation id="7127892035367404455">対象バージョンへのロールバック</translation> <translation id="7128918109610518786"><ph name="PRODUCT_OS_NAME" /> によりランチャー バーに固定アプリとして表示されるアプリケーション ID のリストを設定します。
diff --git a/components/policy/resources/policy_templates_kn.xtb b/components/policy/resources/policy_templates_kn.xtb index 70566a8..d63a62c 100644 --- a/components/policy/resources/policy_templates_kn.xtb +++ b/components/policy/resources/policy_templates_kn.xtb
@@ -823,6 +823,11 @@ ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದರೆ ಮತ್ತು ಹೊರಹೋಗುವ UDP ಸಂಪರ್ಕಗಳನ್ನು ಫೈರ್ವಾಲ್ನಿಂದ ಫಿಲ್ಟರ್ ಮಾಡಿದರೆ, ಈ ಯಂತ್ರವು ಸ್ಥಳೀಯ ನೆಟ್ವರ್ಕ್ಗಳಲ್ಲಿಯೆ ಕ್ಲೈಂಟ್ ಯಂತ್ರಗಳಿಂದ ಮಾತ್ರ ಸಂಪರ್ಕಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸದೇ ಬಿಟ್ಟರೆ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ.</translation> +<translation id="2813281962735757923">ಈ ಕಾರ್ಯನೀತಿಯು, ಯಾವ ಸಮಯಾವಧಿಗಳಲ್ಲಿ <ph name="PRODUCT_OS_NAME" /> ಸಾಧನಕ್ಕೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಪ್ಡೇಟ್ಗಳಿಗಾಗಿ ಪರಿಶೀಲಿಸಲು ಅನುಮತಿಯಿಲ್ಲವೋ, ಆ ಸಮಯಾವಧಿಗಳನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ. + ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ಖಾಲಿ-ಇಲ್ಲದ ಸಮಯಾವಧಿಯ ಪಟ್ಟಿಗೆ ಹೊಂದಿಸಿದಾಗ: + ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸಮಯಾವಧಿಗಳಲ್ಲಿ, ಸಾಧನಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಪ್ಡೇಟ್ಗಳಿಗಾಗಿ ಪರಿಶೀಲಿಸುವುದಕ್ಕೆ ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ಸುರಕ್ಷತಾ ಸಮಸ್ಯೆಗಳು ಉಂಟಾಗುವ ಸಂಭಾವ್ಯತೆ ಇರುವ ಕಾರಣ, ಪೂರ್ವಸ್ಥಿತಿಗೆ ಮರಳಿಸಬೇಕಾದ ಸಾಧನಗಳು ಅಥವಾ ಕನಿಷ್ಠ <ph name="PRODUCT_OS_NAME" />ಗಿಂತ ಹಿಂದಿನ ಆವೃತ್ತಿಯನ್ನು ಹೊಂದಿರುವ ಸಾಧನಗಳ ಮೇಲೆ ಈ ಕಾರ್ಯನೀತಿಯು ಪರಿಣಾಮ ಬೀರುವುದಿಲ್ಲ. ಇದಲ್ಲದೆ, ಬಳಕೆದಾರರು ಅಥವಾ ನಿರ್ವಾಹಕರು ವಿನಂತಿಸಿದ ಅಪ್ಡೇಟ್ ಪರಿಶೀಲನೆಗಳನ್ನೂ ಈ ಕಾರ್ಯನೀತಿಯು ನಿರ್ಬಂಧಿಸುವುದಿಲ್ಲ. + ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ಹೊಂದಿಸದೇ ಇದ್ದಾಗ ಅಥವಾ ಇದು ಯಾವುದೇ ಸಮಯಾವಧಿಗಳನ್ನು ಒಳಗೊಂಡಿರದಿದ್ದಾಗ: + ಈ ಕಾರ್ಯನೀತಿಯು ಯಾವುದೇ ಸ್ವಯಂಚಾಲಿತ ಪರಿಶೀಲನೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸುವುದಿಲ್ಲ, ಆದರೆ ಇತರ ಕಾರ್ಯನೀತಿಗಳು ಅವುಗಳನ್ನು ನಿರ್ಬಂಧಿಸಬಹುದು. ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪ್ರಾರಂಭಗೊಳ್ಳುವ ಕಿಯೋಸ್ಕ್ಗಳ ರೂಪದಲ್ಲಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿರುವ Chrome ಸಾಧನಗಳಲ್ಲಿ ಮಾತ್ರ ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿರುತ್ತದೆ. ಈ ಕಾರ್ಯನೀತಿಯು ಇತರ ಸಾಧನಗಳನ್ನು ನಿರ್ಬಂಧಿಸುವುದಿಲ್ಲ.</translation> <translation id="2823870601012066791"><ph name="PRODUCT_OS_NAME" /> ಕ್ಲೈಂಟ್ಗಳಿಗಾಗಿ Windows ದಾಖಲಾತಿ ಸ್ಥಳ:</translation> <translation id="2824715612115726353">ಅದೃಶ್ಯ ಮೋಡ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸು</translation> <translation id="283695852388224413">ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸಿದರೆ, ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ ಗರಿಷ್ಠ ಪಿನ್ ಉದ್ದವನ್ನು ಒತ್ತಾಯಪಡಿಸಲಾಗಿರುತ್ತದೆ. ಮೌಲ್ಯವು 0 ಅಥವಾ ಗರಿಷ್ಠ ಪಿನ್ ಉದ್ದಕ್ಕಿಂತ ಕಡಿಮೆ ಇದ್ದರೆ; ಆ ಸಂದರ್ಭದಲ್ಲಿ,ಬಳಕೆದಾರರು ಅವರಿಗೆ ಬೇಕಾದಷ್ಟು ಪಿನ್ ಅನ್ನು ಉದ್ದಮಾಡಿಕೊಳ್ಳಬಹುದು. ಅಥವಾ ಈ ಸೆಟ್ಟಿಂಗ್ <ph name="PIN_UNLOCK_MINIMUM_LENGTH_POLICY_NAME" /> ಗಿಂತ ಕಡಿಮೆ ಇದ್ದು 0 ಗಿಂತ ಹೆಚ್ಚು ಇದ್ದಲ್ಲಿ, ಗರಿಷ್ಠ ಉದ್ದವು ಕನಿಷ್ಠ ಉದ್ದಷ್ಟೆ ಇರುತ್ತದೆ. @@ -1135,6 +1140,7 @@ <translation id="3547954654003013442">ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್ಗಳು</translation> <translation id="355118380775352753">ಪರ್ಯಾಯ ಬ್ರೌಸರ್ನಲ್ಲಿ ತೆರೆಯಲು ವೆಬ್ಸೈಟ್ಗಳು</translation> <translation id="3577251398714997599">ಅತಿಕ್ರಮಣಕಾರಿಯಾಗಿರುವ ಜಾಹೀರಾತುಗಳ ಮೂಲಕ ಸೈಟ್ಗಳಿಗಾಗಿ ಜಾಹೀರಾತುಗಳ ಸೆಟ್ಟಿಂಗ್</translation> +<translation id="3591527072193107424">ಪಾರಂಪರಿಕ ಬ್ರೌಸರ್ ಬೆಂಬಲದ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ.</translation> <translation id="3591584750136265240">ಲಾಗಿನ್ ಪ್ರಮಾಣೀಕರಣ ನಡವಳಿಕೆಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ</translation> <translation id="3624171042292187668"> ಪ್ರತ್ಯೇಕಿಸುವಿಕೆ ಮತ್ತು ಬಳಕೆದಾರರ ಮೇಲೆ ಸೀಮಿತ ಪರಿಣಾಮ - ಇವೆರಡರ ಲಾಭವನ್ನು ಪಡೆಯಲು, ನೀವು ಪ್ರತ್ಯೇಕಿಸಲು ಬಯಸುವ ಸೈಟ್ಗಳ ಪಟ್ಟಿಯೊಂದಿಗೆ IsolateOrigins ಅನ್ನು ಬಳಸಬಹುದು. ಇದಕ್ಕಾಗಿ ನೀವು IsolateOrigins ಕಾರ್ಯನೀತಿಯ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ನೋಡಬಹುದು. SitePerProcess ಎಂಬ ಈ ಸೆಟ್ಟಿಂಗ್, ಎಲ್ಲಾ ಸೈಟ್ಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸುತ್ತದೆ. @@ -1323,6 +1329,13 @@ <translation id="3965339130942650562">ತಟಸ್ಥ ಬಳಕೆದಾರ ಲಾಗ್-ಔಟ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವವರೆಗೆ ಅವಧಿ ಮುಗಿದಿದೆ</translation> <translation id="3973371701361892765">ಶೆಲ್ಫ್ ಅನ್ನು ಎಂದಿಗೂ ಸ್ವಯಂ-ಮರೆಮಾಡಬೇಡಿ</translation> <translation id="3984028218719007910">ಲಾಗ್ಔಟ್ ಆದ ನಂತರ ಸ್ಥಳೀಯ ಖಾತೆ ಡೇಟಾವನ್ನು <ph name="PRODUCT_OS_NAME" /> ಇರಿಸುತ್ತದೆಯೇ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. 'ನಿಜ' ಎಂದು ಹೊಂದಿಸಿದರೆ, ಶಾಶ್ವತ ಖಾತೆಗಳು <ph name="PRODUCT_OS_NAME" /> ನಿಂದ ಇರಿಸಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ಲಾಗ್ಔಟ್ನ ನಂತರ ಬಳಕೆದಾರ ಸೆಶನ್ನಿಂದ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ತಿರಸ್ಕರಿಸಲಾಗುವುದು. ಈ ನೀತಿಯನ್ನು 'ತಪ್ಪು' ಎಂದು ಹೊಂದಿಸಿದರೆ ಅಥವಾ ಕಾನ್ಫಿಗರ್ ಮಾಡದಿದ್ದರೆ, ಸಾಧನವು (ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾದ) ಸ್ಥಳೀಯ ಬಳಕೆದಾರ ಡೇಟಾವನ್ನು ಇರಿಸುತ್ತದೆ.</translation> +<translation id="398475542699441679">ಈ ಕಾರ್ಯನೀತಿಯು, ಪಾರಂಪರಿಕ ಬ್ರೌಸರ್ ಬೆಂಬಲವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕೇ ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ. + + ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ಹೊಂದಿಸದೇ ಬಿಟ್ಟಾಗ ಅಥವಾ ತಪ್ಪು ಎಂದು ಹೊಂದಿಸಿದಾಗ, ಗೊತ್ತುಪಡಿಸಿದ URL ಗಳನ್ನು ಪರ್ಯಾಯ ಬ್ರೌಸರ್ ಒಂದರಲ್ಲಿ ಪ್ರಾರಂಭಿಸಲು Chrome ಪ್ರಯತ್ನಿಸುವುದಿಲ್ಲ. + + ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ಸರಿ ಎಂದು ಹೊಂದಿಸಿದಾಗ, ಗೊತ್ತುಪಡಿಸಿದ URL ಗಳನ್ನು ಪರ್ಯಾಯ ಬ್ರೌಸರ್ನಲ್ಲಿ (ಉದಾ. Internet Explorer) ಪ್ರಾರಂಭಿಸಲು Chrome ಪ್ರಯತ್ನಿಸುತ್ತದೆ. <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />ಗುಂಪಿನಲ್ಲಿರುವ ಕಾರ್ಯನೀತಿಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿದೆ. + + ಈ ವೈಶಿಷ್ಟ್ಯವು <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />ಎಂಬ ವಿಸ್ತರಣೆಗೆ ಬದಲಿಯಾಗಿರುತ್ತದೆ. ಈ ವಿಸ್ತರಣೆಯ ಕಾನ್ಫಿಗರೇಶನ್ ಈ ವೈಶಿಷ್ಟ್ಯಕ್ಕೆ ವರ್ಗಾವಣೆಯಾಗುತ್ತದೆಯಾದರೂ, ಇದರ ಬದಲಿಗೆ Chrome ಕಾರ್ಯನೀತಿಗಳನ್ನು ಬಳಸಲು ಬಲವಾಗಿ ಸಲಹೆ ಮಾಡಲಾಗಿದೆ. ಇದು ಭವಿಷ್ಯದಲ್ಲಿ ಉತ್ತಮ ಹೊಂದಾಣಿಕೆಯನ್ನು ಖಾತ್ರಿಗೊಳಿಸುತ್ತದೆ.</translation> <translation id="3997519162482760140">SAML ಲಾಗಿನ್ ಪುಟಗಳಲ್ಲಿ ವೀಡಿಯೊ ಸರೆಹಿಡಿಯುವಿಕೆ ಸಾಧನಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಪೂರೈಸುವಂತಹ URL ಗಳು</translation> <translation id="4001275826058808087">Chrome OS ನೋಂದಣೆಯ ಮೂಲಕ ಕೊಡುಗೆಗಳನ್ನು ಮರುಪಡೆದುಕೊಳ್ಳಲು ಬಳಕೆದಾರರನ್ನು ಅನುಮತಿಸಬೇಕೆ ಬೇಡವೇ ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸಲು ಎಂಟರ್ಪ್ರೈಸ್ ಸಾಧನಗಳಿಗಾಗಿ IT ನಿರ್ವಹಣೆಗಳು ಈ ಫ್ಲ್ಯಾಗ್ ಬಳಸಬಹುದು. @@ -1600,6 +1613,7 @@ ಉದಾಹರಣೆಯ ಪ್ಯಾಟರ್ನ್ಗಳಿಗಾಗಿ https://www.chromium.org/developers/how-tos/chrome-frame-getting-started ಅನ್ನು ವೀಕ್ಷಿಸಿ.</translation> <translation id="467449052039111439">URLಗಳ ಪಟ್ಟಿಯನ್ನು ತೆರೆಯಿರಿ</translation> +<translation id="4674871290487541952">ವಿಸ್ತರಣಾ ಅಪ್ಡೇಟ್ಗಳು ಮತ್ತು ಇನ್ಸ್ಟಾಲ್ಗಳ ಸಲುವಾಗಿನ ಸಮಗ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸುವಾಗ ಅಸುರಕ್ಷಿತ ಆಲ್ಗಾರಿದಮ್ಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ</translation> <translation id="4680936297850947973">M68 ನಲ್ಲಿ ತಡೆಹಿಡಿಯಲಾಗಿದೆ. ಬದಲಿಗೆ DefaultPopupsSetting ಅನ್ನು ಬಳಸಿ. ಪೂರ್ಣ ವಿವರಣೆಗಾಗಿ, https://www.chromestatus.com/features/5675755719622656 ನೋಡಿ. @@ -2668,6 +2682,12 @@ <translation id="7123160381479171745">ಸಾಧನಕ್ಕೆ ಲಾಗಿನ್ ಮಾಡಲು ಅವಕಾಶವನ್ನು ನೀಡಿರುವಂತಹ ಬಳಕೆದಾರರ ಪಟ್ಟಿಯನ್ನು ವಿವರಿಸುತ್ತದೆ. <ph name="USER_WHITELIST_ENTRY_EXAMPLE" /> ನಂತಹ <ph name="USER_WHITELIST_ENTRY_FORMAT" /> ಸ್ವರೂಪದ ನಮೂದುಗಳಾಗಿವೆ. ಡೊಮೇನ್ನಲ್ಲಿ ನಿರಂಕುಶ ಬಳಕೆದಾರರನ್ನು ಅನುಮತಿಸಲು, <ph name="USER_WHITELIST_ENTRY_WILDCARD" /> ಫಾರ್ಮ್ನ ನಮೂದುಗಳನ್ನು ಬಳಸಿ. ಈ ನೀತಿಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡದೇ ಇದ್ದರೆ, ಯಾವ ಬಳಕೆದಾರರನ್ನು ಸೈನ್ ಇನ್ಗೆ ಅನುಮತಿಸಲಾಗಿದೆ ಎಂಬುದಕ್ಕೆ ಯಾವುದೇ ನಿರ್ಬಂಧಗಳಿರುವುದಿಲ್ಲ. ಹೊಸ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲು ಈಗಲೂ <ph name="DEVICE_ALLOW_NEW_USERS_POLICY_NAME" /> ನೀತಿಯನ್ನು ಸೂಕ್ತವಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗಿದೆ ಎಂಬುದನ್ನು ಗಮನದಲ್ಲಿರಿಸಿಕೊಳ್ಳಿ.</translation> +<translation id="7123266440503901785">ವಿಸ್ತರಣೆಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಇನ್ಸ್ಟಾಲ್ ಮಾಡುವುದು ಮತ್ತು ಅಪ್ಡೇಟ್ ಮಾಡುವುದನ್ನು <ph name="PRODUCT_NAME" />ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ. ಹಾಗಿದ್ದರೂ, Chrome ವೆಬ್ ಸ್ಟೋರ್ನಿಂದ ಹೊರಗಡೆ ಹೋಸ್ಟ್ ಮಾಡಲಾದ ಕೆಲವು ವಿಸ್ತರಣೆಗಳ ವಿಷಯವನ್ನು ಅಸುರಕ್ಷಿತ ಸಹಿ ಅಥವಾ SHA1 ನಂತಹ ಹ್ಯಾಶಿಂಗ್ ಆಲ್ಗಾರಿದಮ್ಗಳಿಂದ ಮಾತ್ರ ಸಂರಕ್ಷಿಸಬಹುದು. ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದಾಗ, ಅಂತಹ ವಿಸ್ತರಣೆಗಳ ನೂತನ ಇನ್ಸ್ಟಾಲ್ ಮಾಡುವಿಕೆಯನ್ನು ಮತ್ತು ಅವುಗಳಿಗಾಗಿನ ಅಪ್ಡೇಟ್ಗಳನ್ನು Chrome ಅನುಮತಿಸುವುದಿಲ್ಲ (ವಿಸ್ತರಣಾ ಡೆವಲಪರ್ಗಳು ಪ್ರಬಲ ಆಲ್ಗಾರಿದಮ್ಗಳೊಂದಿಗೆ ವಿಸ್ತರಣೆಯನ್ನು ಮರುನಿರ್ಮಾಣ ಮಾಡುವವರೆಗೂ). ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ, ಅಂತಹ ವಿಸ್ತರಣೆಗಳ ಸಲುವಾಗಿನ ಇನ್ಸ್ಟಾಲ್ ಮಾಡುವಿಕೆ ಮತ್ತು ಅಪ್ಡೇಟ್ಗಳನ್ನು ಅನುಮತಿಸಲಾಗುತ್ತದೆ. + + ಹೊಂದಿಸದೇ ಇದ್ದಾಗ, ಇದು ಸಕ್ರಿಯಗೊಳಿಸಿದ ವರ್ತನೆಗೆ ಡೀಫಾಲ್ಟ್ ಆಗುತ್ತದೆ. + ಹೊಂದಿಸದೇ ಇದ್ದಾಗ, <ph name="PRODUCT_NAME" />75 ಮತ್ತು ನಂತರದ ಆವೃತ್ತಿಗಳಲ್ಲಿ ಇದು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ ವರ್ತನೆಗೆ ಡೀಫಾಲ್ಟ್ ಆಗುತ್ತದೆ. + + <ph name="PRODUCT_NAME" />77 ಮತ್ತು ನಂತರದ ಆವೃತ್ತಿಗಳಲ್ಲಿ ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ನಿರ್ಲಕ್ಷಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ನಿಷ್ಕ್ರಿಯವೆಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ.</translation> <translation id="7126716959063786004">ಕಾರ್ಯ ನಿರ್ವಾಹಕದಲ್ಲಿ ಕೊನೆಗೊಳ್ಳುವ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation> <translation id="7127892035367404455">ಟಾರ್ಗೆಟ್ ಆವೃತ್ತಿಗೆ ಹಿಂತಿರುಗಿ</translation> <translation id="7128918109610518786">ಲಾಂಚರ್ ಪಟ್ಟಿಯಲ್ಲಿ ಪಿನ್ ಮಾಡಿದ ಅಪ್ಲಿಕೇಶನ್ನಂತೆ ಅಪ್ಲಿಕೇಶನ್ ಗುರುತಿಸುವಿಕೆಗಳನ್ನು <ph name="PRODUCT_OS_NAME" /> ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ.
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb index ae169c67..a3633ef 100644 --- a/components/policy/resources/policy_templates_ko.xtb +++ b/components/policy/resources/policy_templates_ko.xtb
@@ -805,6 +805,11 @@ 이 설정을 사용 중지하고 발신 UDP 연결이 방화벽에 의해 필터링되면 컴퓨터는 로컬 네트워크 내에 있는 클라이언트 컴퓨터의 연결만 허용합니다. 이 정책을 설정하지 않은 상태로 두면 설정이 사용됩니다.</translation> +<translation id="2813281962735757923">이 정책은 <ph name="PRODUCT_OS_NAME" /> 기가 업데이트를 자동으로 확인하도록 허용되지 않는 기간을 관리할 수 있습니다. + 정책이 비어 있지 않은 기간 목록으로 설정된 경우: + 기기에서 지정된 기간 동안 업데이트를 자동으로 확인할 수 없게 됩니다. 롤백이 필요하거나 최소 <ph name="PRODUCT_OS_NAME" /> 버전 미만을 실행하는 기기는 잠재적인 보안 문제로 인해 이 정책의 영향을 받지 않습니다. 또한 이 정책은 사용자 또는 관리자가 요청한 업데이트 확인을 차단하지 않습니다. + 정책이 설정되지 않거나 기간이 포함되지 않은 경우: + 이 정책으로 자동 업데이트 확인이 차단되지 않지만 다른 정책에 의해 차단될 수 있습니다. 이 기능은 자동 런치 키오스크로 구성된 Chrome 기기에서만 사용 설정됩니다. 다른 기기는 이 정책에 따른 제한을 받지 않습니다.</translation> <translation id="2823870601012066791"><ph name="PRODUCT_OS_NAME" /> 클라이언트의 Windows 레지스트리 위치:</translation> <translation id="2824715612115726353">시크릿 모드 사용</translation> <translation id="2838830882081735096">데이터 이전 및 ARC 허용 안함</translation> @@ -1102,6 +1107,7 @@ <translation id="3547954654003013442">프록시 설정</translation> <translation id="355118380775352753">대체 브라우저에서 열리는 웹사이트</translation> <translation id="3577251398714997599">방해가 되는 광고가 포함된 사이트의 광고 설정</translation> +<translation id="3591527072193107424">이전 브라우저 지원 기능을 사용 설정합니다.</translation> <translation id="3591584750136265240">로그인 인증 동작 설정</translation> <translation id="3624171042292187668"> IsolateOrigins 정책 설정을 확인하고, 격리하려는 사이트 목록이 포함된 IsolateOrigins를 사용하여 사이트를 격리하는 동시에 사용자에게 미치는 영향을 제한하는 것이 좋습니다. SitePerProcess 설정을 사용하면 모든 사이트가 격리됩니다. @@ -1290,6 +1296,13 @@ <translation id="3965339130942650562">유휴 상태인 사용자의 로그아웃이 실행되기까지 시간 제한</translation> <translation id="3973371701361892765">실행기를 자동으로 숨기지 않음</translation> <translation id="3984028218719007910"><ph name="PRODUCT_OS_NAME" />이(가) 로그아웃 뒤에 로컬 계정 데이터를 유지할 지를 결정합니다. true로 설정하면, <ph name="PRODUCT_OS_NAME" />이(가) 유지하는 영구 계정이 없으며 사용자 세션의 모든 데이터가 로그아웃 뒤에 삭제됩니다. 이 정책이 false로 설정되거나 구성되지 않으면 기기는 암호화된 로컬 사용자 데이터를 유지합니다.</translation> +<translation id="398475542699441679">이 정책은 이전 브라우저 지원 기능 사용 여부를 제어합니다. + + 이 정책을 설정하지 않거나 정책이 false로 설정되면 Chrome에서 지정된 URL을 다른 브라우저에서 열려고 시도하지 않습니다. + + 이 정책이 true로 설정되면 Chrome에서 일부 URL을 다른 브라우저(예: Internet Explorer)에서 열려고 시도합니다. 이 기능은 <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> 그룹의 정책을 사용해 구성됩니다. + + 이 기능은 <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> 확장 프로그램을 대체합니다. 확장 프로그램의 구성이 이 기능으로 전달되지만, 확장 프로그램 대신 Chrome 정책을 사용하는 것이 좋습니다. 이를 통해 앞으로 호환성이 더욱 향상됩니다.</translation> <translation id="3997519162482760140">SAML 로그인 페이지에서 동영상 캡처 기기에 액세스할 수 있는 권한이 부여되는 URL입니다.</translation> <translation id="4001275826058808087">기업 기기를 담당하는 IT 관리자는 이 플래그를 사용하여 사용자가 Chrome OS 등록을 통해 쿠폰을 사용하도록 할지 여부를 제어할 수 있습니다. @@ -1541,6 +1554,7 @@ 예제 패턴은 https://www.chromium.org/developers/how-tos/chrome-frame-getting-started 페이지를 참조하세요.</translation> <translation id="467449052039111439">URL 목록 열기</translation> +<translation id="4674871290487541952">확장 프로그램 업데이트 및 설치 시 무결성 확인에서 보안에 취약한 알고리즘을 허용합니다.</translation> <translation id="4680936297850947973">M68에서 지원 중단되었습니다. 대신 DefaultPopupsSetting을 사용하세요. 자세한 내용은 https://www.chromestatus.com/features/5675755719622656 페이지를 참조하세요. @@ -2585,6 +2599,12 @@ 이 정책을 False로 설정하면 백그라운드 모드가 사용 중지되며 사용자가 브라우저 설정에서 컨트롤할 수 없습니다. 이 정책을 설정하지 않으면 백그라운드 모드가 처음에는 사용 중지되며 사용자가 브라우저 설정에서 컨트롤할 수 있습니다.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" />은(는) 보안 업데이트 및 확장 프로그램 설치 기능을 제공합니다. 하지만 Chrome 웹 스토어 외부에 호스팅된 일부 확장 프로그램의 콘텐츠는 보안이 취약한 서명이나 SHA1과 같은 해싱 알고리즘만 사용하여 보호될 수 있습니다. 이 정책이 사용 중지되면 확장 프로그램 개발자가 강력한 알고리즘을 사용해 이러한 확장 프로그램을 다시 제작할 때까지 Chrome에서 이러한 확장 프로그램의 설치 및 업데이트가 허용되지 않습니다. 이 정책이 사용 설정되면 이러한 확장 프로그램의 설치 및 업데이트가 허용됩니다. + + 이 정책이 사용 설정되지 않으면 기본적으로 사용하도록 설정됩니다. + <ph name="PRODUCT_NAME" /> 75부터 이 정책이 사용 설정되지 않으면 기본적으로 사용하지 않도록 설정됩니다. + + <ph name="PRODUCT_NAME" /> 77부터 이 정책은 무시되며 사용 중지된 것으로 처리됩니다.</translation> <translation id="7126716959063786004">작업 관리자의 종료 프로세스 사용</translation> <translation id="7127892035367404455">대상 버전으로 롤백</translation> <translation id="7128918109610518786"><ph name="PRODUCT_OS_NAME" />이(가) 런처 바에 고정된 앱으로 표시하는 애플리케이션 식별자를 열거합니다.
diff --git a/components/policy/resources/policy_templates_lv.xtb b/components/policy/resources/policy_templates_lv.xtb index 5b3bc0b..f85e9e4 100644 --- a/components/policy/resources/policy_templates_lv.xtb +++ b/components/policy/resources/policy_templates_lv.xtb
@@ -797,6 +797,11 @@ Ja šis iestatījums ir atspējots un ugunsmūris filtrē izejošos UDP savienojumus, ierīce atļaus savienojumus tikai no lokālā tīkla klientu ierīcēm. Ja šī politika netiek iestatīta, iestatījums tiek iespējots.</translation> +<translation id="2813281962735757923">Šī politika nosaka, kuros laika periodos <ph name="PRODUCT_OS_NAME" /> ierīce nedrīkst automātiski pārbaudīt, vai ir pieejami atjauninājumi. + Ja šī politika ir iestatīta, norādot laika intervālu sarakstu, kas nav tukšs, tad ir spēkā tālāk norādītie iestatījumi. + Norādītajos laika intervālos ierīces nevar automātiski pārbaudīt, vai ir pieejami atjauninājumi. Potenciālu drošības problēmu dēļ šī politika neietekmē ierīces, kurām nepieciešama atrite vai kuru <ph name="PRODUCT_OS_NAME" /> versija ir vecāka nekā minimālā pieļaujamā versija. Turklāt ar šo politiku netiks bloķēta atjauninājumu meklēšana, ko pieprasīs lietotāji vai administratori. + Ja šī politika nav iestatīta vai tajā nav norādīti laika intervāli, ir spēkā šādi iestatījumi. + Šī politika nebloķēs automātisku atjauninājumu meklēšanu, taču citas politikas var meklēšanu bloķēt. Šī funkcija ir pieejama tikai tādās Chrome ierīcēs, kas ir konfigurētas kā automātiskas palaišanas kioski. Šī politika neierobežos citas ierīces.</translation> <translation id="2823870601012066791"><ph name="PRODUCT_OS_NAME" /> klientu Windows reģistra vieta:</translation> <translation id="2824715612115726353">Iespējo inkognito režīmu</translation> <translation id="2838830882081735096">Aizliegt datu migrēšanu un ARC</translation> @@ -1091,6 +1096,7 @@ <translation id="3547954654003013442">Starpniekservera iestatījumi</translation> <translation id="355118380775352753">Vietnes, kas atveramas citā pārlūkprogrammā</translation> <translation id="3577251398714997599">Reklāmu iestatījumi vietnēm, kurās tiek rādītas traucējošas reklāmas</translation> +<translation id="3591527072193107424">Iespējot funkciju Mantoto pārlūku atbalsts.</translation> <translation id="3591584750136265240">Pieteikšanās autentifikācijas darbības konfigurēšana</translation> <translation id="3624171042292187668"> Lai gūtu vislabākos rezultātus, izolētu tikai vietnes, kuras vēlaties izolēt, un ierobežotu ietekmi uz lietotājiem, ieteicams izmantot “IsolateOrigins” politikas iestatījumu. Izmantojot politiku “SitePerProcess”, tiek izolētas visas vietnes. @@ -1276,6 +1282,13 @@ <translation id="3965339130942650562">Noildze, līdz dīkstāves lietotāja atteikšanās tiek izpildīta</translation> <translation id="3973371701361892765">Nekad automātiski neslēpt plauktu</translation> <translation id="3984028218719007910">Nosaka, vai produkts <ph name="PRODUCT_OS_NAME" /> saglabā lokālā konta datus pēc atteikšanās. Ja politika iestatīta uz Patiesa, produkts <ph name="PRODUCT_OS_NAME" /> nesaglabā nevienu pastāvīgo kontu un visi dati no lietotāja sesijas tiek atmesti pēc atteikšanās. Ja politika ir iestatīta uz Aplama vai nav konfigurēta, ierīce, iespējams, saglabā (šifrētos) lokālos lietotāja datus.</translation> +<translation id="398475542699441679">Šī politika nosaka, vai jāiespējo mantoto pārlūku atbalsts. + + Ja šī politika nav iestatīta vai tai ir iestatīta vērtība "False", pārlūkā Chrome netiek mēģināts atvērt attiecīgi apzīmētus URL citā pārlūkā. + + Ja šai politikai ir iestatīta vērtība "True", pārlūkā Chrome tiek mēģināts atvērt dažus URL citā pārlūkā (piemēram, pārlūkā Internet Explorer). Šī funkcija tiek konfigurēta, izmantojot grupas “<ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />” politikas. + + Šī funkcija aizstāj paplašinājumu <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. Paplašinājuma konfigurācija tiks pārnesta uz šo funkciju, taču ļoti ieteicams šīs konfigurācijas vietā izmantot Chrome politikas. Tā turpmāk tiks nodrošināta labāka saderība.</translation> <translation id="3997519162482760140">Vietrāži URL, kuriem tiks nodrošināta piekļuve video tveršanas ierīcēm SAML pieteikšanās lapās.</translation> <translation id="4001275826058808087">IT administratori var izmantot šo atzīmi uzņēmuma ierīcēs, lai noteiktu, vai ļaut lietotājiem izpirkt piedāvājumus, izmantojot operētājsistēmas Chrome OS reģistrāciju. @@ -1526,6 +1539,7 @@ Šablonu piemērus skatiet šeit: https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Atvērt vietrāžu URL sarakstu</translation> +<translation id="4674871290487541952">Paplašinājumu atjaunināšanas un instalēšanas integritātes pārbaudēs atļaut nedrošus algoritmus</translation> <translation id="4680936297850947973">Novecojis versijā M68. Tā vietā izmantojiet iestatījumu DefaultPopupsSetting. Detalizēts skaidrojums ir sniegts vietnē https://www.chromestatus.com/features/5675755719622656. @@ -2559,6 +2573,12 @@ Ja šai politikai ir iestatīta vērtība Nepatiesa, fona režīms ir atspējots un lietotājs var to kontrolēt pārlūka iestatījumos. Ja šī politika nav iestatīta, fona režīms ir sākotnēji atspējots un lietotājs var to kontrolēt pārlūka iestatījumos.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> sniedz iespēju droši atjaunināt un instalēt paplašinājumus. Tomēr dažos paplašinājumos, kas netiek viesoti Chrome interneta veikalā, saturs var būt aizsargāts tikai ar nedrošiem parakstīšanas vai jaukšanas algoritmiem, piemēram, SHA1. Ja šī politika ir atspējota, pārlūkā Chrome netiek atļauts instalēt un atjaunināt šādus paplašinājumus (līdz paplašinājumu izstrādātāji pārveido tos, uzlabojot algoritmus). Ja šī politika ir iespējota, tiek atļauts instalēt un atjaunināt šādus paplašinājumus. + + Ja politikai nav iestatīta vērtība, pēc noklusējuma tiek lietota iespējošanas izturēšanās. + Sākot no versijas <ph name="PRODUCT_NAME" /> 75, ja vērtība nav iestatīta, tiek lietota atspējošanas izturēšanās. + + Sākot no versijas <ph name="PRODUCT_NAME" /> 77, šī politika netiek ievērota un tiek uzskatīta par atspējotu.</translation> <translation id="7126716959063786004">Procesu beigšanas iespējošana uzdevumu pārvaldniekā</translation> <translation id="7127892035367404455">Atritināšana uz mērķa versiju</translation> <translation id="7128918109610518786">Norāda lietojumprogrammu identifikatorus, ko operētājsistēma <ph name="PRODUCT_OS_NAME" /> palaišanas joslā rāda kā piespraustās lietotnes.
diff --git a/components/policy/resources/policy_templates_ml.xtb b/components/policy/resources/policy_templates_ml.xtb index 1a159fb5..ee409c57 100644 --- a/components/policy/resources/policy_templates_ml.xtb +++ b/components/policy/resources/policy_templates_ml.xtb
@@ -371,8 +371,8 @@ Internet Explorer-ന്റെ <ph name="IEEM_SITELIST_POLICY" /> നയത്തെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്: https://docs.microsoft.com/internet-explorer/ie11-deploy-guide/what-is-enterprise-mode</translation> <translation id="1839060937202387559">ഹാർഡ്വെയറിന്റെ സ്ഥിതിവിവരക്കണക്കുകൾ, സ്റ്റോറേജ് ഉപകരണങ്ങൾക്കുള്ള ഐഡന്റിഫയറുകൾ എന്നിവ റിപ്പോർട്ട് ചെയ്യുക. - നയം 'തെറ്റ്' എന്ന് സജ്ജീകരിച്ചാൽ, സ്ഥിതിവിവരക്കണക്കുകൾ റിപ്പോർട്ട് ചെയ്യപ്പെടില്ല. - 'ശരി' എന്ന് സജ്ജീകരിക്കുകയോ സജ്ജീകരിക്കാതെ വിടുകയോ ചെയ്താൽ, സ്ഥിതിവിവരക്കണക്കുകൾ റിപ്പോർട്ട് ചെയ്യപ്പെടും.</translation> + നയം തെറ്റ് എന്ന് സജ്ജീകരിച്ചാൽ, സ്ഥിതിവിവരക്കണക്കുകൾ റിപ്പോർട്ട് ചെയ്യപ്പെടില്ല. + ശരി എന്ന് സജ്ജീകരിക്കുകയോ സജ്ജീകരിക്കാതെ വിടുകയോ ചെയ്താൽ, സ്ഥിതിവിവരക്കണക്കുകൾ റിപ്പോർട്ട് ചെയ്യപ്പെടും.</translation> <translation id="1843117931376765605">ഉപയോക്തൃ നയത്തിനായുള്ള പുതുക്കിയ നിരക്ക്</translation> <translation id="1844620919405873871">അതിവേഗ അൺലോക്കുമായി ബന്ധപ്പെട്ട നയങ്ങളെ കോൺഫിഗർ ചെയ്യുന്നു.</translation> <translation id="1847960418907100918">POST ഉപയോഗിച്ച് ഒരു തൽക്ഷണ തിരയൽ നടത്തുമ്പോൾ ഉപയോഗിക്കുന്ന പാരാമീറ്ററുകൾ വ്യക്തമാക്കുന്നു. ഇതിൽ കോമയാൽ വേർതിരിച്ച പേര്/മൂല്യം ജോടികൾ അടങ്ങിയിരിക്കുന്നു. മുകളിലെ ഉദാഹരണത്തിലുള്ളതുപോലെ {searchTerms} മൂല്യം ഒരു ടെംപ്ലേറ്റ് പാരാമീറ്റർ ആണെങ്കിൽ യഥാർത്ഥ തിരയൽ പദങ്ങളുടെ ഡാറ്റ അതിനെ മാറ്റിസ്ഥാപിക്കും. @@ -869,6 +869,11 @@ ഈ സജ്ജീകരണം പ്രവർത്തനരഹിതമാക്കി ഔട്ട്ഗോയിംഗ് UDP സെർവറുകളെ ഫയർവാളുകൾ ഫിൽട്ടർ ചെയ്തിരിക്കുന്നുവെങ്കിൽ, തുടർന്ന് പ്രാദേശിക നെറ്റ്വർക്കിലെ ക്ലയന്റ് മെഷീനുകളിൽ നിന്നുള്ള കണക്ഷനുകൾ മാത്രം ഈ മെഷീൻ അനുവദിക്കും. ഈ നയം സജ്ജീകരിക്കാത്ത നിലയിലാണെങ്കിൽ, സജ്ജീകരണം പ്രവർത്തനക്ഷമമാക്കും.</translation> +<translation id="2813281962735757923"><ph name="PRODUCT_OS_NAME" /> ഉപകരണത്തിന്, അപ്ഡേറ്റുകൾക്കായി സ്വയമേവ പരിശോധിക്കാൻ അനുവാദമില്ലാത്ത സമയ പരിധി ഈ നയം നിയന്ത്രിക്കുന്നു. + ഈ നയം ശൂന്യമല്ലാത്ത സമയപരിധികളുടെ ലിസ്റ്റായി സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ: + നിർദ്ദിഷ്ട സമയപരിധികൾക്കുള്ളിൽ സ്വയമേവ അപ്ഡേറ്റുകൾക്കായി പരിശോധന നടത്താൻ ഉപകരണങ്ങൾക്കാവില്ല. സുരക്ഷാ പ്രശ്നങ്ങൾക്കുള്ള സാധ്യത കാരണം, തിരികെ പോകേണ്ടത് ആവശ്യമായതോ കുറഞ്ഞ <ph name="PRODUCT_OS_NAME" /> പതിപ്പിലും പഴയതോ ആയ ഉപകരണങ്ങളെ ഈ നയം ബാധിക്കില്ല. കൂടാതെ, ഉപയോക്താക്കളോ അഡ്മിനിസ്ട്രേറ്റർമാരോ അഭ്യർത്ഥിക്കുന്ന അപ്ഡേറ്റ് പരിശോധനകൾ ഈ നയം ബ്ലോക്ക് ചെയ്യില്ല. + ഈ നയം സജ്ജീകരിച്ചിട്ടില്ലെങ്കിലോ സമയ പരിധികൾ ഉൾപ്പെടുന്നില്ലെങ്കിലോ: + സ്വയമേവ ഉള്ള ഒരു അപ്ഡേറ്റ് പരിശോധനകളും ഈ നയം ബ്ലോക്ക് ചെയ്യില്ല, എന്നാൽ മറ്റ് നയങ്ങൾ ഇവയെ ബ്ലോക്ക് ചെയ്തേക്കാം. സ്വയമേവ ആരംഭിക്കുന്ന കിയോസ്ക്കുകളായി കോൺഫിഗർ ചെയ്ത Chrome ഉപകരണങ്ങളിൽ മാത്രമേ ഈ ഫീച്ചർ പ്രവർത്തനക്ഷമമാകൂ. മറ്റ് ഉപകരണങ്ങൾ ഈ നയത്തിനാൽ നിയന്ത്രിതമായിരിക്കില്ല.</translation> <translation id="2823870601012066791"><ph name="PRODUCT_OS_NAME" /> ക്ലയന്റുകൾക്കായുള്ള Windows രജിസ്ട്രി ലൊക്കേഷൻ:</translation> <translation id="2824715612115726353">വേഷപ്രച്ഛന്ന മോഡ് പ്രാപ്തമാക്കുക</translation> <translation id="283695852388224413">നയം സജ്ജമാക്കുകയാണെങ്കിൽ, കോൺഫിഗർ ചെയ്ത മാക്സിമൽ പിൻ ദൈർഘ്യം നടപ്പിൽ വരും. പൂജ്യമോ അതിൽ കുറവോ പരമാവധി വലുപ്പമില്ല എന്ന് സൂചിപ്പിക്കുന്നു; അത്തരം സാഹചര്യത്തിൽ ഉപയോക്താവിന് താൽപ്പര്യമുള്ളയത്രയും ദൈർഘ്യമുള്ള പിൻ സജ്ജമാക്കാം. ഈ ക്രമീകരണം <ph name="PIN_UNLOCK_MINIMUM_LENGTH_POLICY_NAME" />-ൽ കുറവും പൂജ്യത്തിൽ കൂടുതലുമാണെങ്കിൽ, പരമാവധി ദൈർഘ്യം ഏറ്റവും കുറഞ്ഞ ദൈർഘ്യത്തിന് തുല്യമായിരിക്കും. @@ -1197,6 +1202,7 @@ <translation id="3547954654003013442">പ്രോക്സി ക്രമീകരണം</translation> <translation id="355118380775352753">ഇതര ബ്രൗസറിൽ തുറക്കാനുള്ള വെബ്സൈറ്റുകൾ</translation> <translation id="3577251398714997599">തടസ്സമുണ്ടാക്കുന്ന പരസ്യങ്ങളുള്ള സൈറ്റുകൾക്കുള്ള പരസ്യ ക്രമീകരണം</translation> +<translation id="3591527072193107424">പഴയ ബ്രൗസർ പിന്തുണാ ഫീച്ചർ പ്രവർത്തനക്ഷമമാക്കുക.</translation> <translation id="3591584750136265240">ലോഗിൻ പരിശോധിച്ചുറപ്പിക്കൽ പ്രവർത്തന രീതി കോൺഫിഗർ ചെയ്യുക</translation> <translation id="3624171042292187668"> മാറ്റി നിർത്തേണ്ട സൈറ്റുകളുടെ ലിസ്റ്റിനൊപ്പം IsolateOrigins ഉപയോഗിക്കുന്നതിലൂടെ, ഐസൊലേഷൻ, ഉപയോക്താക്കൾക്ക് ഉണ്ടാകുന്ന പരിണിതഫലം പരിമിതപ്പെടുത്തൽ എന്നിവയുടെ പ്രയോജനം പരമാവധി ഉപയോഗപ്പെടുത്താനായി, നിങ്ങൾ IsolateOrigins നയ ക്രമീകരണം പരിശോധിക്കേണ്ടതുണ്ട്. SitePerProcess എന്ന ഈ ക്രമീകരണം എല്ലാ സൈറ്റുകളെയും മാറ്റി നിർത്തുന്നു. @@ -1394,6 +1400,13 @@ <translation id="3965339130942650562">നിഷ്ക്രിയ ഉപയോക്താവിന്റെ ലോഗ്-ഔട്ട് നിർവ്വഹിക്കുന്നതുവരെയുള്ള സമയപരിധി</translation> <translation id="3973371701361892765">ഷെൽഫ് ഒരിക്കലും സ്വയമേവ മറയ്ക്കരുത്</translation> <translation id="3984028218719007910">ലോഗ്ഔട്ടിന് ശേഷം പ്രാദേശിക അക്കൗണ്ട് ഡാറ്റയെ <ph name="PRODUCT_OS_NAME" /> സൂക്ഷിക്കണോ എന്നത് നിർണ്ണയിക്കുന്നു. ട്രൂ എന്നായി സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, നിലനിൽക്കുന്ന അക്കൗണ്ടുകളൊന്നും <ph name="PRODUCT_OS_NAME" /> സൂക്ഷിക്കില്ല കൂടാതെ ലോഗ്ഔട്ടിന് ശേഷം ഉപയോക്തൃ സെഷനിൽ നിന്നുള്ള എല്ലാ ഡാറ്റയും നിരസിക്കപ്പെടുകയും ചെയ്യും. ഈ നയം ഫാൾസ് എന്നായി സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിലോ കോൺഫിഗർ ചെയ്തിട്ടില്ലെങ്കിലോ, ഉപകരണം പ്രാദേശിക ഉപയോക്തൃ ഡാറ്റ സൂക്ഷിച്ചേക്കാം (എൻക്രിപ്റ്റുചെയ്തത്).</translation> +<translation id="398475542699441679">പഴയ ബ്രൗസർ പിന്തുണ പ്രവർത്തനക്ഷമമാക്കണോയെന്ന് ഈ നയം നിയന്ത്രിക്കുന്നു. + + ഈ നയം സജ്ജീകരിക്കാതെ വിടുകയോ 'തെറ്റ്' എന്ന് സജ്ജീകരിക്കുകയോ ചെയ്യുമ്പോൾ, നിയുക്ത URL-കൾ ഇതര ബ്രൗസറിൽ ആരംഭിക്കാൻ Chrome ശ്രമിക്കില്ല. + + ഈ നയം 'ശരി' എന്ന് സജ്ജീകരിക്കുമ്പോൾ, ഇതര ബ്രൗസറിൽ ചില URL-കൾ ആരംഭിക്കാൻ Chrome ശ്രമിക്കും (Internet Explorer പോലുള്ള). <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> ഗ്രൂപ്പിലെ നയങ്ങൾ ഉപയോഗിച്ച് ഈ ഫീച്ചർ കോൺഫിഗർ ചെയ്യുന്നു. + + ഈ ഫീച്ചർ, <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> വിപുലീകരണത്തിന് പകരമുള്ളതാണ്. വിപുലീകരണത്തിൽ നിന്നുള്ള കോൺഫിഗറേഷൻ ഈ ഫീച്ചറിലേക്ക് വ്യാപിപ്പിക്കുമെങ്കിലും, പകരം Chrome നയങ്ങൾ ഉപയോഗിക്കാൻ ഇത് കർശനമായി ശുപാർശചെയ്യുന്നു. ഇത് ഭാവിയിൽ മികച്ച അനുയോജ്യത ഉറപ്പാക്കുന്നു.</translation> <translation id="3997519162482760140">SAML ലോഗിൻ പേജുകളിലെ വീഡിയോ ക്യാപ്ച്ചർ ഉപകരണങ്ങളിലേക്ക് ആക്സസ്സ് ലഭിക്കുന്ന URL-കൾ</translation> <translation id="4001275826058808087">Chrome OS രജിസ്ട്രേഷൻ മുഖേന ഓഫറുകൾ വീണ്ടെടുക്കാൻ ഉപയോക്താക്കളെ അനുവദിക്കണോയെന്നത് നിയന്ത്രിക്കാൻ എന്റർപ്രൈസ് ഉപകരണങ്ങൾക്കായുള്ള IT അഡ്മിനുകൾക്ക് ഈ ഫ്ലാഗ് ഉപയോഗിക്കാനാകും. @@ -1588,7 +1601,7 @@ <translation id="443665821428652897">ബ്രൗസർ ഷട്ട് ഡൗൺ ചെയ്യുമ്പോൾ സൈറ്റ് ഡാറ്റ മായ്ക്കുക (ഒഴിവാക്കിയത്)</translation> <translation id="4439132805807595336">PluginVm റൺ ചെയ്യാൻ ഈ ഉപകരണം പ്രവർത്തനക്ഷമമാക്കുക. - ഈ നയം 'തെറ്റ്' എന്ന് സജ്ജീകരിക്കുകയോ സജ്ജീകരിക്കാതെ വിടുകയോ ചെയ്താൽ, ഉപകരണത്തിനായി <ph name="PLUGIN_VM_NAME" /> പ്രവർത്തനക്ഷമമാക്കില്ല. ഈ നയം 'ശരി' എന്ന് സജ്ജീകരിച്ചാൽ, മറ്റ് ക്രമീകരണം ഇത് അനുവദിക്കുന്നിടത്തോളം ഉപകരണത്തിനായി <ph name="PLUGIN_VM_NAME" /> പ്രവർത്തനക്ഷമമായിരിക്കും. റൺ ചെയ്യാൻ അനുവദിക്കുന്നതിന്, <ph name="PLUGIN_VM_ALLOWED_POLICY_NAME" /> 'ശരി' എന്നതായും <ph name="PLUGIN_VM_LICENSE_KEY_POLICY_NAME" />, <ph name="PLUGIN_VM_IMAGE_POLICY_NAME" /> എന്നിവ <ph name="PLUGIN_VM_NAME" /> എന്നതിനായും സജ്ജീകരിക്കേണ്ടതുണ്ട്.</translation> + ഈ നയം തെറ്റ് എന്ന് സജ്ജീകരിക്കുകയോ സജ്ജീകരിക്കാതെ വിടുകയോ ചെയ്താൽ, ഉപകരണത്തിനായി <ph name="PLUGIN_VM_NAME" /> പ്രവർത്തനക്ഷമമാക്കില്ല. ഈ നയം ശരി എന്ന് സജ്ജീകരിച്ചാൽ, മറ്റ് ക്രമീകരണം ഇത് അനുവദിക്കുന്നിടത്തോളം ഉപകരണത്തിനായി <ph name="PLUGIN_VM_NAME" /> പ്രവർത്തനക്ഷമമായിരിക്കും. റൺ ചെയ്യാൻ അനുവദിക്കുന്നതിന്, <ph name="PLUGIN_VM_ALLOWED_POLICY_NAME" /> ശരി എന്നതായും <ph name="PLUGIN_VM_LICENSE_KEY_POLICY_NAME" />, <ph name="PLUGIN_VM_IMAGE_POLICY_NAME" /> എന്നിവ <ph name="PLUGIN_VM_NAME" /> എന്നതിനായും സജ്ജീകരിക്കേണ്ടതുണ്ട്.</translation> <translation id="4439336120285389675">താൽക്കാലികമായി വീണ്ടും പ്രവർത്തനക്ഷമമാക്കുന്നതിന്, ഒഴിവാക്കിയ വെബ് പ്ലാറ്റ്ഫോം സവിശേഷതകളുടെ ഒരു ലിസ്റ്റ് വ്യക്തമാക്കുക. ഈ നയം, ഒഴിവാക്കിയ വെബ് പ്ലാറ്റ്ഫോം സവിശേഷതകൾ നിശ്ചിത സമയത്തേയ്ക്ക് വീണ്ടും പ്രവർത്തനക്ഷമമാക്കാനുള്ള കഴിവ് അഡ്മിനിസ്ട്രേറ്റർമാർക്ക് നൽകുന്നു. ഒരു സ്ട്രിംഗ് ടാഗ് ഉപയോഗിച്ച് ഫീച്ചറുകളെ തിരിച്ചറിയുന്നു, ഒപ്പം ഈ നയം വ്യക്തമാക്കിയിരിക്കുന്ന ലിസ്റ്റിൽ ഉൾപ്പെട്ടിരിക്കുന്ന ടാഗുകളുമായി ബന്ധപ്പെട്ട ഫീച്ചറുകളെ വീണ്ടും പ്രവർത്തനക്ഷമമാക്കും.ജ്യമായ സവിശേഷതകളും വീണ്ടും പ്രവർത്തനക്ഷമമാക്കപ്പെടും. @@ -1691,6 +1704,7 @@ ഉദാഹരണ പാറ്റേണുകൾക്കായി, https://www.chromium.org/developers/how-tos/chrome-frame-getting-started കാണുക.</translation> <translation id="467449052039111439">URL-കളുടെ ഒരു ലിസ്റ്റ് തുറക്കുക</translation> +<translation id="4674871290487541952">വിപുലീകരണ അപ്ഡേറ്റുകളിലെയും ഇൻസ്റ്റാളുകളിലെയും സുരക്ഷാ പരിശോധനകൾക്കായി സുരക്ഷിതമല്ലാത്ത അൽഗരിതങ്ങളെ അനുവദിക്കുക</translation> <translation id="4680936297850947973">M68-ൽ അവസാനിപ്പിച്ചിരിക്കുന്നു, പകരം DefaultPopupsSetting ഉപയോഗിക്കുക. സമ്പൂർണ വിശദീകരണത്തിനായി, https://www.chromestatus.com/features/5675755719622656 കാണുക. @@ -2797,6 +2811,12 @@ <translation id="7123160381479171745">ഉപകരണത്തിൽ ലോഗിൻ ചെയ്യാൻ അനുമതിയുള്ള ഉപയോക്താക്കളുടെ ലിസ്റ്റ് നിർവചിക്കുന്നു. <ph name="USER_WHITELIST_ENTRY_FORMAT" /> ഫോമിലെ എൻട്രികൾ <ph name="USER_WHITELIST_ENTRY_EXAMPLE" /> പോലുള്ളതാണ്. ഒരു ഡൊമെയ്നിൽ അനിയന്ത്രിതമായി ഉപയോക്താക്കളെ അനുവദിക്കുന്നതിന്, <ph name="USER_WHITELIST_ENTRY_WILDCARD" /> ഫോം എൻട്രികൾ ഉപയോഗിക്കുക. ഈ നയം കോൺഫിഗർ ചെയ്തിട്ടില്ലെങ്കിൽ, സൈൻ ഇൻ ചെയ്യുന്നതിന് ഏതുതരം ഉപയോക്താക്കളെയാണ് അനുവദിച്ചിരിക്കുന്നത് എന്നതിൽ നിയന്ത്രണങ്ങളൊന്നും ഉണ്ടാകില്ല. പുതിയ ഉപയോക്താക്കളെ സൃഷ്ടിക്കുന്നതിനായി ഇപ്പോഴും <ph name="DEVICE_ALLOW_NEW_USERS_POLICY_NAME" /> നയം ഉചിതമായി കോൺഫിഗർ ചെയ്യേണ്ടതുണ്ടെന്ന കാര്യം ശ്രദ്ധിക്കുക.</translation> +<translation id="7123266440503901785">വിപുലീകരണങ്ങളുടെ സുരക്ഷിതമായ അപ്ഡേറ്റും ഇൻസ്റ്റലേഷനും <ph name="PRODUCT_NAME" /> നൽകുന്നു. എന്നിരുന്നാലും, Chrome വെബ് സ്റ്റോറിന് പുറത്ത് ഹോസ്റ്റ് ചെയ്തിരിക്കുന്ന ചില വിപുലീകരണങ്ങളുടെ ഉള്ളടക്കം, സുരക്ഷിതമല്ലാത്ത സൈൻ ഇൻ ചെയ്യൽ അല്ലെങ്കിൽ SHA1 പോലുള്ള ഹാഷിംഗ് അൽഗരിതങ്ങൾ മുഖാന്തിരം മാത്രം പരിരക്ഷിക്കപ്പെട്ടേക്കാം. ഈ നയം പ്രവർത്തനരഹിതമാക്കിയിരിക്കുമ്പോൾ, അത്തരം വിപുലീകരണങ്ങളുടെ പുതിയ ഇൻസ്റ്റലേഷനും അപ്ഡേറ്റുകളും Chrome അനുവദിക്കില്ല (ശക്തമായ അൽഗരിതങ്ങൾ ഉപയോഗിച്ച് വിപുലീകരണ ഡെവലപ്പർമാർ വിപുലീകരണം പുനര്നിര്മ്മിക്കുന്നതുവരെ). ഈ നയം പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുമ്പോൾ, അത്തരം വിപുലീകരണങ്ങൾക്കുള്ള ഇൻസ്റ്റലേഷനും അപ്ഡേറ്റുകളും അനുവദിക്കും. + + സജ്ജീകരിക്കാതെയിരിക്കുമ്പോൾ, പ്രവർത്തനക്ഷമമാക്കിയ പ്രവർത്തനരീതി ഡിഫോൾട്ടായി നിലവിൽ വരും. + <ph name="PRODUCT_NAME" /> 75-ൽ ആരംഭിക്കുന്നു, സജ്ജീകരിക്കാതെയിരിക്കുമ്പോൾ, പ്രവർത്തനരഹിതമാക്കിയ പ്രവർത്തനരീതി ഡിഫോൾട്ടായി നിലവിൽ വരും. + + <ph name="PRODUCT_NAME" /> 77-ൽ ആരംഭിക്കുന്നു, ഈ നയം അവഗണിക്കപ്പെടുകയും പ്രവർത്തനരഹിതമാക്കിയതായി പരിഗണിക്കുകയും ചെയ്യും.</translation> <translation id="7126716959063786004">ടാസ്ക് മാനേജറിൽ അവസാനിപ്പിക്കൽ പ്രോസസ്സുകൾ പ്രവർത്തനക്ഷമമാക്കുക</translation> <translation id="7127892035367404455">ടാർഗറ്റ് പതിപ്പിലേക്ക് തിരികെ പോവുക</translation> <translation id="7128918109610518786">ലോഞ്ചർ ബാറിൽ പിൻ ചെയ്ത അപ്ലിക്കേഷനുകളായി കാണിക്കുന്ന <ph name="PRODUCT_OS_NAME" /> അപ്ലിക്കേഷൻ ഐഡന്റിഫയറുകളെ ലിസ്റ്റുചെയ്യുന്നു. @@ -3402,8 +3422,8 @@ <translation id="8288199156259560552">Android Google ലൊക്കേഷൻ സേവനം പ്രവർത്തനക്ഷമമാക്കുക</translation> <translation id="8292322992383748446">SoC ഘടകങ്ങൾക്കുള്ള ഹാർഡ്വെയറിന്റെ സ്ഥിതിവിവരക്കണക്കുകൾ റിപ്പോർട്ട് ചെയ്യുക. - നയം 'തെറ്റ്' എന്ന് സജ്ജീകരിച്ചാൽ, സ്ഥിതിവിവരക്കണക്കുകൾ റിപ്പോർട്ട് ചെയ്യപ്പെടില്ല. - 'ശരി' എന്ന് സജ്ജീകരിക്കുകയോ സജ്ജീകരിക്കാതെ വിടുകയോ ചെയ്താൽ, സ്ഥിതിവിവരക്കണക്കുകൾ റിപ്പോർട്ട് ചെയ്യപ്പെടും.</translation> + നയം തെറ്റ് എന്ന് സജ്ജീകരിച്ചാൽ, സ്ഥിതിവിവരക്കണക്കുകൾ റിപ്പോർട്ട് ചെയ്യപ്പെടില്ല. + ശരി എന്ന് സജ്ജീകരിക്കുകയോ സജ്ജീകരിക്കാതെ വിടുകയോ ചെയ്താൽ, സ്ഥിതിവിവരക്കണക്കുകൾ റിപ്പോർട്ട് ചെയ്യപ്പെടും.</translation> <translation id="8294750666104911727">സാധാരണയായി chrome=1 ലേക്ക് സജ്ജമാക്കിയ X-UA അനുയോജ്യമായ പേജുകൾ 'ChromeFrameRendererSettings' നയം പരിഗണിക്കാതെ <ph name="PRODUCT_FRAME_NAME" />-ൽ റെൻഡർ ചെയ്യപ്പെടും. നിങ്ങൾ ഈ ക്രമീകരണം പ്രവർത്തനക്ഷമമാക്കുകയാണെങ്കിൽ, മെറ്റാ ടാഗുകൾക്കായി പേജുകൾ സ്കാൻ ചെയ്യില്ല. @@ -3432,8 +3452,8 @@ <translation id="8371178326720637170">എന്റര്പ്രൈസ് ഹാര്ഡ്വെയര് പ്ലാറ്റ്ഫോം API ഉപയോഗിക്കുന്നതിന് നിയന്ത്രിത വിപുലീകരണങ്ങളെ പ്രവര്ത്തനക്ഷമമാക്കുന്നു</translation> <translation id="8374747520743832795">ഹാർഡ്വെയറിന്റെ സ്ഥിതിവിവരക്കണക്കുകൾ, പവറുമായി ബന്ധപ്പെട്ട ഐഡന്റിഫയറുകൾ എന്നിവ റിപ്പോർട്ട് ചെയ്യുക. - നയം 'തെറ്റ്' എന്ന് സജ്ജീകരിച്ചാൽ, സ്ഥിതിവിവരക്കണക്കുകൾ റിപ്പോർട്ട് ചെയ്യപ്പെടില്ല. - 'ശരി' എന്ന് സജ്ജീകരിക്കുകയോ സജ്ജീകരിക്കാതെ വിടുകയോ ചെയ്താൽ, സ്ഥിതിവിവരക്കണക്കുകൾ റിപ്പോർട്ട് ചെയ്യപ്പെടും.</translation> + നയം തെറ്റ് എന്ന് സജ്ജീകരിച്ചാൽ, സ്ഥിതിവിവരക്കണക്കുകൾ റിപ്പോർട്ട് ചെയ്യപ്പെടില്ല. + ശരി എന്ന് സജ്ജീകരിക്കുകയോ സജ്ജീകരിക്കാതെ വിടുകയോ ചെയ്താൽ, സ്ഥിതിവിവരക്കണക്കുകൾ റിപ്പോർട്ട് ചെയ്യപ്പെടും.</translation> <translation id="8377433219608936819"> നയം 'ശരി' എന്ന് സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, ക്ലൗഡ് നയത്തിന് മെഷീൻ നയവുമായി വൈരുദ്ധ്യമുണ്ടാകുമ്പോൾ, ക്ലൗഡ് നയത്തിനാവും മുൻഗണന. നയം 'തെറ്റ്' എന്ന് സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിലോ കോൺഫിഗർ ചെയ്തിട്ടില്ലെങ്കിലോ, ക്ലൗഡ് നയത്തിന് മെഷീൻ നയവുമായി വൈരുദ്ധ്യമുണ്ടാകുമ്പോൾ, മെഷീൻ നയത്തിനാവും മുൻഗണന.
diff --git a/components/policy/resources/policy_templates_mr.xtb b/components/policy/resources/policy_templates_mr.xtb index c75bb19b..b3fb848 100644 --- a/components/policy/resources/policy_templates_mr.xtb +++ b/components/policy/resources/policy_templates_mr.xtb
@@ -862,6 +862,11 @@ हे सेटिंग अक्षम केले असल्यास आणि फायरवॉलद्वारे चालू असलेली UDP कनेक्शन फिल्टर केलेली असल्यास, हे मशीन क्लायंट मशीनवरील कनेक्शनला फक्त स्थानिक नेटवर्कमध्ये अनुमती देईल. हे धोरण सेट न करता सोडल्यास सेटिंग सक्षम केले जाईल.</translation> +<translation id="2813281962735757923">हे धोरण <ph name="PRODUCT_OS_NAME" />डिव्हाइसला अपडेट आपोआप तपासण्याची परवानगी नसतानाचा कालावधी नियंत्रित करते. + हे धोरण विशिष्ट कालावधीच्या रिक्त नसलेल्या सूचीवर सेट केले असते तेव्हा: + विशिष्ट कालावधी दरम्यान डिव्हाइस आपोआप अपडेट तपासू शकणार नाहीत. रोलबॅकची आवश्यकता असलेल्या किंवा किमान <ph name="PRODUCT_OS_NAME" />आवृत्तीपेक्षा कमी असलेल्या डिव्हाइसवर या धोरणाचा संभाव्य सुरक्षितता समस्यांमुळे कोणताही परिणाम होणार नाही. तसेच, हे धोरण वापरकर्त्यांनी किंवा अॅडमिनिस्ट्रेटर विनंती केलेले अपडेट चेक ब्लॉक करणार नाही. + हे धोरण सेट केलेल नसेल किंवा त्यामध्ये कोणत्याही विशिष्ट कालावधीचा समावेश नसेल तेव्हा: + हे धोरण कोणतेही ऑटोमॅटिक अपडेट तपासणी ब्लॉक करणार नाही, पण कदाचित इतर धोरणे ती ब्लॉक करतील. हे वैशिष्ट्य फक्त ऑटो लाँच कियोस्क म्हणून कॉन्फिगर केलेल्या Chrome डिव्हाइसेमध्ये सुरू केले जाऊ शकते. या धोरणामुळे इतर डिव्हाइस प्रतिबंधित केली जाणार नाहीत.</translation> <translation id="2823870601012066791"><ph name="PRODUCT_OS_NAME" /> क्लायंटसाठी Windows नोंदणी स्थान:</translation> <translation id="2824715612115726353">गुप्त मोड सक्षम करा</translation> <translation id="283695852388224413">धोरण सेट केले असल्यास, कॉन्फिगर केलेली कमाल पिन लांबी मंजूर केली जाते. 0 किंवा त्यापेक्षा कमी मूल्य म्हणजे कमाल लांबी नाही; या बाबतीत वापरकर्ता त्यांना पाहिजे तितका लांब पिन सेट करू शकतात. ही सेटिंग <ph name="PIN_UNLOCK_MINIMUM_LENGTH_POLICY_NAME" />पेक्षा लहान परंतु 0 पेक्षा मोठी असल्यास, कमाल लांबी ही किमान लांबीच्या समान असते. @@ -1199,6 +1204,7 @@ <translation id="3547954654003013442">प्रॉक्सी सेटिंग्ज</translation> <translation id="355118380775352753">पर्यायी ब्राउझरमध्ये उघडण्यासाठी वेबसाइट</translation> <translation id="3577251398714997599">अनाहूत जाहिराती असलेल्या साइटसाठी जाहिराती सेटिंग</translation> +<translation id="3591527072193107424">लेगसी ब्राउझर सपोर्ट वैशिष्ट्य सुरू करा.</translation> <translation id="3591584750136265240">लॉग इन प्रमाणीकरण वर्तन कॉन्फिगर करा</translation> <translation id="3624171042292187668"> तुम्हाला आयसोलेट करायच्या असलेल्या साइटच्या सूचीसोबत IsolateOrigins वापरून, आयसोलेशन आणि वापरकर्त्यांसाठी मर्यादित प्रभाव या दोन्हीमधील सर्वोत्तम गोष्टी मिळवण्यासाठी तुम्ही IsolateOrigins धोरण सेटिंग पहावे. हे सेटिंग, SitePerProcess, सर्व साइट आयसोलेट करते. @@ -1394,6 +1400,13 @@ <translation id="3965339130942650562">निष्क्रिय वापरकर्ता लॉग-आउट होईपर्यंत कालबाह्य</translation> <translation id="3973371701361892765">शेल्फ कधीही स्वयं-लपवू नका</translation> <translation id="3984028218719007910">लॉगआउट केल्यानंतर <ph name="PRODUCT_OS_NAME" /> ने स्थानिक खाते डेटा ठेवावा किंवा नाही ते निर्धारित करते. सत्य वर सेट केल्यास, <ph name="PRODUCT_OS_NAME" /> कडून कोणतीही सातत्यपूर्ण खाती ठेवली जात नाही आणि वापरकर्ता सेशनातील सर्व डेटा लॉग आऊटनंतर काढून टाकण्यात येतो. हे धोरण असत्य वर सेट केले असल्यास किंवा कॉन्फिगर केले नसल्यास, डिव्हाइस स्थानिक वापरकर्ता डेटा (एंक्रिप्ट केलेला) ठेऊ शकते.</translation> +<translation id="398475542699441679">हे धोरण लेगसी ब्राउझर सपोर्ट सुरू करायचा की नाही ते नियंत्रित करते. + + हे धोरण सेट न केलेले ठेवल्यास किंवा असत्यवर सेट केल्यास, Chrome पर्यायी ब्राउझरमध्ये नियुक्त केलेल्या URLs लाँच करण्याचा प्रयत्न करणार नाही. + + हे धोरण सत्यवर सेट केल्यास, Chrome पर्यायी ब्राउझरमध्ये (जसे इंटरनेट एक्सप्लोरर) काही URLs लाँच करण्याचा प्रयत्न करेल. <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> गटातील धोरणे वापरून हे वैशिष्ट्य कॉन्फिगर केले आहे. + + हे वैशिष्ट्य <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> एक्स्टेंशनशी बदलले आहे. एक्स्टेंशनवरील कॉन्फिगरेशन या वैशिष्ट्यवर हलवले जाईल, पण त्या ऐवजी Chrome धोरणे वापरण्याचा सल्ला देत आहोत. हे भविष्यात अधिक चांगली कंपॅटिबिलिटी सुनिश्चित करते.</translation> <translation id="3997519162482760140">SAML लॉगिन पृष्ठांंवर व्हिडिओ कॅप्चर डिव्हाइसेसवर प्रवेश मंजूर करणार असलेल्या URL</translation> <translation id="4001275826058808087">एन्टरप्राइझ डिव्हाइसेससाठी IT प्रशासन Chrome OS नोंदणीद्वारे ऑफरची पूर्तता करण्यासाठी वापरकर्त्यांना अनुमती द्यावी किंवा नाही हे नियंत्रित करण्यासाठी हे ध्वजांकन वापरू शकते. @@ -1703,6 +1716,7 @@ उदाहरणादाखल नमुन्यांसाठी http://www.chromium.org/developers/how-tos/chrome-frame-getting-started पहा.</translation> <translation id="467449052039111439">URL ची सूची उघडा</translation> +<translation id="4674871290487541952">एक्स्टेंशन अपडेट आणि इंस्टॉलची अखंडतेची तपासणी करण्यासाठी असुरक्षित अल्गोरिदमना अनुमती द्या</translation> <translation id="4680936297850947973">M68 मध्ये कालबाह्य झाले. त्याऐवजी DefaultPopupsSetting वापरा. संपूर्ण स्पष्टीकरणासाठी, https://www.chromestatus.com/features/5675755719622656 पहा. @@ -2804,6 +2818,12 @@ <translation id="7123160381479171745">डीव्हाइसवर लॉगिन करण्याची अनुमती असलेल्या वापरकर्त्यांची सूची परिभाषित करते. एंट्री <ph name="USER_WHITELIST_ENTRY_EXAMPLE" />सारखे <ph name="USER_WHITELIST_ENTRY_FORMAT" /> फॉर्म असतात. डोमेनवर मध्यस्थ वापरकर्त्यांना अनुमती देण्यासाठी <ph name="USER_WHITELIST_ENTRY_WILDCARD" /> फॉर्ममधील एंट्री वापरा. हे धोरण कॉन्फिगर न केल्यास, वापरकर्त्यांना कशात साइन इन करण्याची अनुमती आहे त्यावर कोणतेही बंधन नसते. लक्षात ठेवा की नवीन वापरकर्ते तयार करण्यासाठी <ph name="DEVICE_ALLOW_NEW_USERS_POLICY_NAME" /> धोरण योग्य प्रकारे कॉन्फिगर केले जाणे आवश्यक असते.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> हे एक्स्टेंशनचे सुरक्षित अपडेट आणि इंस्टॉलेशन देऊ करते. पण, Chrome वेब स्टोअरच्या बाहेर होस्ट केलेल्या काही एक्स्टेंशनचा आशय फक्त SHA1 सारख्या हॅशिंग अल्गोरिदम किंवा असुरक्षित स्वाक्षरीने सुरक्षित केला जाऊ शकतो. हे धोरण बंद केल्यास, Chrome द्वारे अशा एक्स्टेंशनचे नवीन इंस्टॉलेशन आणि अपडेटची परवानगी दिली जाणार नाही (जो पर्यंत एक्स्टेंशन डेव्हलपर आणखी मजबूत अल्गोरिदमसह एक्स्टेंशन पुन्हा तयार करत नाही). हे धोरण सुरू केल्यास, अशा एक्स्टेंशनच्या इंस्टॉलेशन आणि अपडेटची परवानगी दिली जाईल. + + हे सेट केलेले नसताना सुरू केलेल्या वर्तनासाठी डीफॉल्ट असेल. + <ph name="PRODUCT_NAME" /> ७५ पासून, हे सेट केलेले नसताना बंद केलेल्या वर्तनासाठी डीफॉल्ट असेल. + + <ph name="PRODUCT_NAME" /> ७७ पासून, हे धोरण दुर्लक्षित केले जाईल आणि बंद झाल्याचे गृहीत धरले जाईल</translation> <translation id="7126716959063786004">टास्क मॅनेजरवर संपणाऱ्या प्रक्रिया यास सुरू करा</translation> <translation id="7127892035367404455">लक्ष्य आवृत्तीवर रोलबॅक करा</translation> <translation id="7128918109610518786">अॅप्स आयडेंटिफाय <ph name="PRODUCT_OS_NAME" /> लाँचर बारमध्ये पिन करुन सूची रुपात अॅप्स दर्शवितात.
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb index efe11d6a..ee6808f2 100644 --- a/components/policy/resources/policy_templates_nl.xtb +++ b/components/policy/resources/policy_templates_nl.xtb
@@ -805,6 +805,11 @@ Als deze instelling is uitgeschakeld en uitgaande UDP-verbindingen worden gefilterd door de firewall, staat dit apparaat alleen verbindingen toe met clientapparaten binnen het lokale netwerk. Als dit beleid niet wordt ingesteld, wordt de instelling ingeschakeld.</translation> +<translation id="2813281962735757923">Met dit beleid wordt bepaald in welke perioden het <ph name="PRODUCT_OS_NAME" />-apparaat geen toestemming heeft om automatisch op updates te controleren. + Wanneer dit beleid is ingesteld op een niet-lege lijst met perioden geldt het volgende: + Apparaten kunnen tijdens de opgegeven perioden niet automatisch controleren op updates. Apparaten die een rollback vereisen of die een lagere versie dan de minimum <ph name="PRODUCT_OS_NAME" />-versie gebruiken, worden niet beïnvloed door dit beleid vanwege mogelijke beveiligingsproblemen. Bovendien blokkeert dit beleid geen updatecontroles die door gebruikers of beheerders worden aangevraagd. + Wanneer dit beleid is uitgeschakeld of geen perioden bevat, geldt het volgende: + Er worden geen automatische updatecontroles geblokkeerd door dit beleid, maar deze kunnen wel worden geblokkeerd door andere beleidsregels. Deze functie is alleen ingeschakeld op Chrome-apparaten die zijn geconfigureerd als kiosken die automatisch worden gestart. Andere apparaten worden niet beperkt door dit beleid.</translation> <translation id="2823870601012066791">Locatie van Windows-register voor <ph name="PRODUCT_OS_NAME" />-clients:</translation> <translation id="2824715612115726353">Incognitomodus inschakelen</translation> <translation id="2838830882081735096">Gegevensmigratie en ARC niet toestaan</translation> @@ -1102,6 +1107,7 @@ <translation id="3547954654003013442">Proxyinstellingen</translation> <translation id="355118380775352753">Websites die worden geopend in de alternatieve browser</translation> <translation id="3577251398714997599">Advertentie-instellingen voor sites met opdringerige advertenties</translation> +<translation id="3591527072193107424">Schakel de functie 'Ondersteuning voor oudere browsers' in.</translation> <translation id="3591584750136265240">Het verificatiegedrag voor inloggen configureren</translation> <translation id="3624171042292187668"> De beleidsinstelling IsolateOrigins is misschien handig als je optimaal gebruik wilt maken van beide functies (isolatie en beperkte impact voor gebruikers), door IsolateOrigins te gebruiken met een lijst van de sites die je wilt isoleren. Met deze instelling (SitePerProcess) worden alle sites geïsoleerd. @@ -1289,6 +1295,13 @@ <translation id="3965339130942650562">Time-out tot de inactieve gebruiker is uitgelogd</translation> <translation id="3973371701361892765">Archief nooit automatisch verbergen</translation> <translation id="3984028218719007910">Bepaalt of <ph name="PRODUCT_OS_NAME" /> na het afmelden lokale accountgegevens bewaart. Als dit is ingesteld op 'true', bewaart <ph name="PRODUCT_OS_NAME" /> geen bestaande accounts en worden alle gegevens over de gebruikerssessie na het afmelden gewist. Als dit beleid is ingesteld op 'false' of niet is geconfigureerd, bewaart het apparaat mogelijk (gecodeerde) lokale gebruikersgegevens.</translation> +<translation id="398475542699441679">Met dit beleid wordt bepaald of 'Ondersteuning voor oudere browsers' wordt ingeschakeld. + + Wanneer dit beleid niet is ingesteld of is ingesteld op 'false', probeert Chrome geen toegewezen URL's te openen in een andere browser. + + Wanneer dit beleid is ingesteld op 'true', probeert Chrome bepaalde URL's te openen in een andere browser (zoals Internet Explorer). Deze functie is geconfigureerd volgens de beleidsregels in de groep <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + Deze functie dient als vervanging van de extensie <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. De configuratie van deze de extensie wordt overgezet naar deze functie, maar het wordt sterk geadviseerd om in plaats daarvan het Chrome-beleid te gebruiken. Dit zorgt in de toekomst voor betere compatibiliteit.</translation> <translation id="3997519162482760140">URL's die toegang krijgen tot apparaten voor het vastleggen van video op SAML-inlogpagina's</translation> <translation id="4001275826058808087">IT-beheerders voor zakelijke apparaten kunnen deze markering gebruiken om te bepalen of gebruikers aanbiedingen kunnen inwisselen via registratie van Chrome OS. @@ -1540,6 +1553,7 @@ Ga voor voorbeeldpatronen naar https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Een lijst met URL's openen</translation> +<translation id="4674871290487541952">Onbeveiligde algoritmen toestaan in integriteitscontroles bij updates en installaties van extensies</translation> <translation id="4680936297850947973">Beëindigd in M68. Gebruik in plaats hiervan DefaultPopupsSetting. Ga naar https://www.chromestatus.com/features/5675755719622656 voor een volledige uitleg. @@ -2567,6 +2581,12 @@ Als dit beleid wordt ingesteld op 'False', wordt de achtergrondmodus uitgeschakeld en kan deze niet door de gebruiker worden beheerd in de browserinstellingen. Als dit beleid niet wordt ingesteld, wordt de achtergrondmodus aanvankelijk uitgeschakeld en kan deze door de gebruiker worden beheerd in de browserinstellingen.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> zorgt ervoor dat extensies veilig kunnen worden geüpdatet en geïnstalleerd. De content van sommige extensies die buiten de Chrome Web Store worden gehost, wordt echter mogelijk alleen beschermd door onbeveiligde ondertekening of hashingalgoritmen zoals SHA1. Wanneer dit beleid is uitgeschakeld, wordt het door Chrome niet toegestaan om dergelijke extensies opnieuw te installeren of te updaten (totdat de ontwerpers van die extensie deze opnieuw samenstellen met krachtigere algoritmen). Wanneer dit beleid is ingeschakeld, is het toegestaan om dergelijke extensies te installeren en te updaten. + + Het ingeschakelde gedrag wordt standaard gebruikt wanneer het beleid niet is ingesteld. + Vanaf <ph name="PRODUCT_NAME" /> 75 wordt het uitgeschakelde gedrag standaard gebruikt wanneer het beleid niet is ingesteld. + + Vanaf <ph name="PRODUCT_NAME" /> 77 wordt dit beleid genegeerd en behandeld alsof het is uitgeschakeld.</translation> <translation id="7126716959063786004">Het beëindigen van processen in Taakbeheer inschakelen</translation> <translation id="7127892035367404455">Doelversie herstellen</translation> <translation id="7128918109610518786">Hiermee worden de app-ID's vermeld die <ph name="PRODUCT_OS_NAME" /> weergeeft als vastgezette apps in de balk van het opstartprogramma.
diff --git a/components/policy/resources/policy_templates_no.xtb b/components/policy/resources/policy_templates_no.xtb index 6938bf2..d84b4b5 100644 --- a/components/policy/resources/policy_templates_no.xtb +++ b/components/policy/resources/policy_templates_no.xtb
@@ -783,6 +783,11 @@ Hvis denne innstillingen er deaktivert og utgående UDP-tilkoblinger filtreres ut av brannmuren, vil denne maskinen bare tillate forbindelser fra klientmaskiner i det lokale nettverket. Hvis denne retningslinjen ikke angis, er innstillingen aktivert.</translation> +<translation id="2813281962735757923">Denne regelen styrer tidsrommene når <ph name="PRODUCT_OS_NAME" />-enheten ikke har lov til å se etter oppdateringer automatisk. + Dette skjer når denne regelen er satt til en liste med tidsintervaller som ikke er tom: + Enheter kan ikke se etter oppdateringer automatisk i tidsintervallene du angir. Enheter som krever rollback eller har en eldre <ph name="PRODUCT_OS_NAME" />-versjon enn minstekravet, berøres ikke av denne regelen. Dette er for å unngå potensielle sikkerhetsproblemer. Denne regelen blokkerer heller ikke forespørsler fra brukere og administratorer om å se etter oppdateringer. + Dette skjer når denne regelen ikke er angitt eller ikke inneholder tidsintervaller: + Regelen blokkerer ikke enheter fra å se etter oppdateringer automatisk, men andre regler kan blokkere dette. Denne funksjonen er bare aktivert på Chrome-enheter som er konfigurert til å starte kioskapper automatisk. Andre enheter begrenses ikke av denne regelen.</translation> <translation id="2823870601012066791">Plasseringen av Windows-registeret for <ph name="PRODUCT_OS_NAME" />-klienter:</translation> <translation id="2824715612115726353">Aktiver inkognitomodus</translation> <translation id="2838830882081735096">Ikke tillat dataoverføring og ARC</translation> @@ -1072,6 +1077,7 @@ <translation id="3547954654003013442">Innstillinger for proxy-tjener</translation> <translation id="355118380775352753">Nettsteder som skal åpnes i en alternativ nettleser</translation> <translation id="3577251398714997599">Annonseinnstillinger for nettsteder med forstyrrende annonser</translation> +<translation id="3591527072193107424">Slå på støtten for eldre nettlesere.</translation> <translation id="3591584750136265240">Konfigurer autentiseringsatferden ved pålogging</translation> <translation id="3624171042292187668"> Det kan være lurt å endre innstillingen for IsolateOrigins-regelen for å få det beste fra begge verdener – isolering og begrenset innvirkning for brukere – ved å bruke IsolateOrigins sammen med en liste over nettstedene du vil isolere. Denne innstillingen (SitePerProcess) isolerer alle nettsteder. @@ -1259,6 +1265,13 @@ <translation id="3965339130942650562">Tidsavbrudd før inaktiv brukeravlogging utføres</translation> <translation id="3973371701361892765">Aldri skjul hyllen automatisk</translation> <translation id="3984028218719007910">Avgjør om <ph name="PRODUCT_OS_NAME" /> beholder lokal kontodata etter avlogging. Hvis retningslinjen er angitt som Sann, beholdes det ikke noen vedvarende kontoer av <ph name="PRODUCT_OS_NAME" />, og all data fra brukerøkten blir forkastet etter avlogging. Hvis denne retningslinjen er angitt som Usann eller ikke er konfigurert, kan enheten beholde (kryptert) lokal brukerdata.</translation> +<translation id="398475542699441679">Denne regelen styrer om støtte for eldre nettlesere skal aktiveres. + + Når denne regelen er satt til «false» (usann) eller ikke er angitt, prøver ikke Chrome å åpne angitte nettadresser i andre nettlesere. + + Når denne regelen er satt til «true» (sann), prøver Chrome å åpne visse nettadresser i andre nettlesere (som Internet Explorer). Denne funksjonen konfigureres med reglene i <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />-gruppen. + + Denne funksjonen erstatter <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />-utvidelsen. Konfigurasjonen for utvidelsen blir videreført til denne funksjonen, men det anbefales sterkt å bruke Chrome-regler i stedet. Dette sikrer bedre kompatibilitet i fremtiden.</translation> <translation id="3997519162482760140">Nettadresser som får tilgang til videoopptaksenheter på SAML-påloggingssider</translation> <translation id="4001275826058808087">IT-administratorer for bedriftsenheter kan bruke denne markeringen til å kontrollere om brukerne kan innløse tilbud via Chrome OS- registrering. @@ -1509,6 +1522,7 @@ Du finner eksempelmønstre på https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Åpne en liste over nettadresser</translation> +<translation id="4674871290487541952">Tillat usikre algoritmer i integritetssjekker ved installering og oppdatering av utvidelser</translation> <translation id="4680936297850947973">Avviklet i M68. Bruk DefaultPopupsSetting i stedet. Du kan se en fullstendig forklaring ved å gå til https://www.chromestatus.com/features/5675755719622656. @@ -2541,6 +2555,12 @@ Hvis denne regelen settes til usann, slås bakgrunnsmodusen av. Den kan ikke kontrolleres av brukerne i nettleserinnstillingene. Hvis du ikke spesifiserer denne regelen, er bakgrunnsmodusen i utgangspunktet avslått, men den kan kontrolleres av brukerne i nettleserinnstillingene.</translation> +<translation id="7123266440503901785">Med <ph name="PRODUCT_NAME" /> kan du installere og oppdatere utvidelser på en sikker måte. Men det kan hende at innholdet i noen utvidelser som tilbys utenfor Chrome Nettmarked, bare er beskyttet av usikre signaturer eller hashing-algoritmer, for eksempel SHA1. Når denne regelen er slått av, tillater ikke Chrome at slike utvidelser installeres eller oppdateres (frem til utviklerne av utvidelsen lager en utgave med sterkere algoritmer). Når denne regelen er slått på, tillates det at slike utvidelser installeres og oppdateres. + + Når regelen ikke er angitt, fungerer den som om den er slått på. + Fra og med <ph name="PRODUCT_NAME" /> 75 fungerer regelen som om den er slått av når den ikke er angitt. + + Fra og med <ph name="PRODUCT_NAME" /> 77 ignoreres denne regelen og behandles som om den er slått av.</translation> <translation id="7126716959063786004">Slå på muligheten for å avslutte prosesser i oppgavebehandlingen</translation> <translation id="7127892035367404455">Rollback til målversjon</translation> <translation id="7128918109610518786">Viser en liste over programidentifikatorene <ph name="PRODUCT_OS_NAME" /> viser som festede programmer i programlisteraden.
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb index 50f3cfd..9fa6e75 100644 --- a/components/policy/resources/policy_templates_pt-BR.xtb +++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -775,6 +775,11 @@ Se esta configuração for desativada e as conexões de saída UDP forem filtradas pelo firewall, esta máquina permitirá somente conexões a partir de máquinas clientes da rede local. Se esta política não for definida, a configuração será ativada.</translation> +<translation id="2813281962735757923">Essa política controla os períodos durante os quais o dispositivo <ph name="PRODUCT_OS_NAME" /> não tem permissão para procurar atualizações automaticamente. + Quando ela é definida como uma lista não vazia de intervalos de tempo, + os dispositivos não podem procurar atualizações automaticamente durante os intervalos especificados. Os dispositivos que precisam de uma reversão ou que são anteriores à versão mínima do <ph name="PRODUCT_OS_NAME" /> não são afetados por essa política para evitar possíveis problemas de segurança. Além disso, a política não bloqueia verificações de atualização solicitadas por usuários ou administradores. + Se a política não for definida ou não tiver nenhum intervalo de tempo, + nenhuma verificação automática de atualização será bloqueada por ela, mas as verificações poderão ser bloqueadas por outras políticas. Esse recurso só é ativado em dispositivos Chrome configurados como quiosques de início automático. Outros dispositivos não serão restringidos por essa política.</translation> <translation id="2823870601012066791">Local de registro do Windows para clientes do <ph name="PRODUCT_OS_NAME" />:</translation> <translation id="2824715612115726353">Ativar o modo de navegação anônima</translation> <translation id="2838830882081735096">Bloquear migração de dados e ARC</translation> @@ -1064,6 +1069,7 @@ <translation id="3547954654003013442">Configurações de proxy</translation> <translation id="355118380775352753">Sites que serão abertos no navegador alternativo</translation> <translation id="3577251398714997599">Configurações de anúncios para sites com anúncios invasivos</translation> +<translation id="3591527072193107424">Ativa o recurso Suporte a navegadores legados.</translation> <translation id="3591584750136265240">Configura o comportamento de autenticação de login</translation> <translation id="3624171042292187668"> Recomendamos que você consulte a configuração da política IsolateOrigins para ter isolamento e limitar o impacto aos usuários, usando IsolateOrigins com uma lista dos sites que você quer isolar. Essa configuração, SitePerProcess, isola todos os sites. @@ -1250,6 +1256,13 @@ <translation id="3965339130942650562">Tempo limite até que a saída do usuário ocioso seja executada</translation> <translation id="3973371701361892765">Nunca ocultar automaticamente a estante</translation> <translation id="3984028218719007910">Determina se o <ph name="PRODUCT_OS_NAME" /> deve manter os dados locais da conta após a saída. Se for configurada como true, nenhuma conta persistente será mantida pelo <ph name="PRODUCT_OS_NAME" /> e todos os dados da sessão do usuário serão descartados após a saída. Se esta política for configurada como false ou não for configurada, o dispositivo poderá manter os dados locais do usuário (criptografados).</translation> +<translation id="398475542699441679">Essa política controla a ativação e a desativação do Suporte a navegadores legados. + + Quando ela é definida como falsa ou não é definida, o Chrome não tenta abrir os URLs designados em um navegador alternativo. + + Quando ela é definida como verdadeira, o Chrome tenta abrir alguns URLs em um navegador alternativo (como o Internet Explorer). Esse recurso é configurado por meio das políticas no grupo de <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + Esse recurso substitui a extensão <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. A configuração da extensão será transferida para esse recurso, mas é altamente recomendado usar as políticas do Chrome em vez disso. Fazer isso garante uma compatibilidade melhor no futuro.</translation> <translation id="3997519162482760140">URLs que terão acesso a dispositivos de captura de vídeo em páginas de login SAML</translation> <translation id="4001275826058808087">Administradores de TI de dispositivos corporativos podem usar essa sinalização para controlar se os usuários têm permissão para resgatar ofertas por meio de registro do Chrome OS. @@ -1491,6 +1504,7 @@ Para ver exemplos de padrões, consulte http://www.chromium.org/developers/how-tos/chrome-frame-getting-started (link em inglês).</translation> <translation id="467449052039111439">Abrir uma lista de URLs</translation> +<translation id="4674871290487541952">Permite algoritmos inseguros em verificações de integridade nas atualizações e instalações de extensão</translation> <translation id="4680936297850947973">Uso suspenso na versão M68. Em vez disso, use DefaultPopupsSetting. Para ver a explicação detalhada, acesse https://www.chromestatus.com/features/5675755719622656. @@ -2482,6 +2496,12 @@ Se esta política é definida como "false", o modo de segundo plano é desativado e não pode ser controlado pelo usuário nas configurações do navegador. Se esta política não é definida, o modo de segundo plano é desativado inicialmente e pode ser controlado pelo usuário nas configurações do navegador.</translation> +<translation id="7123266440503901785">O <ph name="PRODUCT_NAME" /> proporciona a atualização e a instalação seguras de extensões. No entanto, o conteúdo de algumas extensões hospedadas fora da Chrome Web Store pode ser protegido apenas por algoritmos de hash ou de assinatura inseguros, como SHA1. Quando essa política está desativada, instalações novas e atualizações dessas extensões não são permitidas pelo Chrome (até que os desenvolvedores da extensão a corrijam com algoritmos mais fortes). Quando essa política está ativada, as instalações e atualizações são permitidas. + + Se a política não for definida, ela se comportará como ativada por padrão. + A partir do <ph name="PRODUCT_NAME" /> 75, a não definição da política fará com que ela se comporte como desativada por padrão. + + A partir do <ph name="PRODUCT_NAME" /> 77, essa política será ignorada e tratada como desativada.</translation> <translation id="7126716959063786004">Permitir processos de finalização no gerenciador de tarefas</translation> <translation id="7127892035367404455">Reverter para a versão de destino</translation> <translation id="7128918109610518786">Lista os identificadores de aplicativo que o <ph name="PRODUCT_OS_NAME" /> mostra como aplicativos fixados na barra do iniciador.
diff --git a/components/policy/resources/policy_templates_ro.xtb b/components/policy/resources/policy_templates_ro.xtb index 78dc51a..ca24206 100644 --- a/components/policy/resources/policy_templates_ro.xtb +++ b/components/policy/resources/policy_templates_ro.xtb
@@ -773,6 +773,11 @@ Dacă setarea este dezactivată, iar conexiunile UDP de ieșire sunt filtrate de firewall, acest computer va accepta numai conexiunile de la computerele client din rețeaua locală. Dacă politica nu este configurată, setarea va fi activată.</translation> +<translation id="2813281962735757923">Această politică stabilește intervalele de timp în care dispozitivul <ph name="PRODUCT_OS_NAME" /> nu poate căuta automat actualizări. + Când politica este setată la o listă nevidă de intervale de timp: + Dispozitivele nu vor putea căuta automat actualizări în intervalele de timp specificate. Dispozitivele care necesită retragerea sau care sunt sub versiunea <ph name="PRODUCT_OS_NAME" /> minimă nu vor fi afectate de această politică, din cauza potențialelor probleme de securitate. În plus, politica nu blochează căutările de actualizări solicitate de utilizatori sau administratori. + Când politica este dezactivată sau nu conține intervale de timp: + Căutările automate de actualizări nu vor fi blocate de această politică, dar pot fi blocate de alte politici. Această funcție este activată doar pe dispozitivele Chrome configurate drept chioșcuri cu lansare automată. Alte dispozitive nu vor fi limitate de această politică.</translation> <translation id="2823870601012066791">Locația din registry-ul Windows pentru clienții <ph name="PRODUCT_OS_NAME" />:</translation> <translation id="2824715612115726353">Activează modul incognito</translation> <translation id="2838830882081735096">Nu permite migrarea datelor și ARC</translation> @@ -1064,6 +1069,7 @@ <translation id="3547954654003013442">Setări proxy</translation> <translation id="355118380775352753">Site-uri care vor fi deschise în browserul secundar</translation> <translation id="3577251398714997599">Setare pentru anunțurile de pe site-urile cu anunțuri deranjante</translation> +<translation id="3591527072193107424">Activează funcția Compatibilitate pentru browsere vechi.</translation> <translation id="3591584750136265240">Configurează comportamentul de autentificare la conectare</translation> <translation id="3624171042292187668"> Îți recomandăm să verifici setarea pentru politica IsolateOrigins pentru a beneficia la maximum atât de izolare, cât și de impact limitat asupra utilizatorilor, folosind IsolateOrigins cu o listă a site-urilor pe care vrei să le izolezi. Setarea SitePerProcess izolează toate site-urile. @@ -1253,6 +1259,13 @@ <translation id="3965339130942650562">Timp limită până când este executată deconectarea utilizatorului inactiv</translation> <translation id="3973371701361892765">Nu ascundeți niciodată automat raftul</translation> <translation id="3984028218719007910">Această politică stabilește dacă <ph name="PRODUCT_OS_NAME" /> păstrează datele contului local după deconectare. Dacă politica este activată, <ph name="PRODUCT_OS_NAME" /> nu va păstra conturi persistente, iar toate datele din sesiunea utilizatorului vor fi eliminate după deconectare. Dacă această politică nu este activată sau nu este configurată, dispozitivul poate păstra (criptate) datele locale ale utilizatorului.</translation> +<translation id="398475542699441679">Această politică stabilește dacă să activeze Compatibilitatea pentru browsere vechi. + + Când politica nu este configurată sau nu este activată, Chrome nu va încerca să lanseze adresele URL într-un browser secundar. + + Când politica este activată, Chrome va încerca să lanseze unele adrese URL într-un browser secundar (cum ar fi Internet Explorer). Această funcție este configurată folosind politicile din grupul <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + Funcția înlocuiește extensia <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. Configurația din extensie va fi inclusă în această funcție, dar îți recomandăm insistent să folosești politicile Chrome în schimb. Astfel, compatibilitatea va fi îmbunătățită pe viitor.</translation> <translation id="3997519162482760140">Adresele URL cărora li se va acorda acces la dispozitivele de capturare a conținutului video pe paginile de conectare SAML</translation> <translation id="4001275826058808087">Administratorii IT pentru dispozitivele companiei pot utiliza acest marcaj pentru a controla dacă utilizatorii pot valorifica oferte prin înregistrarea sistemului de operare Chrome. @@ -1494,6 +1507,7 @@ Pentru exemple de șabloane, accesează https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Deschide o listă de adrese URL</translation> +<translation id="4674871290487541952">Permite algoritmi nesecurizați în verificarea integrității la actualizările și instalările extensiilor</translation> <translation id="4680936297850947973">Învechită în M68. Folosește DefaultPopupsSetting. Pentru o explicație completă, consultă https://www.chromestatus.com/features/5675755719622656. @@ -2495,6 +2509,12 @@ nu poate fi stabilit de utilizator din setările browserului. Dacă această politică este lăsată nesetată, modul fundal este inițial dezactivat și poate fi stabilit de utilizator din setările browserului.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> oferă actualizarea și instalarea securizată a extensiilor. Totuși, conținutul unor extensii găzduite în afara Magazinului web Chrome poate fi protejat numai prin algoritmi nesecurizați de semnătură sau de hashing, cum ar fi SHA1. Dacă politica este dezactivată, instalarea nouă și actualizările acestor extensii nu vor fi permise de Chrome (până când dezvoltatorii extensiei reconstruiesc extensia cu algoritmi mai puternici). Dacă politica este activată, instalarea și actualizările acestor extensii vor fi permise. + + Setarea prestabilită va fi de a activa comportamentul când nu este configurată. + Începând cu <ph name="PRODUCT_NAME" /> 75, setarea prestabilită va fi de a dezactiva comportamentul când nu este configurată. + + Începând cu <ph name="PRODUCT_NAME" /> 77, politica va fi ignorată și considerată dezactivată.</translation> <translation id="7126716959063786004">Activează oprirea proceselor în Managerul de activități</translation> <translation id="7127892035367404455">Revino la versiunea țintă</translation> <translation id="7128918109610518786">Listează identificatorii aplicațiilor pe care <ph name="PRODUCT_OS_NAME" /> le afișează ca aplicații fixate în bara lansatorului.
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb index 5eb9a51..bbc4a929 100644 --- a/components/policy/resources/policy_templates_ru.xtb +++ b/components/policy/resources/policy_templates_ru.xtb
@@ -770,6 +770,11 @@ Если этот параметр отключен, а исходящие UDP-соединения фильтруются брандмауэром, к устройству смогут подключаться только клиенты, находящиеся в локальной сети. Если значение не задано, по умолчанию параметр включен.</translation> +<translation id="2813281962735757923">Это правило задает временные интервалы, в течение которых устройству с <ph name="PRODUCT_OS_NAME" /> запрещено выполнять автоматическую проверку обновлений. + Если для этого правила заданы временные интервалы: + В указанные периоды времени устройства не могут автоматически проверять наличие обновлений. Из соображений безопасности это правило не затрагивает устройства, которым необходим откат к предыдущей версии ПО, а также устройства, на которых установлена слишком старая версия <ph name="PRODUCT_OS_NAME" />. Кроме того, правило не блокирует поиск обновлений, запрошенный пользователем или администратором. + Если правило не настроено или для него не заданы временные интервалы: + Оно не блокирует автоматическую проверку обновлений. При этом она может быть отключена другими правилами. Эта функция включена только на устройствах Chrome, настроенных в качестве киосков с автоматическим запуском. На другие устройства правило не распространяется.</translation> <translation id="2823870601012066791">Расположение клиентов <ph name="PRODUCT_OS_NAME" /> в реестре Windows:</translation> <translation id="2824715612115726353">Включить режим инкогнито</translation> <translation id="2838830882081735096">Запретить перенос данных и ARC</translation> @@ -1057,6 +1062,7 @@ <translation id="3547954654003013442">Настройки прокси-сервера</translation> <translation id="355118380775352753">Сайты, которые должны открываться в альтернативном браузере</translation> <translation id="3577251398714997599">Настройки для сайтов с навязчивой рекламой</translation> +<translation id="3591527072193107424">Включить функцию "Поддержка альтернативного браузера"</translation> <translation id="3591584750136265240">Настройка способа аутентификации</translation> <translation id="3624171042292187668"> Правило SitePerProcess изолирует все сайты. Чтобы изолировать только определенные ресурсы, используйте правило IsolateOrigins. @@ -1243,6 +1249,13 @@ <translation id="3965339130942650562">Тайм-аут для выхода из аккаунта</translation> <translation id="3973371701361892765">Отображение панели загрузок</translation> <translation id="3984028218719007910">Определяет, будут ли в <ph name="PRODUCT_OS_NAME" /> сохраняться локально данные аккаунта после выхода. Если этот параметр задан, в <ph name="PRODUCT_OS_NAME" /> не будет постоянных аккаунтов и все данные о сеансе будут удалены после выхода. Если же эти правила не заданы (по умолчанию), на устройстве могут сохраняться пользовательские данные (в зашифрованном виде).</translation> +<translation id="398475542699441679">Это правило определяет, можно ли включать Поддержку альтернативного браузера. + + Если правило не настроено или для него задано значение false, Chrome не будет запускать определенные URL в альтернативном браузере. + + Если указано значение true, Chrome будет запускать некоторые URL в альтернативном браузере (например, Internet Explorer). Для настройки этой функции используются правила из группы "<ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />". + + Функция используется вместо расширения "<ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />". Настройки, заданные для расширения, будут перенесены в эту функцию, но мы настоятельно рекомендуем использовать вместо них правила Chrome. Это позволит обеспечить лучшую совместимость в будущем.</translation> <translation id="3997519162482760140">URL, для которых доступ к видеоустройствам предоставляется на страницах входа SAML</translation> <translation id="4001275826058808087">Контроль за доступом пользователей к службе регистрации Chrome OS для активации бонусов @@ -1485,6 +1498,7 @@ Примеры шаблонов приведены здесь: http://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Открыть одну или несколько страниц</translation> +<translation id="4674871290487541952">Разрешить использование ненадежных алгоритмов для проверок целостности при установке и обновлении расширений</translation> <translation id="4680936297850947973">Не поддерживается в M68. Используйте вместо него правило DefaultPopupsSetting. Подробную информацию можно найти на странице https://www.chromestatus.com/features/5675755719622656. @@ -2483,6 +2497,12 @@ Если вы выберете значение False, фоновый режим будет отключен и пользователь не сможет включить его. Когда правило не настроено, фоновый режим отключен по умолчанию, однако пользователь может включить его.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> обеспечивает безопасную установку и обновление расширений. Однако контент некоторых расширений, размещенный за пределами Интернет-магазина Chrome, можно защитить только с помощью ненадежных алгоритмов подписи и хеширования, например SHA-1. Если это правило отключено, Chrome запрещает установку и обновление таких расширений (пока разработчики не сделают алгоритмы более безопасными). Если это правило включено, такие расширения можно устанавливать и обновлять. + + По умолчанию правило включено, даже если не настроено. + Начиная с версии <ph name="PRODUCT_NAME" /> 75, ненастроенное правило по умолчанию будет отключено. + + Начиная с версии <ph name="PRODUCT_NAME" /> 77, правило будет игнорироваться и считаться отключенным.</translation> <translation id="7126716959063786004">Разрешить завершение процессов в диспетчере задач</translation> <translation id="7127892035367404455">Откат к целевой версии</translation> <translation id="7128918109610518786">Список идентификаторов приложений, которые <ph name="PRODUCT_OS_NAME" /> отображает в панели запуска.
diff --git a/components/policy/resources/policy_templates_sl.xtb b/components/policy/resources/policy_templates_sl.xtb index 2c9b3991..a2de1704 100644 --- a/components/policy/resources/policy_templates_sl.xtb +++ b/components/policy/resources/policy_templates_sl.xtb
@@ -808,6 +808,11 @@ Če je ta nastavitev onemogočena in izhodne povezave UDP filtrira požarni zid, bo ta računalnik dovolil samo povezave iz odjemalskih računalnikov v lokalnem omrežju. Če ta pravilnik ni nastavljen, bo nastavitev omogočena.</translation> +<translation id="2813281962735757923">Ta pravilnik nadzira obdobja, med katerimi napravi s sistemom <ph name="PRODUCT_OS_NAME" /> ni samodejno dovoljeno preverjati, ali so na voljo posodobitve. + Če je ta pravilnik na seznam časovnih intervalov, ki ni prazen: + Naprave med določenimi časovnimi intervali ne bodo mogle samodejno preveriti, ali so na voljo posodobitve. Na naprave, ki jih je treba povrniti v prejšnje stanje, ali uporabljajo nižjo različico operacijskega sistema <ph name="PRODUCT_OS_NAME" /> od najnižje zahtevane, zaradi morebitnih varnostnih težav ta pravilnik ne bo vplival. Poleg tega ta pravilnik ne bo blokiral zahtev za preverjanje, ali so na voljo posodobitve, ki jih izvedejo uporabniki ali skrbniki. + Če ta pravilnik ni nastavljen ali ne vsebuje časovnih intervalov: + Ta pravilnik ne bo blokiral samodejnih preverjanj, ali so na voljo posodobitve, vendar jih bodo morda blokirali drugi pravilniki. Ta funkcija je omogočena samo v napravah Chrome, ki so konfigurirane kot kioski s samodejnim zagonom. Drugih naprav ta pravilnik ne bo omejeval.</translation> <translation id="2823870601012066791">Lokacija registra sistema Windows za odjemalce s sistemom <ph name="PRODUCT_OS_NAME" />:</translation> <translation id="2824715612115726353">Omogoči način brez beleženja zgodovine</translation> <translation id="2838830882081735096">Prepoved selitve podatkov in ARC-ja</translation> @@ -1105,6 +1110,7 @@ <translation id="3547954654003013442">Nastavitve proxyja</translation> <translation id="355118380775352753">Spletna mesta za odpiranje v nadomestnem brskalniku</translation> <translation id="3577251398714997599">Nastavitve oglasov za spletna mesta z vsiljivimi oglasi</translation> +<translation id="3591527072193107424">Omogočanje funkcije podpore za zastarele brskalnike.</translation> <translation id="3591584750136265240">Konfiguriranje preverjanja pristnosti pri prijavi</translation> <translation id="3624171042292187668"> Oglejte si nastavitev pravilnika IsolateOrigins, če želite izkoristiti prednosti obeh funkcij, osamitve in omejenega vpliva za uporabnike, tako da uporabite pravilnik IsolateOrigins s seznamom spletnih mest, ki jih želite osamiti. Ta nastavitev, SitePerProcess, osami vsa spletna mesta. @@ -1293,6 +1299,13 @@ <translation id="3965339130942650562">Časovna omejitev za odjavo nedejavnega uporabnika</translation> <translation id="3973371701361892765">Nikoli samodejno ne skrij police</translation> <translation id="3984028218719007910">Določa, ali <ph name="PRODUCT_OS_NAME" /> po odjavi ohrani lokalne podatke o računu. Če je pravilnik omogočen, <ph name="PRODUCT_OS_NAME" /> ne shrani trajnih računov in vsi podatki seje uporabnika se po odjavi izbrišejo. Če je pravilnik onemogočen ali ni nastavljen, lahko naprava hrani (šifrirane) lokalne podatke uporabnikov.</translation> +<translation id="398475542699441679">Ta pravilnik nadzira, ali je omogočena podpora za zastarele brskalnike. + + Če ta pravilnik ni nastavljen ali je nastavljen na »false«, Chrome ne bo poskusil odpreti določenih URL-jev v nadomestnem brskalniku. + + Če je ta pravilnik nastavljen na »true«, bo Chrome poskusil odpreti nekatere URL-je v nadomestnem brskalniku (na primer Internet Explorerju). Ta funkcija je konfigurirana s pravilniki v skupini <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + Ta funkcija nadomešča razširitev <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. Konfiguracija iz razširitve se bo prenesla na to funkcijo, vendar zelo priporočamo, da namesto nje uporabljate Chromove pravilnike. S tem si zagotovite boljšo združljivost v prihodnje.</translation> <translation id="3997519162482760140">URL-ji, ki jim bo odobren dostop do naprav za zajem videa na straneh za prijavo SAML</translation> <translation id="4001275826058808087">Skrbniki za IT, ki upravljajo naprave v podjetju, lahko s to zastavico določijo, ali je uporabnikom dovoljeno unovčiti ponudbe prek registracije sistema Chrome OS. @@ -1544,6 +1557,7 @@ Primere vzorcev si lahko ogledate na https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Odpri seznam URL-jev</translation> +<translation id="4674871290487541952">Omogočanje algoritmov, ki niso varni, pri preverjanju celovitosti posodobitev in namestitev razširitev</translation> <translation id="4680936297850947973">Zastarelo v M68. Uporabite pravilnik DefaultPopupsSetting. Podrobno pojasnilo je na strani https://www.chromestatus.com/features/5675755719622656. @@ -2591,6 +2605,12 @@ Če je ta pravilnik onemogočen, je način izvajanja v ozadju onemogočen in ga uporabnik ne more upravljati v nastavitvah brskalnika. Če ta pravilnik ni nastavljen, je način izvajanja v ozadju na začetku onemogočen in ga uporabnik lahko upravlja v nastavitvah brskalnika.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> zagotavlja varno posodabljanje in nameščanje razširitev. Kljub temu lahko vsebino nekaterih razširitev, ki gostujejo zunaj Spletne trgovine Chrome, ščitijo samo algoritmi za podpisovanje ali zgoščevanje, ki niso varni, na primer SHA1. Če je ta pravilnik onemogočen, Chrome ne bo dovolil sveže namestitve takšnih razširitev in njihovih posodobitev (dokler razvijalci razširitve ne predelajo z močnejšimi algoritmi). Če se je ta pravilnik omogočen, bodo namestitev in posodobitve takšnih razširitev dovoljene. + + Če pravilnik ni nastavljen, je privzeto omogočeno delovanje. + Od brskalnika <ph name="PRODUCT_NAME" /> različice 75 bo privzeto omogočeno delovanje, če pravilnik ne bo nastavljen. + + Od brskalnika <ph name="PRODUCT_NAME" /> različice 77 bo ta pravilnik prezrt in obravnavan kot onemogočen.</translation> <translation id="7126716959063786004">Omogoči končevanje procesov v upravitelju opravil</translation> <translation id="7127892035367404455">Povrnitev na ciljno različico</translation> <translation id="7128918109610518786">Prikaže identifikatorje aplikacij, ki jih <ph name="PRODUCT_OS_NAME" /> pokaže kot pripete aplikacije v vrstici zaganjalnika.
diff --git a/components/policy/resources/policy_templates_sr.xtb b/components/policy/resources/policy_templates_sr.xtb index fb5970a3..d6c265e6 100644 --- a/components/policy/resources/policy_templates_sr.xtb +++ b/components/policy/resources/policy_templates_sr.xtb
@@ -802,6 +802,11 @@ Ако онемогућите ово подешавање, а одлазне UDP везе филтрира заштитни зид, овај уређај ће дозволити повезивање само са клијентских уређаја у оквиру локалне мреже. Ако не подесите ове смернице, подешавање ће бити омогућено.</translation> +<translation id="2813281962735757923">Ове смернице контролишу временске оквире током којих <ph name="PRODUCT_OS_NAME" /> уређај нема дозволу да аутоматски тражи ажурирања. + Када су ове смернице подешене на листу временских интервала која није празна: + Уређаји неће моћи аутоматски да траже ажурирања током наведених временских интервала. Ове смернице се не односе на уређаје за које је потребно враћање на претходну верзију или имају старију <ph name="PRODUCT_OS_NAME" /> верзију од минималне због потенцијалних безбедносних проблема. Штавише, ове смернице не блокирају тражења ажурирања на захтев корисника или администратора. + Када не подесите ове смернице или оне не садрже временске интервале: + Ове смернице неће блокирати аутоматска тражења ажурирања, али ће их можда блокирати друге смернице. Ова функција је омогућена само на Chrome уређајима који су конфигурисани као киосци за аутоматско покретање. Ове смернице не ограничавају друге уређаје.</translation> <translation id="2823870601012066791">Локација <ph name="PRODUCT_OS_NAME" /> клијената у Windows регистру:</translation> <translation id="2824715612115726353">Омогући режим без архивирања</translation> <translation id="2838830882081735096">Онемогући пренос података и ARC</translation> @@ -1099,6 +1104,7 @@ <translation id="3547954654003013442">Подешавања проксија</translation> <translation id="355118380775352753">Веб-сајтови који се отварају у алтернативном прегледачу</translation> <translation id="3577251398714997599">Подешавање огласа за сајтове са огласима који ометају</translation> +<translation id="3591527072193107424">Омогућавају функцију Подршка за застареле прегледаче.</translation> <translation id="3591584750136265240">Конфигурише понашање при потврди аутентичности за пријављивање</translation> <translation id="3624171042292187668"> Погледајте подешавање смерница IsolateOrigins да бисте постигли најбољи учинак у погледу изолације и ограниченог утицаја на кориснике коришћењем смерница IsolateOrigins са листом сајтова које желите да изолујете. Ово подешавање, SitePerProcess, изолује све сајтове. @@ -1287,6 +1293,13 @@ <translation id="3965339130942650562">Временско ограничење пре него што се обави одјављивање неактивног корисника</translation> <translation id="3973371701361892765">Никада аутоматски не сакривај полицу</translation> <translation id="3984028218719007910">Одређују да ли <ph name="PRODUCT_OS_NAME" /> задржава локалне податке о налогу после одјављивања. Ако буду подешене на Тачно, <ph name="PRODUCT_OS_NAME" /> не задржава никакве сталне налоге и сви подаци из корисничке сесије ће бити одбачени након одјављивања. Ако ове смернице буду подешене на Нетачно или не буду конфигурисане, уређај може да задржи (шифроване) локалне корисничке податке.</translation> +<translation id="398475542699441679">Ове смернице контролишу да ли треба омогућити функцију Подршка за застареле прегледаче. + + Ако не подесите ове смернице или их подесите на Нетачно, Chrome неће покушавати да покреће означене URL-ове у алтернативном прегледачу. + + Ако подесите ове смернице на Тачно, Chrome ће покушавати да покреће неке URL-ове у алтернативном прегледачу (као што је Internet Explorer). Ова функција се конфигурише помоћу смерница у групи <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + Ова функција је замена за додатак <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. Конфигурација из додатка се преноси у ову функцију, али искрено препоручујемо да ипак користите Chrome смернице. То вам обезбеђује бољу компатибилност у будућности.</translation> <translation id="3997519162482760140">URL-ови којима ће бити одобрен приступ уређајима за снимање видео садржаја на SAML страницама за пријављивање</translation> <translation id="4001275826058808087">IT администратори уређаја за предузећа могу да користе ову ознаку да би одредили да ли ће дозволити корисницима да искоришћавају понуде преко регистрације за Chrome ОС. @@ -1538,6 +1551,7 @@ Примере образаца потражите на https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Отвори листу URL адреса</translation> +<translation id="4674871290487541952">Дозвољавају небезбедне алгоритме током провера интегритета за ажурирања и инсталирања додатака</translation> <translation id="4680936297850947973">Застарело у М68. Уместо тога користите DefaultPopupsSetting. Пуно објашњење потражите на: https://www.chromestatus.com/features/5675755719622656. @@ -2578,6 +2592,12 @@ Ако подесите ове смернице на Нетачно, позадински режим се онемогућава и корисник не може да га контролише у подешавањима прегледача. Ако не подесите ове смернице, позадински режим се у почетку онемогућава и корисник може да га контролише у подешавањима прегледача.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> омогућава безбедно ажурирање и инсталирање додатака. Међутим, садржај неких додатака који су хостовани ван Chrome веб-продавнице може да буде заштићен само небезбедним алгоритмима за пријављивање или хеширање, као што је SHA1. Ако онемогућите ове смернице, Chrome неће дозволити ново инсталирање и ажурирања таквих додатака (док програмери додатка не направе додатак поново са јачим алгоритмима). Ако омогућите ове смернице, инсталирање и ажурирања за такве додатке ће бити дозвољени. + + Ако их не подесите, смернице ће подразумевано бити омогућене. + Од <ph name="PRODUCT_NAME" /> верзије 75 смернице ће подразумевано бити онемогућене ако их не подесите. + + Од <ph name="PRODUCT_NAME" /> верзије 77 ове смернице ће бити игнорисане и третиране као онемогућене.</translation> <translation id="7126716959063786004">Омогућавају завршавање процеса у менаџеру задатака</translation> <translation id="7127892035367404455">Враћање на циљану верзију</translation> <translation id="7128918109610518786">Наводи идентификаторе апликација које <ph name="PRODUCT_OS_NAME" /> приказује као закачене апликације на траци покретача.
diff --git a/components/policy/resources/policy_templates_sv.xtb b/components/policy/resources/policy_templates_sv.xtb index a546b847..8e94044 100644 --- a/components/policy/resources/policy_templates_sv.xtb +++ b/components/policy/resources/policy_templates_sv.xtb
@@ -809,6 +809,11 @@ Om inställningen har inaktiverats och utgående UDP-anslutningar filtreras av brandväggen, tillåter datorn bara anslutningar från klientdatorer inom det lokala nätverket. Om policyn inte har angetts är inställningen aktiverad.</translation> +<translation id="2813281962735757923">Den här principen styr under vilka tidsperioder som <ph name="PRODUCT_OS_NAME" />-enheten inte får söka efter uppdateringar automatiskt. + Följande gäller om principen är inställd på en lista över tidsintervall som inte är tom: + Enheterna tillåts inte att söka efter uppdateringar automatiskt inom de angivna tidsintervallen. Enheter som behöver återställas eller som inte uppfyller de lägsta versionskraven för <ph name="PRODUCT_OS_NAME" /> påverkas inte av principen på grund av möjliga säkerhetsproblem. Principen blockerar inte heller sökningar efter uppdateringar som användaren eller administratören har begärt. + Följande gäller om principen inte har angetts eller om tidsintervall saknas: + Inga automatiska sökningar efter uppdateringar blockeras av principen, men de kan blockeras av andra principer. Den här funktionen är bara aktiverad på Chrome-enheter som har konfigurerats så att de automatiskt startas för offentlig miljö. Andra enheter begränsas inte av den här principen.</translation> <translation id="2823870601012066791">Windows-registerplats för <ph name="PRODUCT_OS_NAME" />-klienter:</translation> <translation id="2824715612115726353">Aktivera inkognitoläge</translation> <translation id="2838830882081735096">Tillåt inte datamigrering och ARC</translation> @@ -1106,6 +1111,7 @@ <translation id="3547954654003013442">Proxyinställningar</translation> <translation id="355118380775352753">Webbplatser som ska öppnas i alternativa webbläsare</translation> <translation id="3577251398714997599">Annonsinställningar för webbplatser med påträngande annonser</translation> +<translation id="3591527072193107424">Aktivera funktionen Stöd för äldre webbläsare.</translation> <translation id="3591584750136265240">Konfigurera vad som ska göras vid inloggningsautentisering</translation> <translation id="3624171042292187668"> Ta gärna en titt på principen IsolateOrigins också: du kan få det bästa av två världar, isolering och begränsad inverkan på användarna, genom att ange en lista med webbplatser som ska isoleras med IsolateOrigins. Med den här inställningen, SitePerProcess, isoleras alla webbplatser. @@ -1294,6 +1300,13 @@ <translation id="3965339130942650562">Tidsgräns för utloggning av inaktiv användare</translation> <translation id="3973371701361892765">Dölj aldrig hyllan automatiskt</translation> <translation id="3984028218719007910">Avgör om <ph name="PRODUCT_OS_NAME" /> ska spara lokala kontodata efter utloggning. Om värdet är sant sparas inga konton permanent av <ph name="PRODUCT_OS_NAME" /> och alla data från användarsessionen kasseras efter utloggning. Om policyn är inställd på falskt eller inte konfigurerad kan lokala användardata sparas (krypterade) i enheten.</translation> +<translation id="398475542699441679">Principen styr om stödet för äldre webbläsare ska vara aktiverat. + + När principen saknar inställning eller har ställts in på falskt görs inga försök att öppna angivna webbadresser i en annan webbläsare än Chrome. + + När principen är inställd på sant öppnas vissa webbadresser i en annan webbläsare än Chrome (t.ex. Internet Explorer). Funktionen konfigureras med principerna i gruppen <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + Funktionen ersätter tillägget <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. Tilläggets inställningar förs över till den här funktionen, men vi rekommenderar starkt att du använder principerna i Chrome i stället. På det sättet förebyggs framtida kompatibilitetsproblem.</translation> <translation id="3997519162482760140">Webbadresser som ska beviljas åtkomst till videoinspelningsenheter på inloggningssidor med SAML</translation> <translation id="4001275826058808087">IT-administratörer för företagsenheter kan använda den här flaggan för att styra om användarna ska kunna utnyttja erbjudanden via registrering i Chrome OS. @@ -1545,6 +1558,7 @@ Exempel på mönster finns på https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Öppna följande sidor</translation> +<translation id="4674871290487541952">Tillåt osäkra algoritmer vid integritetskontrollen när tillägg uppdateras och installeras.</translation> <translation id="4680936297850947973">Har fasats ut i M68. Använd DefaultPopupsSetting i stället. En fullständig förklaring finns på https://www.chromestatus.com/features/5675755719622656. @@ -2594,6 +2608,12 @@ Om policyn är inställd på falskt inaktiveras bakgrundsläget och det kan inte ändras av användaren i webbläsarinställningarna. Om policyn inte ställs in är bakgrundsläget inaktiverat från början och kan ändras av användaren i webbläsarinställningarna.</translation> +<translation id="7123266440503901785">Med <ph name="PRODUCT_NAME" /> installeras och uppdateras tillägg på ett säkert sätt. Däremot kanske vissa tillägg utanför Chrome Web Store bara skyddas av osäkra signeringsalgoritmer eller hash-tekniker som SHA1. När den här principen är inaktiverad går det inte att nyinstallera eller uppdatera sådana tillägg i Chrome (förrän utvecklaren har skrivit om tillägget så att säkrare algoritmer används). När principen är aktiverad tillåts installation och uppdateringar av sådana tillägg. + + Om ingen inställning har angetts är principen aktiverad som standard. + Från och med <ph name="PRODUCT_NAME" /> 75 kommer principen i stället att vara inaktiverad som standard. + + Från och med <ph name="PRODUCT_NAME" /> 77 kommer principen att ignoreras och ses som inaktiverad.</translation> <translation id="7126716959063786004">Gör det möjligt att avsluta processer i Aktivitetshanteraren</translation> <translation id="7127892035367404455">Återställ till målversion</translation> <translation id="7128918109610518786">Visar en lista med de appidentifierare som ska visas som fasta appar i startfältet i <ph name="PRODUCT_OS_NAME" />.
diff --git a/components/policy/resources/policy_templates_sw.xtb b/components/policy/resources/policy_templates_sw.xtb index d4294a9..2b05fc24 100644 --- a/components/policy/resources/policy_templates_sw.xtb +++ b/components/policy/resources/policy_templates_sw.xtb
@@ -780,6 +780,11 @@ Ikiwa mpangilio huu utazimwa na miunganisho ya kutoa ya UDP imechujwa na ngome, basi mashini hii itaweza tu kuruhusu miunganisho kutoka kwenye mashini ya seva teja katika mtandao wa karibu. Ikiwa sera hii itaachwa bila kuwekwa mpangilio utawashwa.</translation> +<translation id="2813281962735757923">Sera hii hudhibiti vipindi ambapo kifaa cha <ph name="PRODUCT_OS_NAME" />hakiruhusiwi kukagua masasisho kiotomatiki. + Sera hii inapowekwa katika orodha yenye vipindi fulani vya muda: + Vifaa havitaweza kukagua masasisho kiotomatiki katika vipindi vilivyobainishwa. Vifaa ambavyo vinahitaji matoleo ya zamani au vinatumia matoleo yanayofuata <ph name="PRODUCT_OS_NAME" />havitaathiriwa na sera hii kutokana na matatizo ya usalama yanayoweza kutokea. Zaidi ya hayo, sera hii haitazuia ukaguzi wa masasisho unaoombwa na watumiaji au wasimamizi. + Sera hii isipowekwa au ikikosa kipindi chochote: + Hamna ukaguzi wa masasisho ya kiotomatiki utakaozuiliwa na sera hii, lakini unaweza kuzuiliwa na sera zingine. Kipengele hiki kimewashwa tu kwenye vifaa vya Chrome ambavyo vimewekewa mipangilio ya skrini nzima kufunguka kiotomatiki. Vifaa vingine havitazuiwa na sera hii.</translation> <translation id="2823870601012066791">Eneo la sajili ya Windows la viteja vya <ph name="PRODUCT_OS_NAME" />:</translation> <translation id="2824715612115726353">Washa hali Fiche</translation> <translation id="2838830882081735096">Usiruhusu uhamishaji data na ARC</translation> @@ -1078,6 +1083,7 @@ <translation id="3547954654003013442">Mipangilio ya proksi</translation> <translation id="355118380775352753">Tovuti zinazofunguka katika kivinjari mbadala</translation> <translation id="3577251398714997599">Mipangilio ya matangazo kwa tovuti zilizo na matangazo yanayokatiza matumizi</translation> +<translation id="3591527072193107424">Washa kipengele cha Uwezo wa Kutumia Kivinjari Kilichopitwa na Wakati.</translation> <translation id="3591584750136265240">Weka mipangilio ya tabia ya kithibitishaji cha kuingia katika akaunti</translation> <translation id="3624171042292187668"> Huenda utataka kuangalia mipangilio ya sera ya IsolateOrigins ili upate hali bora kati ya hizi mbili, utengaji na athari ndogo kwa watumiaji, kwa kutumia IsolateOrigins katika orodha ya tovuti unazotaka kutenga. Mipangilio hii, SitePerProcess, inatenga tovuti zote. @@ -1267,6 +1273,13 @@ <translation id="3965339130942650562">Muda umekwisha mpaka uondokaji wa kuingia kusikotumika kutekelezwe</translation> <translation id="3973371701361892765">Usiwahi kuficha rafu kiotomatiki</translation> <translation id="3984028218719007910">Inathibitisha iwapo <ph name="PRODUCT_OS_NAME" /> inaweka data ya akaunti ya karibu baada ya kuondoka. Ikiwa imewekwa kwenye ndivyo, hakuna akaunti za kudumu zinazowekwa kwa <ph name="PRODUCT_OS_NAME" /> na data yote kutoka kwenye kipindi cha mtumiaji itatupwa baada ya kuondoka. Ikiwa sera hii imewekwa kuwa sivyo au haijasanidiwa, kifaa kinaweza kuweka data ya mtumiaji wa karibu (iliyosimbwa fiche).</translation> +<translation id="398475542699441679">Sera hii inadhibiti ruhusa ya Uwezo wa Kutumia Kivinjari Kilichopitwa na Wakati. + + Sera hii isipowekwa au ikiwekwa kuwa 'sivyo', Chrome haitajaribu kufungua URL zilizobainishwa katika kivinjari mbadala. + + Sera hii ikiwekwa kuwa 'ndivyo', Chrome itajaribu kufungua baadhi ya URL katika kivinjari mbadala (kama vile Internet Explorer). Mipangilio ya kipengele hiki huwekwa kwa kutumia sera katika kikundi cha <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + Kipengele hiki kinachukua nafasi ya kiendelezi cha <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. Mipangilio kutoka kiendelezi italetwa kwenye kipengele hiki, lakini tunapendekeza zaidi utumie sera za Chrome badala yake. Hali hii inahakikisha uoanifu bora zaidi katika siku zijazo.</translation> <translation id="3997519162482760140">URL zitakazopewa idhini ya kufikia vifaa vya kurekodi video kwenye kurasa za kuingia katika SAML</translation> <translation id="4001275826058808087">Usimamizi wa IT kwa vifaa vya biashara unaweza kutumia alama hii kudhibiti iwapo itaruhusu watumiaji kukomboa matoleo kupitia Usajili wa Chrome OS. @@ -1514,6 +1527,7 @@ Kwa mifano ya ruwaza angalia https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Fungua orodha ya URL</translation> +<translation id="4674871290487541952">Ruhusu algoriti zisizo salama katika ukaguzi wa mabadiliko ya data kwenye masasisho na usakinishaji wa viendelezi</translation> <translation id="4680936297850947973">Sera iliacha kuendesha huduma katika toleo la M68. Badala yake tumia DefaultPopupsSetting. Kwa ufafanuzi kamili, angalia https://www.chromestatus.com/features/5675755719622656. @@ -2546,6 +2560,12 @@ Sera hii ikiwekwa kuwa Sivyo, kipengee cha hali ya chinichini huzimwa na hakiwezi kudhibitiwa na mtumiaji katika mipangilio ya kivinjari. Sera hii ikiachwa bila kuwekwa, kipengee cha hali ya chinichini huzimwa kwanza na kinaweza kudhibitiwa na mtumiaji katika mipangilio ya kivinjari.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> hutoa usakinishaji wa viendelezi na masasisho salama. Hata hivyo, huenda maudhui ya baadhi ya viendelezi vinavyopangishwa nje ya Duka la Chrome kwenye Wavuti yakalindwa tu kwa kutumia njia isiyo salama ya kuambatisha vyeti au algoriti za kupunguza urefu kama vile SHA1. Sera hii inapozimwa, usakinishaji mpya na masasisho ya viendelezi kama hivyo havitaruhusiwa na Chrome (hadi wasanidi wa viendelezi waunde upya viendelezi vinavyotumia algoriti thabiti). Sera hii ikiwashwa, usakinishaji na masasisho ya viendelezi kama hivi utaruhusiwa. + + Sera isipowekwa, hali hii itawashwa kwa chaguomsingi. + Kwa kuanzia <ph name="PRODUCT_NAME" /> 75, sera isipowekwa, hali hii itazimwa kwa chaguomsingi. + + Kwa kuanzia <ph name="PRODUCT_NAME" /> 77, sera hii haitatumiwa na itachukuliwa kuwa imezimwa.</translation> <translation id="7126716959063786004">Washa kipengele cha kutamatisha shughuli katika Kidhibiti cha Shughuli kwenye Chrome</translation> <translation id="7127892035367404455">Rejea kwenye toleo lengwa</translation> <translation id="7128918109610518786">Inaorodhesha vitambuaji vya programu <ph name="PRODUCT_OS_NAME" /> huonyesha kama programu zilizobanwa katika upau wa kizinduzi.
diff --git a/components/policy/resources/policy_templates_ta.xtb b/components/policy/resources/policy_templates_ta.xtb index 63366f86..1805e1d4 100644 --- a/components/policy/resources/policy_templates_ta.xtb +++ b/components/policy/resources/policy_templates_ta.xtb
@@ -768,6 +768,11 @@ இந்த அமைப்பு முடக்கப்பட்டு ஃபயர்வாலால் வெளிச்செல்லும் UDP இணைப்புகள் வடிக்கப்பட்டுள்ளதெனில் இந்தக் கம்ப்யூட்டர் அக நெட்வொர்க்கில் கிளையண்டின் கம்ப்யூட்டரிலிருந்து மட்டும் இணைப்புகளை அனுமதிக்கும். இந்தக் கொள்கையை அமைக்காமல் விட்டால் அமைப்பு இயக்கப்படும்.</translation> +<translation id="2813281962735757923">இந்தக் கொள்கை, புதுப்பிப்புகளை <ph name="PRODUCT_OS_NAME" /> சாதனம் தானாகச் சரிபார்க்க அனுமதிக்கப்படாத நேர இடைவெளிகளைக் கட்டுப்படுத்துகிறது. + இந்தக் கொள்கையை காலி அல்லாத நேர இடைவெளிகளின் பட்டியலுக்கு அமைத்தால்: + குறிப்பிடப்பட்டுள்ள அந்த நேர இடைவெளிகளில் புதுப்பிப்புகளைச் சாதனங்கள் தானாகச் சரிபார்க்க முடியாது. பாதுகாப்புச் சிக்கல்கள் காரணமாக, பின்னோக்கிய மீட்டமைப்பு தேவைப்படும் அல்லது குறைந்தபட்சம் <ph name="PRODUCT_OS_NAME" /> பதிப்புக்குக் குறைவான பதிப்பைக் கொண்ட சாதனங்கள் இந்தக் கொள்கையால் பாதிக்கப்படாது. மேலும், பயனர்கள் அல்லது நிர்வாகிகள் கோரும் புதுப்பிப்புச் சரிபார்ப்புகளை இந்தக் கொள்கை தடுக்காது. + இந்தக் கொள்கையை அமைக்கவில்லை என்றாலோ அதில் நேர இடைவெளிகள் இல்லை என்றாலோ: + புதுப்பிப்புகளைத் தானாகச் சரிபார்ப்பதை இந்தக் கொள்கை தடுக்காது, எனினும் அவை பிற கொள்கைகளால் தடுக்கப்படலாம். தானியங்குத் தொடக்கக் கியாஸ்க்குகளாக உள்ளமைக்கப்பட்ட Chrome சாதனங்களில் மட்டுமே இந்த அம்சம் இயக்கப்பட்டிருக்கும். பிற சாதனங்கள் இந்தக் கொள்கையால் கட்டுப்படுத்தப்படாது.</translation> <translation id="2823870601012066791"><ph name="PRODUCT_OS_NAME" /> கிளையன்ட்டுகளுக்கான Windows பதிவக இருப்பிடம்:</translation> <translation id="2824715612115726353">மறைநிலை பயன்முறையை இயக்கு</translation> <translation id="2838830882081735096">தரவு நகர்த்துதலையும் ARCஐயும் அனுமதிக்காதே</translation> @@ -1057,6 +1062,7 @@ <translation id="3547954654003013442">ப்ராக்ஸி அமைப்புகள்</translation> <translation id="355118380775352753">இணையதளங்களை மாற்று உலாவியில் திறக்கும்</translation> <translation id="3577251398714997599">குறுக்கிடும் விளம்பரங்களுடன் கூடிய தளங்களுக்கான விளம்பர அமைப்புகள்</translation> +<translation id="3591527072193107424">‘லெகஸி உலாவி ஆதரவு’ அம்சத்தை இயக்கும்.</translation> <translation id="3591584750136265240">உள்நுழைவு அங்கீகரிப்புச் செயல்பாட்டை உள்ளமை</translation> <translation id="3624171042292187668"> தனிப்படுத்துதல் மற்றும் பயனர்களுக்குக் குறைந்த அளவிலான தாக்கம் ஆகிய இரண்டையும் சரியாகப் பயன்படுத்துவதற்கு IsolateOrigins கொள்கையின் அமைப்பைப் பார்க்கவும். அதில் நீங்கள் தனிப்படுத்த விரும்பும் தளங்களின் பட்டியலுடன் IsolateOrigins கொள்கையைப் பயன்படுத்தலாம். SitePerProcess என்னும் இந்த அமைப்பு, அனைத்து தளங்களையும் தனிப்படுத்தும். @@ -1243,6 +1249,13 @@ <translation id="3965339130942650562">செயலற்ற பயனரின் வெளியேறுதல் செயல்படுத்தும் வரை நேர முடிவு இருக்கும் </translation> <translation id="3973371701361892765">அடுக்கை ஒருபோதும் மறைக்காதே</translation> <translation id="3984028218719007910">வெளியேறிய பிறகு உள்ளார்ந்த கணக்குத் தரவை <ph name="PRODUCT_OS_NAME" /> வைக்க வேண்டுமா என்பதைத் தீர்மானிக்கும். true என அமைக்கப்பட்டால், நிலையான கணக்குகள் எதுவும் <ph name="PRODUCT_OS_NAME" /> ஆல் வைக்கப்படாது, மேலும் வெளியேறிய பிறகு பயனர் அமர்விலிருக்கும் எல்லா தரவும் நிராகரிக்கப்படும். இந்தக் கொள்கை false என அமைக்கப்பட்டால் அல்லது உள்ளமைக்கப்படாவிட்டால், உள்ளார்ந்த பயனர் தரவை (குறியாக்கப்பட்ட) சாதனம் வைத்துக்கொண்டிருக்கலாம்.</translation> +<translation id="398475542699441679">‘லெகஸி உலாவி ஆதரவை’ இயக்குவதா என்பதை இந்தக் கொள்கை கட்டுப்படுத்துகிறது. + + இந்தக் கொள்கையை அமைக்காமல் விட்டாலோ ‘தவறு’ என அமைத்தாலோ, குறிப்பிடப்பட்டுள்ள URLகளை மாற்று உலாவியில் திறக்க Chrome முயலாது. + + இந்தக் கொள்கையை ‘சரி’ என அமைத்தால், சில URLகளை மாற்று உலாவியில் (எ.கா. Internet Explorer) திறக்க Chrome முயலும். <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> குழுவிலுள்ள கொள்கைகளைப் பயன்படுத்தி இந்த அம்சம் உள்ளமைக்கப்பட்டுள்ளது. + + இந்த அம்சம், <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> நீட்டிப்புக்கு மாற்றாகும். நீட்டிப்பிலுள்ள உள்ளமைவு இந்த அம்சத்திற்குப் பயன்படுத்தப்படும், எனினும் இதற்குப் பதிலாக Chrome கொள்கைகளைப் பயன்படுத்துமாறு பரிந்துரைக்கிறோம். இது எதிர்காலத்தில் சிறப்பான இணக்கத்தன்மையை உறுதிசெய்யும்.</translation> <translation id="3997519162482760140">SAML உள்நுழைவுப் பக்கங்களில் வீடியோ எடுக்கும் சாதனங்களுக்கு அணுகல் வழங்கப்படும் URLகள்</translation> <translation id="4001275826058808087">இந்தக் கொடியை Chrome OS இல் பதிவுசெய்தல் வழியாகச் சலுகைகளை மீட்டெடுக்க பயனர்களை அனுமதிக்கலாமா என்பதைக் கட்டுப்படுத்த நிறுவன சாதனங்களுக்கான IT நிர்வாகிகள் பயன்படுத்தலாம். @@ -1513,6 +1526,7 @@ வடிவங்களின் எடுத்துக்காட்டுகளுக்கு https://www.chromium.org/developers/how-tos/chrome-frame-getting-started என்கிற முகவரிக்குச் செல்லவும்.</translation> <translation id="467449052039111439">URL களின் பட்டியலைத் திற</translation> +<translation id="4674871290487541952">நீட்டிப்புப் புதுப்பிப்புகள் மற்றும் நிறுவல்களுக்கான நம்பகத்தன்மைச் சோதனைகளில் பாதுகாப்பற்ற அல்காரிதங்களை அனுமதிக்கும்</translation> <translation id="4680936297850947973">M68 இல் தடுக்கப்பட்டது. அதற்குப் பதிலாக, DefaultPopupsSettingஐப் பயன்படுத்தவும். முழுமையான விளக்கத்திற்கு, https://www.chromestatus.com/features/5675755719622656 என்ற இணைப்பைப் பார்க்கவும். @@ -2505,6 +2519,12 @@ இந்தக் கொள்கை False என அமைக்கப்பட்டால், பின்னணிப் பயன்முறை முடக்கப்படும், பயனரால் உலாவி அமைப்புகளில் கட்டுப்படுத்த முடியாது. இந்தக் கொள்கை அமைக்கப்படாமல் விடப்பட்டால், பின்னணிப் பயன்முறை முதலில் முடக்கப்பட்டிருக்கும், பயனரால் உலாவி அமைப்புகளில் அதனைக் கட்டுப்படுத்த முடியும்.</translation> +<translation id="7123266440503901785">பாதுகாப்பான புதுப்பிப்பு, நீட்டிப்புகளை நிறுவுதல் போன்றவற்றை <ph name="PRODUCT_NAME" /> வழங்குகிறது. எனினும், பாதுகாப்பற்ற கையொப்பம் அல்லது SHA1 போன்ற ஹேஷிங் அல்காரிதங்கள் மூலம் மட்டுமே Chrome இணைய அங்காடிக்கு வெளியே ஹோஸ்ட் செய்யப்பட்டுள்ள சில நீட்டிப்புகளின் உள்ளடக்கங்களைப் பாதுகாக்க முடியும். இந்தக் கொள்கை முடக்கப்படும்போது, Chrome அத்தகைய நீட்டிப்புகளைப் புதிதாக நிறுவவோ புதுப்பிக்கவோ அனுமதிக்காது (அதற்கு நீட்டிப்பு டெவெலப்பர்கள் அந்த நீட்டிப்பை வலுவான அல்காரிதங்களுடன் மீண்டும் உருவாக்க வேண்டும்). இந்தக் கொள்கை இயக்கப்பட்டிருக்கும்போது, அத்தகைய புதுப்பிப்புகளை நிறுவவும் புதுப்பிக்கவும் அனுமதிக்கப்படும். + + இந்தக் கொள்கை அமைக்கப்படாவிட்டால், கொள்கை இயக்கப்பட்டுள்ளபோது செயல்படக்கூடிய நடத்தைக்கு இயல்புநிலையாக அமைக்கப்படும். + <ph name="PRODUCT_NAME" /> 75 முதல், இந்தக் கொள்கை அமைக்கப்படாவிட்டால், கொள்கை முடக்கப்பட்டுள்ளபோது செயல்படக்கூடிய நடத்தைக்கு இயல்புநிலையாக அமைக்கப்படும். + + <ph name="PRODUCT_NAME" /> 77 முதல், இந்தக் கொள்கை புறக்கணிக்கப்பட்டு, முடக்கப்பட்டதாகக் கருதப்படும்.</translation> <translation id="7126716959063786004">செயல் நிர்வாகியில் செயலாக்கங்களை முடிப்பதை இயக்கும்</translation> <translation id="7127892035367404455">இலக்குப் பதிப்புக்கு பின்னோக்கி மீட்டமைத்தல்</translation> <translation id="7128918109610518786">தொடக்கப் பட்டியில் பின்செய்யப்பட்ட பயன்பாடுகளாக <ph name="PRODUCT_OS_NAME" /> காண்பிக்கும்
diff --git a/components/policy/resources/policy_templates_te.xtb b/components/policy/resources/policy_templates_te.xtb index 6dafac8..6b52a13 100644 --- a/components/policy/resources/policy_templates_te.xtb +++ b/components/policy/resources/policy_templates_te.xtb
@@ -57,7 +57,7 @@ <translation id="1093082332347834239">ఈ సెట్టింగ్ను ప్రారంభిస్తే, రిమోట్ సహాయక హోస్ట్ <ph name="UIACCESS_PERMISSION_NAME" /> అనుమతులతో కూడిన ప్రక్రియలో అమలు చేయబడుతుంది. దీని వలన స్థానిక వినియోగదారు యొక్క డెస్క్టాప్పై ఉన్న నిర్వాహక సామర్థ్య విండోలతో రిమోట్ వినియోగదారులు పరస్పర చర్య చేయగలుగుతారు. ఈ సెట్టింగ్ను నిలిపివేసినా లేదా కాన్ఫిగర్ చేయకపోయినా, వినియోగదారు సందర్భానుసారం, రిమోట్ సహాయక హోస్ట్ అమలు చేయబడుతుంది మరియు రిమోట్ వినియోగదారులు డెస్క్టాప్పై ఉన్న నిర్వాహక సామర్థ్య విండోలతో పరస్పర చర్య చేయలేరు.</translation> -<translation id="1096105751829466145">డిఫాల్ట్ శోధన ప్రదాత</translation> +<translation id="1096105751829466145">డిఫాల్ట్ శోధన ప్రదాత</translation> <translation id="1099282607296956954">ప్రతి సైట్ కోసం సైట్ ఐసోలేషన్ను ప్రారంభించండి</translation> <translation id="1100570158310952027"> ఈ విధానం భద్రతా పరిమితులు వర్తించని అసురక్షిత మూలాల (URLలు) జాబితాని @@ -167,13 +167,13 @@ <translation id="1327466551276625742">ఆఫ్లైన్లో ఉన్నప్పుడు నెట్వర్క్ కాన్ఫిగరేషన్ ప్రాంప్ట్ను ప్రారంభించండి</translation> <translation id="1330145147221172764">స్క్రీన్లో కీబోర్డ్ను ప్రారంభించండి</translation> <translation id="13356285923490863">విధానం పేరు</translation> -<translation id="1347198119056266798">ఈ విధానం నిలిపివేయబడింది, దయచేసి బదులుగా <ph name="FORCE_GOOGLE_SAFE_SEARCH_POLICY_NAME" /> మరియు <ph name="FORCE_YOUTUBE_RESTRICT_POLICY_NAME" />ని ఉపయోగించండి. <ph name="FORCE_GOOGLE_SAFE_SEARCH_POLICY_NAME" />, <ph name="FORCE_YOUTUBE_RESTRICT_POLICY_NAME" /> లేదా (నిలిపివేయబడిన) <ph name="FORCE_YOUTUBE_SAFETY_MODE_POLICY_NAME" /> విధానాలను సెట్ చేస్తే ఈ విధానం విస్మరించబడుతుంది. +<translation id="1347198119056266798">ఈ విధానం నిలిపివేయబడింది, బదులుగా <ph name="FORCE_GOOGLE_SAFE_SEARCH_POLICY_NAME" /> మరియు <ph name="FORCE_YOUTUBE_RESTRICT_POLICY_NAME" />ను దయచేసి ఉపయోగించండి. ఒకవేళ <ph name="FORCE_GOOGLE_SAFE_SEARCH_POLICY_NAME" />, <ph name="FORCE_YOUTUBE_RESTRICT_POLICY_NAME" /> లేదా (నిలిపివేయబడిన) <ph name="FORCE_YOUTUBE_SAFETY_MODE_POLICY_NAME" /> విధానాలను సెట్ చేస్తే, ఈ విధానం విస్మరించబడుతుంది. -Google వెబ్ శోధనలో సురక్షిత శోధనను యాక్టివ్గా ఉంచి ప్రశ్నలు వెతికేలా తప్పనిసరి చేస్తుంది. వినియోగదారులు ఈ సెట్టింగ్ను మార్చకుండా నిరోధిస్తుంది. ఈ సెట్టింగ్ YouTubeలో మధ్యస్థ పరిమిత మోడ్ను కూడా నిర్బంధిస్తుంది. +Google వెబ్ శోధనలో సురక్షిత శోధనను యాక్టివ్గా ఉంచి ప్రశ్నలను వెతికేలా నిర్బంధిస్తుంది, అంతే కాక వినియోగదారులు ఈ సెట్టింగ్ను మార్చకుండా నిరోధిస్తుంది. ఈ సెట్టింగ్ YouTubeలో మధ్యస్థ పరిమితం చేయబడిన మోడ్ను కూడా నిర్బంధిస్తుంది. -మీరు ఈ సెట్టింగ్ను ప్రారంభిస్తే, Google శోధనలో సురక్షితశోధన మరియు YouTubeలో మధ్యస్థ పరిమిత మోడ్ ఎల్లప్పుడూ యాక్టివ్గా ఉంటాయి. +మీరు ఈ సెట్టింగ్ను ప్రారంభిస్తే, Google శోధనలో సురక్షిత శోధన మరియు YouTubeలో మధ్యస్థ పరిమితం చేయబడిన మోడ్ ఎప్పుడూ యాక్టివ్గా ఉంటాయి. -మీరు ఈ సెట్టింగ్ను నిలిపివేస్తే లేదా ఏ విలువ సెట్ చేయకపోతే, Google శోధనలోని సురక్షితశోధన మరియు YouTubeలోని పరిమిత మోడ్ అమలు చేయబడవు.</translation> +మీరు ఈ సెట్టింగ్ను నిలిపివేస్తే లేదా ఏ విలువనూ సెట్ చేయకపోతే, Google శోధనలోని సురక్షిత శోధన మరియు YouTubeలోని పరిమితం చేయబడిన మోడ్ అమలు చేయబడవు.</translation> <translation id="1352174694615491349">ఈ విధానం క్లయింట్ సర్టిఫికెట్లు ఉపయోగంలో ఉన్నప్పుడు HTTP/2 కనెక్షన్ ఏకమయ్యేలా చేస్తుంది. ఒక పద్ధతిలో ఏకం చేయడానికి, వీలైన కొత్త కనెక్షన్ హోస్ట్పేరు మరియు ఇప్పటికే ఉన్న కనెక్షన్ యొక్క పాత హోస్ట్పేరు రెండూ కూడా ఈ విధానంలో వివరించిన ఒకటి లేదా అంతకన్నా ఎక్కువ నమూనాలతో తప్పక సరిపోలాల్సి ఉంటుంది. ఈ విధానం URLBlacklist ఫిల్టర్ ఫార్మాట్ను ఉపయోగిస్తున్న హోస్ట్ల జాబితాను కలిగి ఉంటుంది: "example.com" అనేది "example.com"కు సరిపోలుతుంది మరియు దాని అన్ని ఉపడొమైన్లు (ఉదాహరణకు "sub.example.com"), అయితే ఏది ఏమైనా ".example.net" అనేది "example.net"తో ఖచ్చితంగా సరిపోలేలా ఉండాలి. క్లయింట్ సర్టిఫికేట్లను ఉపయోగించే కనెక్షన్లపై విభిన్న హోస్ట్లకు ఏకీకరణ అభ్యర్ధనలు చేయడం మూలంగా భద్రత మరియు గోప్యతా సమస్యలు ఉత్పన్నం కావచ్చు, ఎందుకంటే వినియోగదారు ఈ అధికారాన్ని అధికారికంగా ఆమోదించకపోయినప్పటికీ, అన్ని అభ్యర్థనలకు పరిసర అధికారం తెలియజేయబడుతుంది. ఈ విధానం తాత్కాలికమైనది మరియు భవిష్యత్తు విడుదలలో తీసివేయబడుతుంది. Https://crbug.com/855690 చూడండి. @@ -193,7 +193,7 @@ <translation id="1384459581748403878">సూచన: <ph name="REFERENCE_URL" /></translation> <translation id="1387596372902085462">Symantec Corporation యొక్క Legacy PKI Infrastructureలో విశ్వసనీయతను ప్రారంభించాలా లేదా అన్న సూచిక</translation> <translation id="1393485621820363363">ఎంటర్ప్రైజ్ పరికరం ప్రింటర్లు ప్రారంభించబడ్డాయి</translation> -<translation id="1397855852561539316">డిఫాల్ట్ శోధన ప్రదాత URLను సిఫార్సు చేసింది</translation> +<translation id="1397855852561539316">డిఫాల్ట్ శోధన ప్రదాత, URLను సిఫార్సు చేస్తుంది</translation> <translation id="1413936351612032792">Linux యాప్ల వినియోగం గురించి సమాచారాన్ని నివేదించండి</translation> <translation id="142346659686073702">Crostiniని ఉపయోగించడానికి అనుబంధంగా లేని వినియోగదారులను అనుమతించండి</translation> <translation id="1426410128494586442">అవును</translation> @@ -391,11 +391,11 @@ అయితే ఈ విధానాన్ని ఒప్పుకు సెట్ చేసినా చేయకున్నా, గణాంకాలు నివేదించబడతాయి.</translation> <translation id="1843117931376765605">వినియోగదారు విధానానికి రిఫ్రెష్ రేట్</translation> <translation id="1844620919405873871">త్వరిత అన్లాక్ సంబంధిత విధానాలను కాన్ఫిగర్ చేస్తుంది.</translation> -<translation id="1847960418907100918">POSTతో తక్షణ శోధన చేస్తున్నప్పుడు ఉపయోగించే పరామితులను పేర్కొంటుంది. ఇందులో కామాతో వేరు చేయబడిన పేరు/విలువ జతలు ఉంటాయి. విలువ ఎగువ ఉదాహరణలోని {searchTerms} వంటి టెంప్లేట్ పరామితి అయితే, ఇది వాస్తవ శోధన పదాల డేటాతో భర్తీ చేయబడుతుంది. +<translation id="1847960418907100918">POSTతో తక్షణ శోధన చేస్తున్నప్పుడు ఉపయోగించే పారామీటర్లను పేర్కొంటుంది. ఇందులో కామాతో వేరు చేయబడిన పేరు/విలువ జతలు ఉంటాయి. విలువ ఎగువ ఉదాహరణలోని {searchTerms} వంటి టెంప్లేట్ పారామీటర్ అయితే, ఇది వాస్తవ శోధన పదాల డేటాతో భర్తీ చేయబడుతుంది. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, తక్షణ శోధన అభ్యర్థన GET పద్ధతిని ఉపయోగించి పంపబడుతుంది. - 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడినప్పుడు మాత్రమే ఈ విధానం గౌరవించబడుతుంది.</translation> + 'DefaultSearchProviderEnabled' విధానాన్ని ప్రారంభించినప్పుడు మాత్రమే ఈ విధానం వర్తిస్తుంది.</translation> <translation id="1852294065645015766">మీడియా స్వీయ ప్లేని అనుమతించండి</translation> <translation id="1859859319036806634">హెచ్చరిక: TLS వెర్షన్ ఫాల్బ్యాక్ అనేది వెర్షన్ 52 (సుమారు సెప్టెంబర్ 2016) తర్వాత <ph name="PRODUCT_NAME" /> నుండి తీసివేయబడుతుంది, ఈ విధానం ఆపై పని చేయడం ఆగిపోతుంది. @@ -519,13 +519,13 @@ <translation id="2107601598727098402"> ఈ విధానం M72లో నిలిపివేయబడుతుంది. దయచేసి దానికి బదులుగా CloudManagementEnrollmentTokenని ఉపయోగించండి. </translation> -<translation id="2111016292707172233"><ph name="PRODUCT_NAME" /> కంటెంట్ వీక్షణలో వెతకడానికి నొక్కండి ఫీచర్ లభ్యతను ప్రారంభిస్తుంది. +<translation id="2111016292707172233"><ph name="PRODUCT_NAME" /> కంటెంట్ వీక్షణలో 'వెతకడానికి నొక్కండి' ఫీచర్ లభ్యతను ప్రారంభిస్తుంది. - మీరు ఈ సెట్టింగ్ను ప్రారంభిస్తే, వినియోగదారుకు వెతకడానికి నొక్కండి ఫీచర్ అందుబాటులో ఉంటుంది. వారు ఫీచర్ను ఆన్ లేదా ఆఫ్ చేయడాన్ని ఎంచుకోగలరు. + మీరు ఈ సెట్టింగ్ను ప్రారంభిస్తే, వినియోగదారుకు 'వెతకడానికి నొక్కండి' ఫీచర్ అందుబాటులో ఉంటుంది మరియు వారు ఫీచర్ను ఆన్ లేదా ఆఫ్ చేయడాన్ని ఎంచుకోగలరు. - మీరు ఈ సెట్టింగ్ను నిలిపివేస్తే, వెతకడానికి నొక్కండి ఫీచర్ పూర్తిగా నిలిపివేయబడుతుంది. + మీరు ఈ సెట్టింగ్ను నిలిపివేస్తే, 'వెతకడానికి నొక్కండి' ఫీచర్ పూర్తిగా నిలిపివేయబడుతుంది. - ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, దాన్ని ప్రారంభించి ఉండటంతో సమానం. పై వివరణను చూడండి.</translation> + ఈ విధానాన్ని సెట్ చేయకుండా వదిలేయడం అనేది, దానిని ప్రారంభించి ఉండటంతో సమానం, ఎగువన ఉన్న వివరణను చూడండి.</translation> <translation id="2113068765175018713">ఆటోమేటిక్ రీబూట్ పెట్టడం ద్వారా పరికరం పని చేసే సమయాన్ని పరిమితం చేయండి</translation> <translation id="2116790137063002724">వినియోగదారులను గుర్తించడానికి ఉపయోగించగల OS లాగిన్, <ph name="PRODUCT_NAME" /> ప్రొఫైల్ లాగిన్, <ph name="PRODUCT_NAME" /> ప్రొఫైల్ పేరు, <ph name="PRODUCT_NAME" /> ప్రొఫైల్ పాత్ మరియు <ph name="PRODUCT_NAME" /> అమలు చేయగలిగే పాత్ లాంటి సమాచారాన్ని నివేదించాలో లేదో ఈ విధానం నియంత్రిస్తుంది. @@ -618,7 +618,7 @@ ఈ విధానం అంతర్గత కెమెరాను మాత్రమే కాకుండా అన్ని రకాల వీడియో ఇన్పుట్లను ప్రభావితం చేస్తుంది.</translation> <translation id="2201555246697292490">స్థానిక సందేశ పద్ధతి వైట్లిస్ట్ను కాన్ఫిగర్ చేయండి</translation> <translation id="2204753382813641270">అర స్వయంచాలకంగా దాచబడటాన్ని నియంత్రించు</translation> -<translation id="2208976000652006649">POSTని ఉపయోగించే శోధన URL కోసం పరామితులు</translation> +<translation id="2208976000652006649">POSTని ఉపయోగించే శోధన URL కోసం పారామీటర్లు</translation> <translation id="2214880135980649323">ఈ విధానాన్ని ప్రారంభించేలా సెట్ చేసినప్పుడు, ఎంటర్ప్రైజ్ హార్డ్వేర్ ప్లాట్ఫామ్ APIని ఉపయోగించేందుకు, ఎంటర్ప్రైజ్ విధానం ద్వారా ఇన్స్టాల్ చేయబడిన ఎక్స్టెన్షన్లు అనుమతించబడతాయి. ఈ విధానాన్ని నిలిపివేసేలా సెట్ చేస్తే లేదా సెట్ చేయకపోతే, ఎంటర్ప్రైజ్ హార్డ్వేర్ ప్లాట్ఫామ్ APIని ఉపయోగించేందుకు ఎక్స్టెన్షన్లు ఏవీ అనుమతించబడవు. ఈ విధానం Hangout సేవల ఎక్స్టెన్షన్ లాంటి అంతర్భాగ ఎక్స్టెన్షన్లకు కూడా వర్తిస్తుంది.</translation> @@ -691,11 +691,11 @@ విధానాన్ని ఒప్పునకు సెట్ చేస్తే, ఈవెంట్లు లాగ్ చేయబడతాయి. విధానాన్ని తప్పునకు సెట్ చేస్తే లేదా అసలు సెట్ చేయకపోతే, ఈవెంట్లు లాగ్ చేయబడవు.</translation> -<translation id="244317009688098048">ఆటో-లాగిన్ కోసం బెయిల్అవుట్ షార్ట్కట్ను ప్రారంభించండి. +<translation id="244317009688098048">స్వీయ-లాగిన్ కోసం బెయిల్అవుట్ షార్ట్కట్ను ప్రారంభించండి. - ఈ విధానాన్ని సెట్ చేయకపోతే లేదా ఒప్పునకు సెట్ చేస్తే మరియు పరికర-స్థానిక ఖాతాను సున్నా-ఆలస్యపు ఆటో-లాగిన్కు కాన్ఫిగర్ చేస్తే, <ph name="PRODUCT_OS_NAME" /> ఆటో-లాగిన్ను తప్పించి, లాగిన్ స్క్రీన్ను చూపడం కోసం కీబోర్డ్ షార్ట్కట్ Ctrl+Alt+Sను ఆమోదిస్తుంది. + ఈ విధానాన్ని సెట్ చేయకపోతే లేదా 'ఒప్పు'గా సెట్ చేస్తే మరియు పరికర-స్థానిక ఖాతాను సున్నా-ఆలస్యపు స్వీయ-లాగిన్కు కాన్ఫిగర్ చేస్తే, <ph name="PRODUCT_OS_NAME" /> స్వీయ-లాగిన్ను తప్పించి, లాగిన్ స్క్రీన్ను చూపడం కోసం కీబోర్డ్ షార్ట్కట్ Ctrl+Alt+Sని ఆమోదిస్తుంది. - ఈ విధానాన్ని తప్పునకు సెట్ చేస్తే, సున్నా-ఆలస్యపు ఆటో-లాగిన్ (కాన్ఫిగర్ చేసి ఉంటే) తప్పించబడదు.</translation> + ఈ విధానాన్ని 'తప్పు'గా సెట్ చేస్తే, సున్నా-ఆలస్యపు స్వీయ-లాగిన్ (కాన్ఫిగర్ చేసి ఉంటే) తప్పించబడదు.</translation> <translation id="2463365186486772703">అప్లికేషన్ భాష</translation> <translation id="2466131534462628618">క్యాప్టివ్ పోర్టల్ ప్రామాణీకరణ ప్రాక్సీని విస్మరిస్తుంది</translation> <translation id="2482676533225429905">స్థానిక సందేశ పద్ధతి</translation> @@ -717,12 +717,12 @@ ఈ విధానాన్ని తప్పుకు సెట్ చేస్తే, నెట్వర్క్ కాన్ఫిగరేషన్ ప్రాంప్ట్కు బదులుగా లోప సందేశం ప్రదర్శించబడుతుంది.</translation> <translation id="2498238926436517902">అరను ఎల్లప్పుడూ స్వయంచాలకంగా దాచు</translation> -<translation id="2514328368635166290">డిఫాల్ట్ శోధన ప్రొవైడర్ యొక్క ఇష్టమైన చిహ్నం URLను పేర్కొంటుంది. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, శోధన ప్రొవైడర్కు చిహ్నం ఉండదు. ఈ విధానం 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడినప్పుడు మాత్రమే పరిగణించబడుతుంది.</translation> +<translation id="2514328368635166290">డిఫాల్ట్ శోధన ప్రదాత యొక్క ఇష్టమైన చిహ్నం URLను పేర్కొంటుంది. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, శోధన ప్రదాతకు చిహ్నం ఉండదు. ఈ విధానం 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడినప్పుడు మాత్రమే పరిగణించబడుతుంది.</translation> <translation id="2516600974234263142"><ph name="PRODUCT_NAME" />లో ముద్రించడాన్ని ప్రారంభిస్తుంది మరియు వినియోగదారులు ఈ సెట్టింగ్ను మార్చకుండా నిరోధిస్తుంది. - ఈ సెట్టింగ్ ప్రారంభించబడినా లేదా కాన్ఫిగర్ చేయకపోయినా, వినియోగదారులు ముద్రించవచ్చు. + ఈ సెట్టింగ్ను ప్రారంభించినా లేదా కాన్ఫిగర్ చేయకపోయినా, వినియోగదారులు ముద్రించవచ్చు. - ఈ సెట్టింగ్ను నిలిపివేస్తే, వినియోగదారులు <ph name="PRODUCT_NAME" /> నుండి ముద్రించలేరు. రెంచ్ మెను, ఎక్స్టెన్షన్లు, JavaScript యాప్లు మొదలైన వాటిలో ముద్రణ నిలిపివేయబడుతుంది. ముద్రించేటప్పుడు <ph name="PRODUCT_NAME" />ని దాటవేసే ప్లగిన్ల నుండి ముద్రించడం ఇప్పటికీ సాధ్యపడుతుంది. ఉదాహరణకు, నిర్దిష్ట Flash యాప్ల లోని సందర్భ మెనూలో ముద్రణ ఎంపిక ఉంటుంది, ఈ ఎంపికకు ఈ విధానం వర్తించదు.</translation> + ఈ సెట్టింగ్ను నిలిపివేస్తే, వినియోగదారులు <ph name="PRODUCT_NAME" /> నుండి ముద్రించలేరు. రెంచ్ మెను, ఎక్స్టెన్షన్లు, JavaScript యాప్లు మొదలైన వాటిలో ముద్రణ నిలిపివేయబడుతుంది. ముద్రించేటప్పుడు <ph name="PRODUCT_NAME" />ను దాటవేసే ప్లగిన్ల నుండి ముద్రించడం ఇప్పటికీ సాధ్యపడుతుంది. ఉదాహరణకు, నిర్దిష్ట Flash యాప్లు వాటి సందర్భ మెనూలో ఈ విధానం వర్తించని ముద్రణ ఎంపికను కలిగి ఉంటాయి.</translation> <translation id="2518231489509538392">ఆడియో ప్లే కావడాన్ని అనుమతిస్తుంది</translation> <translation id="2521581787935130926">బుక్మార్క్ బార్లో యాప్ల షార్ట్కట్ను చూపండి</translation> <translation id="2529659024053332711">ప్రారంభంలో ప్రవర్తనను పేర్కొనడానికి మిమ్మల్ని అనుమతిస్తుంది. @@ -746,7 +746,7 @@ <translation id="2548572254685798999">సురక్షిత బ్రౌజింగ్కి సంబంధించిన వివరాలను నివేదించడం</translation> <translation id="2550593661567988768">సింప్లెక్స్ ముద్రణ మాత్రమే</translation> <translation id="2552966063069741410">సమయ మండలి</translation> -<translation id="2562339630163277285">తక్షణ ఫలితాలను అందించడానికి ఉపయోగించాల్సిన శోధన ఇంజిన్ URLను పేర్కొంటుంది. URL <ph name="SEARCH_TERM_MARKER" /> అనే స్ట్రింగ్ను కలిగి ఉంటుంది, ఇది ప్రశ్న సమయంలో వినియోగదారు అప్పటివరకు నమోదు చేసిన వచనంతో భర్తీ చేస్తుంది. +<translation id="2562339630163277285">తక్షణ ఫలితాలను అందించడానికి ఉపయోగించాల్సిన శోధన ఇంజిన్ URLను పేర్కొంటుంది. URLలో <ph name="SEARCH_TERM_MARKER" /> అనే స్ట్రింగ్ ఉండాలి, ఇది ప్రశ్న సమయంలో వినియోగదారు అప్పటివరకు నమోదు చేసిన వచనంతో భర్తీ చేస్తుంది. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, తక్షణ శోధన ఫలితాలు ఏవీ అందించబడవు. @@ -798,11 +798,11 @@ <translation id="2647069081229792812">బుక్మార్క్ సవరణని ప్రారంభించండి లేదా నిలిపివేయండి</translation> <translation id="2649896281375932517">వినియోగదారులను నిర్ణయించుకోనివ్వండి</translation> <translation id="2650049181907741121">వినియోగదారు మూతను మూసివేసినప్పుడు తీసుకోవలసిన చర్య</translation> -<translation id="2655233147335439767">డిఫాల్ట్ శోధనను చేస్తున్నప్పుడు ఉపయోగించాల్సిన శోధన ఇంజిన్ URLను పేర్కొంటుంది. URL '<ph name="SEARCH_TERM_MARKER" />' అనే స్ట్రింగ్ను కలిగి ఉంటుంది. ఇది ప్రశ్న సమయంలో వినియోగదారు శోధించే పదాలతో భర్తీ చేయబడుతుంది. +<translation id="2655233147335439767">డిఫాల్ట్ శోధనను చేస్తున్నప్పుడు ఉపయోగించాల్సిన శోధన ఇంజిన్ URLను పేర్కొంటుంది. URLలో '<ph name="SEARCH_TERM_MARKER" />' అనే స్ట్రింగ్ ఉండాలి, ఇది ప్రశ్న సమయంలో వినియోగదారు వెతికే పదాలతో భర్తీ చేయబడుతుంది. Google శోధన URLను ఇలా పేర్కొనవచ్చు: <ph name="GOOGLE_SEARCH_URL" />. - 'DefaultSearchProviderEnabled' విధానాన్ని ప్రారంభించినప్పుడు, ఈ ఎంపికను తప్పనిసరిగా సెట్ చేయాలి. ఇది ఈ సందర్భంలో మాత్రమే పరిగణించబడుతుంది.</translation> + 'DefaultSearchProviderEnabled' విధానాన్ని ప్రారంభించినప్పుడు, ఈ ఎంపికను తప్పనిసరిగా సెట్ చేయాలి, ఇది ఈ సందర్భంలో మాత్రమే పరిగణించబడుతుంది.</translation> <translation id="2659019163577049044">ఈ సెట్టింగ్ ప్రారంభించబడితే, వినియోగదారులు వారి SMS సందేశాలను వారి ఫోన్లు మరియు Chromebookల మధ్య సమకాలీకరించేలా వారి పరికరాలను సెటప్ చేయడానికి అనుమతించబడతారు. ఈ విధానం అనుమతించబడితే, వినియోగదారులు ప్రత్యేకంగా ఈ ఫీచర్ను ఎంచుకోవడం ద్వారా సెటప్ విధానాన్ని పూర్తి చేయాల్సి ఉంటుంది. ఒకసారి సెటప్ విధానం పూర్తయిన తర్వాత, వినియోగదారులు వారి Chromebookలలో SMS సందేశాలను పంపగలుగుతారు మరియు అందుకోగలుగుతారు. ఈ సెట్టింగ్ నిలిపివేయబడితే, వినియోగదారులు SMS సమకాలీకరణను సెటప్ చేయడానికి అనుమతించబడరు. @@ -817,7 +817,7 @@ ఒకవేళ విధానం కాన్ఫిగర్ చేయబడకపోతే, వినియోగదారు ఈ సెట్టింగ్ను మార్చగలుగుతారు. </translation> <translation id="2672012807430078509">SMB మౌంట్ల కోసం ప్రమాణీకరణ ప్రోటోకాల్ లాగా NTLMని ప్రారంభించడాన్ని నియంత్రిస్తుంది</translation> -<translation id="267596348720209223">శోధన ప్రొవైడర్ ద్వారా మద్దతు గల అక్షర ఎన్కోడింగ్లను పేర్కొంటుంది. ఎన్కోడింగ్లు అంటే UTF-8 GB2312 మరియు ISO-8859-1 వంటి కోడ్ పేజీ పేర్లు. అవి అందించబడిన క్రమంలో ప్రయత్నించబడతాయి. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, UTF-8 డిఫాల్ట్ ఉపయోగించబడుతుంది. ఈ విధానం కేవలం 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడితే పరిగణించబడుతుంది.</translation> +<translation id="267596348720209223">శోధన ప్రదాత ద్వారా మద్దతు ఉన్న అక్షర ఎన్కోడింగ్లను పేర్కొంటుంది. ఎన్కోడింగ్లు అంటే UTF-8 GB2312 మరియు ISO-8859-1 వంటి కోడ్ పేజీ పేర్లు. అవి అందించబడిన క్రమంలో ప్రయత్నించబడతాయి. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, UTF-8 డిఫాల్ట్ ఉపయోగించబడుతుంది. ఈ విధానం కేవలం 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడితేనే పరిగణించబడుతుంది.</translation> <translation id="268577405881275241">డేటా కుదింపు ప్రాక్సీ ఫీచర్ను ప్రారంభించండి</translation> <translation id="2693108589792503178">పాస్వర్డ్ను మార్చే URLను కాన్ఫిగర్ చేయండి.</translation> <translation id="2710534340210290498">ఈ విధానాన్ని తప్పుకు సెట్ చేస్తే, వినియోగదారులు స్క్రీన్ను లాక్ చేయలేరు (వినియోగదారు సెషన్ నుండి సైన్ అవుట్ చేయడం మాత్రమే సాధ్యమవుతుంది). ఈ సెట్టింగ్ను ఒప్పుకు సెట్ చేస్తే లేదా సెట్ చేయకుండా వదిలివేస్తే, పాస్వర్డ్ కలిగి ఉండే వినియోగదారులు స్క్రీన్ను లాక్ చేయగలరు.</translation> @@ -867,6 +867,11 @@ ఈ సెట్టింగ్ నిలిపివేయబడితే మరియు అవుట్గోయింగ్ UDP కనెక్షన్లు ఫైర్వాల్ ద్వారా ఫిల్టర్ చేయబడితే, అప్పుడు ఈ మెషీన్ స్థానిక నెట్వర్క్లోని క్లయింట్ మెషీన్ల నుండి మాత్రమే కనెక్షన్లను అనుమతిస్తుంది. ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, సెట్టింగ్ ప్రారంభించబడుతుంది.</translation> +<translation id="2813281962735757923"><ph name="PRODUCT_OS_NAME" /> పరికరం అప్డేట్లను ఆటోమేటిక్గా తనిఖీ చేయకుండా నిరోధించే సమయ వ్యవధులను ఈ విధానం నియంత్రిస్తుంది. + ఈ విధానాన్ని సమయ విరామాలు గల ఒక ఖాళీ-కాని జాబితాకు సెట్ చేసినప్పుడు: + పేర్కొన్న సమయ విరామాలలో పరికరాలు అప్డేట్ల కోసం ఆటోమేటిక్గా తనిఖీ చేయలేవు. పాత వెర్షన్కు మార్చాల్సిన అవసరం ఉన్న లేదా కనీస <ph name="PRODUCT_OS_NAME" /> వెర్షన్ కంటే తక్కువ ఉన్న పరికరాలలో అంచనా వేస్తున్న భద్రతా సమస్యల కారణంగా అవి ఈ విధానం ప్రకారం ప్రభావితం కావు. అలాగే, వినియోగదారులు లేదా నిర్వాహకులు అభ్యర్థించిన అప్డేట్ తనిఖీలను ఈ విధానం బ్లాక్ చేయదు. + ఈ విధానం సెట్ చేయకుండా ఉన్నప్పుడు లేదా సమయ విరామాలు లేనప్పుడు: + ఈ విధానం వలన ఆటోమేటిక్ అప్డేట్ తనిఖీలు ఏవీ బ్లాక్ చేయబడవు, కానీ ఇతర విధానాల వలన బ్లాక్ కావచ్చు. ఈ ఫీచర్ కేవలం స్వీయ ప్రారంభ కియోస్క్లుగా కాన్ఫిగర్ చేసిన Chrome పరికరాలలో మాత్రమే ప్రారంభించబడుతుంది. ఇతర పరికరాలు ఈ విధానం వలన నియంత్రించబడవు.</translation> <translation id="2823870601012066791"><ph name="PRODUCT_OS_NAME" /> క్లయింట్ల కోసం Windows రిజిస్ట్రీ స్థానం:</translation> <translation id="2824715612115726353">అజ్ఞాత మోడ్ని ప్రారంభించు</translation> <translation id="283695852388224413">విధానం సెట్ చేయబడితే, కాన్ఫిగర్ చేయబడిన PIN యొక్క గరిష్ట అంకెల పరిమితి అమలు చేయబడుతుంది. విలువ 0 లేదా తక్కువ ఉంటే గరిష్ట అంకెల పరిమితి ఉండదు; ఆ సందర్భంలో వినియోగదారు ఎంత పొడవాటి PINని అయినా సెట్ చేసుకోవచ్చు. ఈ సెట్టింగ్ <ph name="PIN_UNLOCK_MINIMUM_LENGTH_POLICY_NAME" /> కంటే తక్కువ ఉండి, 0 కంటే పెద్దది అయితే, గరిష్ట అంకెల పరిమితి కనిష్ట అంకెల పరిమితికి సమానంగా ఉంటుంది. @@ -964,7 +969,7 @@ ఒకవేళ ఏ ఒక్క అంశం కూడా ${url}ని కలిగి లేకుంటే, URL ఆదేశ- పంక్తి వరుస చివరన జత చేయబడుతుంది. ఆవరణ వేరియబుల్లు విస్తరించబడ్డాయి. Windowsలో, %ABC% అనేది ABC ఆవరణ వేరియబుల్తో భర్తీ చేయబడుతుంది. అయితే Mac OS Xలో మరియు Linuxలలో, ${ABC} అనేది ABC ఆవరణ వేరియబుల్తో భర్తీ చేయబడుతుంది.</translation> -<translation id="3048744057455266684">ఈ విధానాన్ని సెట్ చేసినప్పుడు, ఓమ్నిపెట్టె నుండి సూచించబడిన శోధన URL యొక్క ప్రశ్న స్ట్రింగ్ లేదా భాగం ఐడెంటిఫైయర్లో ఈ పరామితి ఉంటే, సూచనలో ముడి శోధన URLకు బదులుగా శోధన పదాలు మరియు శోధన ప్రదాత చూపబడతాయి. +<translation id="3048744057455266684">ఈ విధానాన్ని సెట్ చేసి ఉండి, ఓమ్నిబాక్స్ నుండి సూచించబడిన శోధన URL యొక్క ప్రశ్న స్ట్రింగ్ లేదా భాగం ఐడెంటిఫైయర్లో ఈ పారామీటర్ ఉంటే, సూచనలో ముడి శోధన URLకు బదులుగా శోధన పదాలు మరియు శోధన ప్రదాత చూపబడతాయి. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకుంటే, శోధన పద భర్తీ అమలు చేయబడదు. @@ -1133,7 +1138,7 @@ ఈ విధానం ఉపయోగించడానికి ఇంకా సిద్ధంగా లేదు, దయచేసి దీన్ని ఉపయోగించవద్దు.</translation> <translation id="3459509316159669723">ముద్రణ</translation> -<translation id="3460784402832014830">కొత్త ట్యాబ్ పేజీని అందించడానికి శోధన ఇంజిన్ ఉపయోగించే URLని పేర్కొంటుంది. +<translation id="3460784402832014830">కొత్త ట్యాబ్ పేజీని అందించడానికి శోధన ఇంజిన్ ఉపయోగించే URLను పేర్కొంటుంది. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, కొత్త ట్యాబ్ పేజీ అందించబడదు. @@ -1165,11 +1170,11 @@ ఈ విధానాన్ని 'PasswordProtectionWarningOnPhishingReuse'కి సెట్ చేసినట్లయితే, వినియోగదారులు తమ రక్షిత పాస్వర్డ్ని ఫిషింగ్ సైట్లో మళ్లీ ఉపయోగించినప్పుడు పాస్వర్డ్ రక్షణ హెచ్చరిక చూపబడుతుంది. ఈ విధానాన్ని సెట్ చేయకుంటే, పాస్వర్డ్ రక్షణ సేవ Google పాస్వర్డ్లను మాత్రమే కాపాడుతుంది, కానీ వినియోగదారు ఈ సెట్టింగ్ని మార్చగలుగుతారు.</translation> <translation id="3502555714327823858">అన్ని డూప్లెక్స్ మోడ్లను అనుమతించండి</translation> <translation id="350443680860256679">ARCని కాన్ఫిగర్ చేయండి</translation> -<translation id="3504791027627803580">చిత్ర శోధనను అందించడానికి ఉపయోగించే శోధన ఇంజిన్ యొక్క URLని పేర్కొంటుంది. శోధన అభ్యర్థనలు GET పద్ధతిని ఉపయోగించి పంపబడతాయి. DefaultSearchProviderImageURLPostParams విధానాన్ని సెట్ చేస్తే అప్పుడు చిత్ర శోధన అభ్యర్థనలు బదులుగా POST పద్ధతిని ఉపయోగిస్తాయి. +<translation id="3504791027627803580">చిత్ర శోధనను అందించడానికి ఉపయోగించే శోధన ఇంజిన్ యొక్క URLను పేర్కొంటుంది. శోధన అభ్యర్థనలు GET పద్ధతిని ఉపయోగించి పంపబడతాయి. DefaultSearchProviderImageURLPostParams విధానాన్ని సెట్ చేస్తే అప్పుడు చిత్ర శోధన అభ్యర్థనలు బదులుగా POST పద్ధతిని ఉపయోగిస్తాయి. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, చిత్ర శోధన ఉపయోగించబడదు. - 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడినప్పుడు మాత్రమే ఈ విధానం గౌరవించబడుతుంది.</translation> + 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడినప్పుడు మాత్రమే ఈ విధానం వర్తిస్తుంది.</translation> <translation id="350797926066071931">అనువాదాన్ని ప్రారంభించు</translation> <translation id="3512226956150568738">ARCని అమలు చేయడం కోసం ext4కు తరలించాల్సి రావడం కంటే ముందే క్లయింట్ పరికర మోడల్లో ARCకి మద్దతు ఉన్నట్లయితే, ArcEnabled విధానం ఒప్పు అని సెట్ చేయబడి ఉంటే, ఈ ఎంపిక AskUser (విలువ 3) లాగా ప్రవర్తిస్తుంది. మిగిలిన అన్ని సందర్భాలలో (పరికర మోడల్లో ముందుగా ARCకి మద్దతు లేకుంటే లేదా ArcEnabled విధానం తప్పు లాగా సెట్ చేయబడి ఉంటే), ఈ విలువ DisallowArc (విలువ 0)కు సమానం.</translation> <translation id="3513655665999652754">Quirks Server మానిటర్ క్రమాంకనాన్ని సర్దుబాటు చేయడానికి ICC డిస్ప్లే ప్రొఫైల్ల వంటి హార్డ్వేర్-నిర్దిష్ట కాన్ఫిగరేషన్ ఫైల్లను అందిస్తుంది. @@ -1189,6 +1194,7 @@ <translation id="3547954654003013442">ప్రాక్సీ సెట్టింగ్లు</translation> <translation id="355118380775352753">ప్రత్యామ్నాయ బ్రౌజర్లో తెరిచే వెబ్సైట్లు</translation> <translation id="3577251398714997599">అనుచిత ప్రకటనల సైట్ల కోసం ప్రకటనల సెట్టింగ్</translation> +<translation id="3591527072193107424">లెగసీ బ్రౌజర్ మద్దతు ఫీచర్ను ప్రారంభించండి.</translation> <translation id="3591584750136265240">లాగిన్ ప్రామాణీకరణ ప్రవర్తనను కాన్ఫిగర్ చేయండి</translation> <translation id="3624171042292187668"> మీరు వేరు చేయాలనుకుంటున్న సైట్ల జాబితాతో IsolateOriginsను ఉపయోగించి, వినియోగదారుల కోసం వేరు చేయడం మరియు పరిమిత ప్రభావం రెండు అంశాలలో ఉత్తమమైనది పొందడానికి IsolateOrigins విధానం సెట్టింగ్లను పరిశీలించాలనుకోవచ్చు. ఈ SitePerProcess సెట్టింగ్, అన్ని సైట్లను వేరు చేస్తుంది. @@ -1205,7 +1211,7 @@ 'ఒప్పు'గా సెట్ చేస్తే లేదా కాన్ఫిగర్ చేయకుంటే, వినియోగదారు టాస్క్ మేనేజర్లో ప్రాసెస్లను ముగించగలరు.</translation> <translation id="3646859102161347133">స్క్రీన్ మాగ్నిఫైయర్ రకాన్ని సెట్ చేయండి</translation> -<translation id="3653237928288822292">డిఫాల్ట్ శోధనను అందింపుదారు చిహ్నం</translation> +<translation id="3653237928288822292">డిఫాల్ట్ శోధన ప్రదాత చిహ్నం</translation> <translation id="3660510274595679517"> ఈ విధానం ఒప్పుకు సెట్ చేయబడితే, క్లౌడ్ నిర్వహణ నమోదు తప్పనిసరి అవుతుంది, Chrome ప్రారంభ ప్రక్రియ కనుక విఫలమైతే, అది బ్లాక్ అవుతుంది. @@ -1281,7 +1287,7 @@ <translation id="3805659594028420438">TLS డొమైన్-బౌండ్ సర్టిఫికెట్ల ఎక్స్టెన్షన్ (విస్మరించబడింది) ప్రారంభించండి</translation> <translation id="3808945828600697669">ఆపివేయబడిన ప్లగ్ఇన్ల జాబితాని పేర్కొను</translation> <translation id="3811562426301733860">అన్ని సైట్లలో ప్రకటనలను అనుమతించండి</translation> -<translation id="3816312845600780067">ఆటో-లాగిన్ కోసం బెయిల్అవుట్ కీబోర్డ్ షార్ట్కట్ను ప్రారంభించండి</translation> +<translation id="3816312845600780067">స్వీయ-లాగిన్ కోసం బెయిల్అవుట్ కీబోర్డ్ షార్ట్కట్ను ప్రారంభించండి</translation> <translation id="3820526221169548563">స్క్రీన్పైన కీబోర్డ్ యాక్సెస్ సౌలభ్య ఫీచర్ను ప్రారంభించండి. ఈ విధానాన్ని ఒప్పునకు సెట్ చేస్తే, స్క్రీన్పైన కీబోర్డ్ ఎల్లప్పుడూ ప్రారంభించబడుతుంది. @@ -1319,13 +1325,13 @@ పేర్కొనబడకపోతే, వ్యత్యాసాల సీడ్ URL సవరించబడదు.</translation> <translation id="3863409707075047163">కనీస SSL వెర్షన్ ప్రారంభించబడుతుంది</translation> -<translation id="3864020628639910082">శోధన సూచనలను అందించడానికి ఉపయోగించాల్సిన శోధన ఇంజిన్ URLను పేర్కొంటుంది. URL <ph name="SEARCH_TERM_MARKER" /> స్ట్రింగ్ను కలిగి ఉండాలి, ఇది ప్రశ్న సమయంలో వినియోగదారు అప్పటివరకు నమోదు చేసిన వచనంతో భర్తీ చేయబడుతుంది. +<translation id="3864020628639910082">శోధన సూచనలను అందించడానికి ఉపయోగించాల్సిన శోధన ఇంజిన్ URLను పేర్కొంటుంది. URLలో <ph name="SEARCH_TERM_MARKER" /> స్ట్రింగ్ ఉండాలి, ఇది ప్రశ్న సమయంలో వినియోగదారు అప్పటివరకు నమోదు చేసిన వచనంతో భర్తీ చేయబడుతుంది. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, సూచిత URL ఏదీ ఉపయోగించబడదు. Google సూచిత URLను ఇలా పేర్కొనవచ్చు: <ph name="GOOGLE_SUGGEST_SEARCH_URL" />. - 'DefaultSearchProviderEnabled' విధానాన్ని ప్రారంభించినప్పుడు మాత్రమే ఈ విధానం పరిగణించబడుతుంది.</translation> + 'DefaultSearchProviderEnabled' విధానాన్ని ప్రారంభించినప్పుడు మాత్రమే ఈ విధానం వర్తిస్తుంది.</translation> <translation id="3864129983143201415">వినియోగదారు సెషన్లో అనుమతించాల్సిన భాషలను కాన్ఫిగర్ చేయండి</translation> <translation id="3866249974567520381">వివరణ</translation> <translation id="3868347814555911633">ఈ విధానం రిటైల్ మోడ్లో మాత్రమే యాక్టివ్గా ఉంటుంది. @@ -1333,7 +1339,7 @@ రిటైల్ మోడ్లో డెమో వినియోగదారు కోసం, పరికరాల కోసం ఆటోమేటిక్గా ఇన్స్టాల్ చేయబడిన ఎక్స్టెన్షన్లను జాబితా చేస్తుంది. ఈ ఎక్స్టెన్షన్లు పరికరంలో సేవ్ అవుతాయి మరియు ఇన్స్టాలేషన్ తర్వాత, ఆఫ్లైన్లో ఉన్నప్పుడు ఇన్స్టాల్ చేయబడతాయి. ప్రతి జాబితా నమోదు 'extension-id' ఫీల్డ్లో ఎక్స్టెన్షన్ ID మరియు 'update-url' ఫీల్డ్లో దీని అప్డేట్ url ఉన్న నిఘంటువును కలిగి ఉండాలి.</translation> -<translation id="3874773863217952418">వెతకడానికి నొక్కండి ఫీచర్ను ప్రారంభించండి</translation> +<translation id="3874773863217952418">'వెతకడానికి నొక్కండి' ఫీచర్ను ప్రారంభించండి</translation> <translation id="3877517141460819966">ఏకీకృత రెండవ దశ ప్రమాణీకరణ మోడ్</translation> <translation id="3879208481373875102">నిర్బంధంగా ఇన్స్టాల్ చేసిన వెబ్ యాప్ల జాబితాను కాన్ఫిగర్ చేయండి</translation> <translation id="388237772682176890">ఈ విధానానికి SPDY/3.1 మద్దతు తీసివేసినందున M53లో నిలిపివేయబడింది మరియు M54లో తీసివేయబడింది. @@ -1383,6 +1389,13 @@ <translation id="3965339130942650562">నిష్క్రియ వినియోగదారు లాగ్-అవుట్ అమలు అయ్యే వరకు ముగింపు సమయం</translation> <translation id="3973371701361892765">అరను ఎప్పుడూ స్వయంచాలకంగా దాచవద్దు</translation> <translation id="3984028218719007910">లాగ్ అవుట్ చేసిన తర్వాత స్థానిక ఖాతా డేటాను <ph name="PRODUCT_OS_NAME" /> ఉంచుతుందో లేదో నిర్ధారిస్తుంది. ఒప్పునకు సెట్ చేయబడితే, <ph name="PRODUCT_OS_NAME" /> ద్వారా నిరంతర ఖాతాలు ఉండబడవు. వినియోగదారు సెషన్ నుండి మొత్తం డేటా, లాగ్ అవుట్ చేయబడిన తర్వాత విస్మరించబడుతుంది. ఈ విధానం తప్పునకు సెట్ చేయబడితే లేదా కాన్ఫిగర్ చేయబడితే, పరికరం స్థానిక వినియోగదారు డేటాను ఉంచవచ్చు (ఎన్క్రిప్ట్ చేయబడుతుంది).</translation> +<translation id="398475542699441679">లెగసీ బ్రౌజర్ మద్దతును ప్రారంభించాలో లేదో ఈ విధానం నియంత్రిస్తుంది. + + ఈ విధానాన్ని సెట్ చేయకుండా వదిలేసినప్పుడు లేదా తప్పుకు సెట్ చేసినప్పుడు, Chrome నిర్దేశిత URLలను ప్రత్యామ్నాయ బ్రౌజర్లో ప్రారంభించడానికి ప్రయత్నించదు. + + ఈ విధానాన్ని ఒప్పుకు సెట్ చేసినప్పుడు, Chrome కొన్ని URLలను (Internet Explorer లాంటి) ప్రత్యామ్నాయ బ్రౌజర్లో ప్రారంభించడానికి ప్రయత్నిస్తుంది. ఈ ఫీచర్ <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> గుంపులోని విధానాలను ఉపయోగించి కాన్ఫిగర్ చేయబడుతుంది. + + ఈ ఫీచర్ <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> ఎక్స్టెన్షన్ను భర్తీ చేస్తుంది. ఎక్స్టెన్షన్ నుండి కాన్ఫిగరేషన్ ఈ ఫీచర్కు అమలు చేయబడుతుంది, కానీ దానికి బదులుగా Chrome విధానాలను ఉపయోగించాల్సిందిగా బలంగా సూచిస్తున్నాము. ఇది భవిష్యత్తులో మెరుగైన అనుకూలత సామర్థ్యం అందించడానికి అవకాశం ఉంటుంది.</translation> <translation id="3997519162482760140">SAML లాగిన్ పేజీల్లో వీడియో సంగ్రహణ పరికరాలకు యాక్సెస్ మంజూరు చేయబడే URLలు</translation> <translation id="4001275826058808087">Chrome OS నమోదు ద్వారా ఆఫర్లను రీడీమ్ చేయడానికి వినియోగదారులను అనుమతించాలా లేదా అనేదాన్ని నియంత్రించడానికి ఎంటర్ప్రైజ్ పరికరాల కోసం IT నిర్వాహకులు ఈ ఫ్లాగ్ను ఉపయోగించవచ్చు . @@ -1517,7 +1530,7 @@ ఈ విధానాన్ని ఉపయోగించినట్లయితే, ఈ విధానంలో ఉన్న విలువలకు సరిపోలిన idలను కలిగిన ప్రింటర్లు మాత్రమే వినియోగదారుకి అందుబాటులో ఉంటాయి. idలు తప్పనిసరిగా <ph name="BULK_PRINTERS_POLICY" />లో పేర్కొనబడిన ఫైల్లోని "id" లేదా "guid" ఫీల్డ్లకు సంబంధితంగా ఉండాలి. </translation> -<translation id="427632463972968153">POSTతో చిత్ర శోధన చేస్తున్నప్పుడు ఉపయోగించే పరామితులను పేర్కొంటుంది. ఇందులో కామాతో వేరు చేయబడిన పేరు/విలువ జతలు ఉంటాయి. విలువ ఎగువ ఉదాహరణలోని {imageThumbnail} వంటి టెంప్లేట్ పరామితి అయితే, ఇది వాస్తవ చిత్రం యొక్క సూక్ష్మచిత్ర డేటాతో భర్తీ చేయబడుతుంది. +<translation id="427632463972968153">POSTతో చిత్ర శోధన చేస్తున్నప్పుడు ఉపయోగించే పారామీటర్లను పేర్కొంటుంది. ఇందులో కామాతో వేరు చేయబడిన పేరు/విలువ జతలు ఉంటాయి. విలువ ఎగువ ఉదాహరణలోని {imageThumbnail} వంటి టెంప్లేట్ పారామీటర్ అయితే, ఇది వాస్తవ చిత్రం యొక్క సూక్ష్మచిత్ర డేటాతో భర్తీ చేయబడుతుంది. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, చిత్రం శోధన అభ్యర్థన GET పద్ధతిని ఉపయోగించి పంపబడుతుంది. @@ -1571,9 +1584,9 @@ <translation id="4423597592074154136">ప్రాక్సీ సెట్టింగ్లని మాన్యవల్గా పేర్కొను</translation> <translation id="4429220551923452215">బుక్మార్క్ బార్లో యాప్ల షార్ట్కట్ను ప్రారంభిస్తుంది లేదా నిలిపివేస్తుంది. - ఈ విధానాన్ని సెట్ చేయకపోతే, అప్పుడు వినియోగదారు బుక్మార్క్ బార్ సందర్భోచిత మెనూ నుండి యాప్ల షార్ట్కట్ను చూపడాన్ని లేదా దాచడాన్ని ఎంచుకోవచ్చు. + ఈ విధానాన్ని సెట్ చేయకపోతే, అప్పుడు వినియోగదారు బుక్మార్క్ బార్ సందర్భోచిత మెనూ నుండి యాప్ల షార్ట్కట్ను చూపడాన్ని లేదా దాచడాన్ని ఎంచుకోవచ్చు. - ఈ విధానాన్ని కాన్ఫిగర్ చేస్తే, అప్పుడు వినియోగదారు దానిని మార్చలేరు, అంతే కాకుండా యాప్ల షార్ట్కట్ ఎప్పుడూ చూపబడుతుంది లేదా ఎప్పటికీ చూపబడదు.</translation> + ఈ విధానం కాన్ఫిగర్ చేయబడితే, అప్పుడు వినియోగదారు దానిని మార్చలేరు, అంతే కాకుండా యాప్ల షార్ట్కట్ ఎప్పుడూ చూపబడుతుంది లేదా ఎప్పటికీ చూపబడదు.</translation> <translation id="4432762137771104529">సురక్షిత బ్రౌజింగ్ పొడిగింపు నివేదనను ప్రారంభించండి</translation> <translation id="443454694385851356">లెగసీ (అసురక్షితం)</translation> <translation id="443665821428652897">బ్రౌజర్ షట్డౌన్ చేసినప్పుడు సైట్ డేటాను క్లియర్ చేస్తుంది (ముగిసింది)</translation> @@ -1612,15 +1625,15 @@ ఈ విధానాన్ని తప్పు అని సెట్ చేస్తే, <ph name="PRODUCT_NAME" /> నిలిపివేయబడుతుంది.</translation> <translation id="4515404363392014383">విశ్వసనీయ మూలాధారాల కోసం సురక్షిత బ్రౌజింగ్ను ప్రారంభించండి</translation> <translation id="4518251772179446575">వినియోగదారుల యొక్క స్థానాన్ని సైట్ ట్రాక్ చెయ్యాలనుకున్నప్పుడు అడుగు</translation> -<translation id="4519046672992331730"><ph name="PRODUCT_NAME" /> ఓమ్నిబాక్స్లో శోధన సూచనలను ప్రారంభిస్తుంది. ఈ సెట్టింగ్ను మార్చకుండా వినియోగదారును నిరోధిస్తుంది. +<translation id="4519046672992331730"><ph name="PRODUCT_NAME" /> ఓమ్నిబాక్స్లో శోధన సూచనలను ప్రారంభిస్తుంది మరియు ఈ సెట్టింగ్ను మార్చకుండా వినియోగదారులను నిరోధిస్తుంది. మీరు ఈ సెట్టింగ్ను ప్రారంభిస్తే, శోధన సూచనలు ఉపయోగించబడతాయి. మీరు ఈ సెట్టింగ్ను నిలిపివేస్తే, శోధన సూచనలు ఎప్పటికీ ఉపయోగించబడవు. - మీరు ఈ సెట్టింగ్ను ప్రారంభించినా లేదా నిలిపివేసినా, ఈ సెట్టింగ్ను <ph name="PRODUCT_NAME" />లో వినియోగదారులు మార్చలేరు లేదా అధిగమించలేరు. + మీరు ఈ సెట్టింగ్ను ప్రారంభించినా లేదా నిలిపివేసినా, ఈ సెట్టింగ్ను <ph name="PRODUCT_NAME" />లో వినియోగదారులు మార్చలేరు లేదా భర్తీ చేయలేరు. - ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, ఇది ప్రారంభించబడుతుంది కానీ వినియోగదారు దీన్ని మార్చగలరు.</translation> + ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, ఇది ప్రారంభించబడుతుంది కానీ వినియోగదారు దీనిని మార్చగలరు.</translation> <translation id="4531706050939927436">Android అనువర్తనాలు Google Playని ఉపయోగించి Google నిర్వాహక కన్సోల్ నుండి నిర్బంధంగా ఇన్స్టాల్ చేయబడతాయి. అవి ఈ విధానాన్ని ఉపయోగించవు.</translation> <translation id="4534500438517478692">Android నియంత్రణ పేరు:</translation> <translation id="4541530620466526913">పరికర-స్థానిక ఖాతాలు</translation> @@ -1652,9 +1665,9 @@ <translation id="4632566332417930481">ఎంటర్ప్రైజ్ విధానంలో ఇన్స్టాల్ అయిన ఎక్స్టెన్షన్లలో డెవలపర్ సాధనాల వినియోగాన్ని నిరాకరించండి, ఇతర సందర్భాల్లో డెవలపర్ సాధనాల వినియోగాన్ని అనుమతించండి</translation> <translation id="4633786464238689684">ఎగువ అడ్డువరుస కీల డిఫాల్ట్ ప్రవర్తనను ఫంక్షన్ కీలకు మార్చుతుంది. - ఈ విధానాన్ని ఒప్పునకు సెట్ చేస్తే, కీబోర్డ్ ఎగువ అడ్డు వరుస కీలు డిఫాల్ట్గా ఫంక్షన్ కీ ఆదేశాలను ఉత్పాదిస్తాయి. వాటి ప్రవర్తనను తిరిగి మీడియా కీలకు మార్చడానికి శోధన కీని నొక్కాలి. + ఈ విధానాన్ని 'ఒప్పు'గా సెట్ చేస్తే, కీబోర్డ్ యొక్క ఎగువ అడ్డు వరుస కీలు డిఫాల్ట్గా ఫంక్షన్ కీ ఆదేశాలను ఉత్పాదిస్తాయి. వాటి ప్రవర్తనను తిరిగి మీడియా కీలకు మార్చడానికి శోధన కీని నొక్కాలి. - ఈ విధానాన్ని తప్పునకు సెట్ చేస్తే లేదా అసలు సెట్ చేయకుండా వదిలేస్తే, కీబోర్డ్ డిఫాల్ట్గా మీడియా కీ ఆదేశాలను ఉత్పాదిస్తుంది. శోధన కీని నొక్కినప్పుడు ఫంక్షన్ కీ ఆదేశాలను ఉత్పాదిస్తుంది.</translation> + ఈ విధానాన్ని 'తప్పు'గా సెట్ చేస్తే లేదా అసలు సెట్ చేయకుండా వదిలేస్తే, కీబోర్డ్ డిఫాల్ట్గా మీడియా కీ ఆదేశాలను ఉత్పాదిస్తుంది మరియు శోధన కీని నొక్కినప్పుడు ఫంక్షన్ కీ ఆదేశాలను ఉత్పాదిస్తుంది.</translation> <translation id="4639407427807680016">నిరోధిత జాబితా నుండి మినహాయించాల్సిన స్థానిక సందేశ పద్ధతి హోస్ట్ల పేర్లు</translation> <translation id="4650759511838826572">URL ప్రోటోకాల్ పథకాలని నిలిపివేయి</translation> <translation id="465099050592230505">వ్యాపార వెబ్ స్టోర్ URL (విస్మరించబడింది)</translation> @@ -1674,6 +1687,7 @@ నమూనా ఉదాహరణల కోసం https://www.chromium.org/developers/how-tos/chrome-frame-getting-started చూడండి.</translation> <translation id="467449052039111439">URLల యొక్క జాబితాని తెరువు</translation> +<translation id="4674871290487541952">ఎక్స్టెన్షన్ అప్డేట్లు, ఇన్స్టాల్ల సమగ్ర తనిఖీలలో అసురక్షిత అల్గారిథమ్లను అనుమతించండి</translation> <translation id="4680936297850947973">M68లో విస్మరించబడింది. బదులుగా DefaultPopupsSettingను ఉపయోగించండి. పూర్తి వివరణ కోసం, https://www.chromestatus.com/features/5675755719622656ను చూడండి. @@ -1741,12 +1755,12 @@ <translation id="487460824085252184">స్వయంచాలకంగా తరలించబడుతుంది, వినియోగదారు సమ్మతి కోసం అడగదు.</translation> <translation id="4874982543810021567">ఈ సైట్లలో WebUSBని బ్లాక్ చేయండి</translation> <translation id="4876805738539874299">గరిష్ట SSL వెర్షన్ ప్రారంభించబడింది</translation> -<translation id="4897928009230106190">POSTతో సూచించిన శోధన చేస్తున్నప్పుడు ఉపయోగించే పరామితులను పేర్కొంటుంది. ఇందులో కామాతో వేరు చేయబడిన పేరు/విలువ జతలు ఉంటాయి. విలువ ఎగువ ఉదాహరణలోని {searchTerms} వంటి టెంప్లేట్ పరామితి అయితే, ఇది వాస్తవ శోధన పదాల డేటాతో భర్తీ చేయబడుతుంది. +<translation id="4897928009230106190">POSTతో సూచించిన శోధన చేస్తున్నప్పుడు ఉపయోగించే పారామీటర్లను పేర్కొంటుంది. ఇందులో కామాతో వేరు చేయబడిన పేరు/విలువ జతలు ఉంటాయి. విలువ ఎగువ ఉదాహరణలోని {searchTerms} వంటి టెంప్లేట్ పారామీటర్ అయితే, ఇది వాస్తవ శోధన పదాల డేటాతో భర్తీ చేయబడుతుంది. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, సూచన శోధన అభ్యర్థన GET పద్ధతిని ఉపయోగించి పంపబడుతుంది. - 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడినప్పుడు మాత్రమే ఈ విధానం గౌరవించబడుతుంది.</translation> -<translation id="489803897780524242">డిఫాల్ట్ శోధన ప్రదాత కోసం శోధన పద నియామకాన్ని నియంత్రించే పారామీటర్</translation> + 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడినప్పుడు మాత్రమే ఈ విధానం వర్తిస్తుంది.</translation> +<translation id="489803897780524242">డిఫాల్ట్ శోధన ప్రదాతకు శోధన పద నియామకాన్ని నియంత్రించే పారామీటర్</translation> <translation id="4899708173828500852">సురక్షిత బ్రౌజింగ్ని ప్రారంభించు</translation> <translation id="4899802251198446659"><ph name="PRODUCT_NAME" />లో వీడియోలను ఆటోమేటిక్గా (వినియోగదారు సమ్మతి లేకుండా) ఆడియో కంటెంట్తో పాటు ప్లే చేయాలో లేదో నియంత్రించడానికి మిమ్మల్ని అనుమతిస్తుంది. @@ -2227,9 +2241,9 @@ ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, లాగిన్ స్క్రీన్ మొదట చూపబడినప్పుడు పెద్ద కర్సర్ నిలిపివేయబడుతుంది. వినియోగదారులు ఎప్పుడైనా పెద్ద కర్సర్ను ప్రారంభించవచ్చు లేదా నిలిపివేయవచ్చు. లాగిన్ స్క్రీన్లో దాని స్థితి వినియోగదారులకు స్థిరంగా ఉంటుంది.</translation> <translation id="5929855945144989709">Chrome OSలో వర్చువల్ మిషన్లను అమలు చేయడానికి పరికరాలను అనుమతించండి</translation> <translation id="5932767795525445337">Android యాప్లను పిన్ చేసేందుకు కూడా ఈ విధానాన్ని ఉపయోగించవచ్చు.</translation> -<translation id="5936622343001856595">Google వెబ్ శోధనలో ప్రశ్నలను సురక్షిత శోధనను యాక్టివ్గా ఉండటానికి సెట్ చేసి అమలు చేసే విధంగా నిర్బంధిస్తుంది. వినియోగదారులు ఈ సెట్టింగ్ను మార్చకుండా నిరోధిస్తుంది. +<translation id="5936622343001856595">Google వెబ్ శోధనలో ప్రశ్నలను సురక్షిత శోధనను యాక్టివ్గా సెట్ చేసి అమలు చేసే విధంగా నిర్బంధిస్తుంది మరియు వినియోగదారులు ఈ సెట్టింగ్ను మార్చకుండా నిరోధిస్తుంది. - మీరు ఈ సెట్టింగ్ను ప్రారంభిస్తే, Google శోధనలో సురక్షిత శోధన ఎల్లప్పుడూ యాక్టివ్గా ఉంటుంది. + మీరు ఈ సెట్టింగ్ను ప్రారంభిస్తే, Google శోధనలో సురక్షిత శోధన ఎప్పుడూ యాక్టివ్గా ఉంటుంది. మీరు ఈ సెట్టింగ్ను నిలిపివేస్తే లేదా విలువను సెట్ చేయకపోతే, Google శోధనలో సురక్షిత శోధన అమలు చేయబడదు.</translation> <translation id="5946082169633555022">బీటా ఛానెల్</translation> @@ -2246,7 +2260,7 @@ ఈ విధానాన్ని సెట్ చేయకపోతే లేదా 'తప్పు'గా సెట్ చేస్తే, ముద్రణ ఆదేశాలు ముద్రణ ప్రివ్యూ స్క్రీన్ను ప్రారంభిస్తాయి.</translation> <translation id="6022948604095165524">స్టార్టప్లో చర్య</translation> -<translation id="6023030044732320798">ARC అమలు సమయానికి సంకలనం చేయబడే విధానాల సెట్ను పేర్కొంటుంది. విలువ తప్పకుండా చెల్లుబాటయ్యే JSON రకం అయి ఉండాలి. +<translation id="6023030044732320798">ARC అమలు సమయానికి సంకలనం చేయబడే విధానాల సెట్ను పేర్కొంటుంది. విలువ తప్పకుండా చెల్లుబాటయ్యే JSON రకం అయ్యి ఉండాలి. ఈ విధానాన్ని ఉపయోగించడం ద్వారా పరికరంలో ఏయే Android యాప్లు ఆటోమేటిక్గా ఇన్స్టాల్ కావాలో కాన్ఫిగర్ చేయవచ్చు: @@ -2292,7 +2306,7 @@ } } - యాప్లను లాంఛర్కు పిన్ చేసేందుకు, PinnedLauncherApps చూడండి.</translation> + యాప్లను లాంచర్కు పిన్ చేసేందుకు, PinnedLauncherApps చూడండి.</translation> <translation id="602728333950205286">డిఫాల్ట్ శోధన ప్రదాత తక్షణ URL</translation> <translation id="603410445099326293">POSTని ఉపయోగించే సూచన URL కోసం పరామితులు</translation> <translation id="6036523166753287175">రిమోట్ యాక్సెస్ హోస్ట్ నుండి ఫైర్వాల్ ట్రావెర్సల్ను ప్రారంభించండి</translation> @@ -2401,11 +2415,11 @@ ఈ విధానాన్ని సెట్ చేస్తే, లాగిన్ స్క్రీన్పై వినియోగదారు ప్రమేయం లేకుండా నిర్దిష్ట సమయ వ్యవధి గడిచిన తర్వాత పేర్కొన్న సెషన్ ఆటోమేటిక్గా లాగిన్ చేయబడుతుంది. పరికర-స్థానిక ఖాతాను తప్పనిసరిగా కాన్ఫిగర్ చేసి ఉండాలి (|DeviceLocalAccounts| చూడండి). ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, ఆటో-లాగిన్ ఉండదు.</translation> -<translation id="6353901068939575220">POSTతో URLను శోధిస్తున్నప్పుడు ఉపయోగించే పరామితులను పేర్కొంటుంది. ఇందులో కామాతో వేరు చేయబడిన పేరు/విలువ జతలు ఉంటాయి. విలువ ఎగువ ఉదాహరణలోని {searchTerms} వంటి టెంప్లేట్ పరామితి అయితే, ఇది వాస్తవ శోధన పదాల డేటాతో భర్తీ చేయబడుతుంది. +<translation id="6353901068939575220">POSTతో URLను వెతుకుతున్నప్పుడు ఉపయోగించే పారామీటర్లను పేర్కొంటుంది. ఇందులో కామాతో వేరు చేయబడిన పేరు/విలువ జతలు ఉంటాయి. విలువ ఎగువ ఉదాహరణలోని {searchTerms} వంటి టెంప్లేట్ పారామీటర్ అయితే, ఇది వాస్తవ శోధన పదాల డేటాతో భర్తీ చేయబడుతుంది. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, శోధన అభ్యర్థన GET పద్ధతిని ఉపయోగించి పంపబడుతుంది. - 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడితే మాత్రమే ఈ విధానం గౌరవించబడుతుంది.</translation> + 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడితే మాత్రమే ఈ విధానం వర్తిస్తుంది.</translation> <translation id="6367755442345892511">విడుదల ఛానెల్ వినియోగదారు ద్వారా కాన్ఫిగర్ చేయబడాలో లేదో అనేదాన్ని తెలియజేస్తుంది</translation> <translation id="6368011194414932347">హోమ్ పేజీ URLను కాన్ఫిగర్ చేయి</translation> <translation id="6368403635025849609">ఈ సైట్లలో JavaScriptని అనుమతించు</translation> @@ -2470,7 +2484,7 @@ ఈ సెట్టింగ్ను నిలిపివేసినా లేదా సెట్ చేయకపోయినా, ఆపై డిఫాల్ట్ సురక్షిత బ్రౌజింగ్ రక్షణ అన్ని వనరులకు వర్తింపజేయబడుతుంది. ఈ విధానం <ph name="MS_AD_NAME" /> డొమైన్తో అనుబంధితమైన Windows సందర్భాలు లేదా పరికర నిర్వహణ కోసం నమోదైన Windows 10 Pro లేదా Enterprise సందర్భాలలో మాత్రమే అందుబాటులో ఉంటుంది.</translation> <translation id="6515357889978918016"><ph name="PLUGIN_VM_NAME" /> ఫోటో</translation> -<translation id="6520802717075138474">మొదటి అమలులోనే డిఫాల్ట్ బ్రౌజర్ నుండి శోధన ఇంజిన్లను దిగుమతి చేయి</translation> +<translation id="6520802717075138474">మొదటి అమలులోనే డిఫాల్ట్ బ్రౌజర్ నుండి శోధన ఇంజిన్లను దిగుమతి చేయండి</translation> <translation id="6525955212636890608">మీరు ఈ సెట్టింగ్ను ప్రారంభిస్తే, కంటెంట్ సెట్టింగ్లలో Flashను అనుమతించేలా సెట్ చేసిన వెబ్సైట్లలో పొందుపరిచిన మొత్తం Flash కంటెంట్ -- దానిని వినియోగదారు సెట్ చేసినప్పటికీ లేదా ఎంటర్ప్రైజ్ విధానం ప్రకారం సెట్ చేయబడినప్పటికీ -- ఇతర మూలాధారాల నుండి అందించిన లేదా తక్కువ పరిమాణంలో ఉన్న కంటెంట్తో సహా మొత్తం చూపబడుతుంది. Flashను అమలు చేయడానికి ఏయే వెబ్సైట్లు అనుమతించాలో నియంత్రించడానికి, "DefaultPluginsSetting", "PluginsAllowedForUrls" మరియు "PluginsBlockedForUrls" విధానాలను చూడండి. @@ -2664,7 +2678,7 @@ గమనిక: RAM ఖచ్చితంగా 1GB కంటే ఎక్కువ ఉండే Android అమలయ్యే పరికరాల్లో Chromeకు మాత్రమే ఈ విధానం వర్తిస్తుంది. Android-యేతర ప్లాట్ఫామ్లలో విధానాన్ని వర్తింపజేయడానికి, SitePerProcessను ఉపయోగించండి. </translation> <translation id="6922884955650325312"><ph name="FLASH_PLUGIN_NAME" /> ప్లగిన్ని బ్లాక్ చేయి</translation> -<translation id="6923366716660828830">డిఫాల్ట్ శోధన ప్రొవైడర్ పేరును పేర్కొంటుంది. ఖాళీగా వదిలివేయబడితే లేదా సెట్ చేయకపోతే, శోధన URL ద్వారా పేర్కొన్న హోస్ట్ పేరు వినియోగించబడుతుంది. ఈ విధానం కేవలం 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడినపుడే పరిగణనలోకి తీసుకోబడుతుంది.</translation> +<translation id="6923366716660828830">డిఫాల్ట్ శోధన ప్రదాత పేరును పేర్కొంటుంది. ఖాళీగా వదిలివేయబడితే లేదా సెట్ చేయకపోతే, శోధన URL ద్వారా పేర్కొన్న హోస్ట్ పేరు వినియోగించబడుతుంది. ఈ విధానం కేవలం 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడినపుడే పరిగణనలోకి తీసుకోబడుతుంది.</translation> <translation id="6926703471186170050">పొడవైన అంచు డూప్లెక్స్ ముద్రణను ప్రారంభించండి</translation> <translation id="6931242315485576290">Googleతో డేటా సమకాలీకరణని ఆపివేయి</translation> <translation id="6936894225179401731">ప్రాక్సీ సర్వర్కు గరిష్ట ఏక కాల కనెక్షన్ల సంఖ్యను నిర్దేశిస్తుంది. @@ -2683,7 +2697,7 @@ విధానాన్ని తప్పుకి సెట్ చేసినా లేదా సెట్ చేయకపోయినా, వినియోగ సమాచారం ఏదీ నివేదించబడదు. విధానాన్ని ఒప్పుకి సెట్ చేస్తే, వినియోగ సమాచారం నివేదించబడుతుంది. Linux యాప్ మద్దతు ప్రారంభించినప్పుడు మాత్రమే ఈ విధానం వర్తిస్తుంది.</translation> -<translation id="69525503251220566">డిఫాల్ట్ శోధన ప్రదాత కోసం చిత్రం ద్వారా శోధన ఫీచర్ను అందిస్తున్న పారామీటర్</translation> +<translation id="69525503251220566">డిఫాల్ట్ శోధన ప్రదాత కోసం 'చిత్రం ద్వారా శోధన' ఫీచర్ను అందిస్తున్న పారామీటర్</translation> <translation id="6956272732789158625">కీ ఉత్పాదనను ఉపయోగించడానికి ఏ సైట్ను అనుమతించవద్దు</translation> <translation id="6965859329738616662">ఇది స్మార్ట్ కాంతివిహీనత మోడల్ అనేది స్క్రీన్ మసకబారేంత వరకు సమయాన్ని పెంచవచ్చా లేదా అనేదాన్ని తెలుపుతుంది. @@ -2754,6 +2768,12 @@ <translation id="7123160381479171745">పరికరానికి లాగిన్ చేయడానికి అనుమతించబడిన వినియోగదారుల జాబితాను నిర్వచిస్తుంది. నమోదులు <ph name="USER_WHITELIST_ENTRY_EXAMPLE" /> వంటి <ph name="USER_WHITELIST_ENTRY_FORMAT" /> రూపంలో ఉంటాయి. డొమైన్లో నిర్హేతుక వినియోగదారులను అనుమతించడానికి, <ph name="USER_WHITELIST_ENTRY_WILDCARD" /> రూపంలో ఉండే నమోదులను ఉపయోగించండి. ఈ విధానం కాన్ఫిగర్ చేయబడకపోతే, సైన్ ఇన్ చేయడానికి ఏ వినియోగదారులు అనుమతించబడతారనే దానిపై నియంత్రణలు ఉండవు. ఇప్పటికీ కొత్త వినియోగదారులను సృష్టించడానికి <ph name="DEVICE_ALLOW_NEW_USERS_POLICY_NAME" /> విధానానికి తగినట్లుగా కాన్ఫిగర్ చేయబడి ఉండటం అవసరం అని గుర్తుంచుకోండి.</translation> +<translation id="7123266440503901785">ఎక్స్టెన్షన్ల సురక్షిత అప్డేట్, ఇన్స్టాలేషన్ కోసం <ph name="PRODUCT_NAME" /> అందిస్తుంది. అయితే, Chrome వెబ్స్టోర్ వెలుపల హోస్ట్ చేయబడే కొన్ని ఎక్స్టెన్షన్ల కంటెంట్ SHA1 లాంటి అసురక్షితమైన సైనింగ్ లేదా హ్యాషింగ్ అల్గారిథమ్ల ద్వారా మాత్రమే రక్షించబడవచ్చు . ఈ విధానాన్ని నిలిపివేసినప్పుడు, (ఎక్స్టెన్షన్ డెవలపర్లు శక్తివంతమైన అల్గారిథమ్లతో ఎక్స్టెన్షన్ను తిరిగి రూపొందించే వరకు) అలాంటి ఎక్స్టెన్షన్ల తాజా ఇన్స్టాలేషన్, అప్డేట్లు Chrome ద్వారా అనుమతించబడవు. ఈ విధానాన్ని ప్రారంభించినప్పుడు, అలాంటి ఎక్స్టెన్షన్ల ఇన్స్టాలేషన్, అప్డేట్లు అనుమతించబడవు. + + దీనిని సెట్ చేయనప్పుడు, ఇది ప్రారంభిత ప్రవర్తనకు డిఫాల్ట్గా ఉంచబడుతుంది. + <ph name="PRODUCT_NAME" /> 75లో ప్రారంభించినప్పుడు, దీనిని సెట్ చేయకపోతే నిలిపివేత ప్రవర్తనకు డిఫాల్ట్గా ఉంచబడుతుంది. + + <ph name="PRODUCT_NAME" /> 77లో ప్రారంభించినప్పుడు, ఈ విధానం విస్మరించబడుతుంది, నిలిపివేసినట్లుగా పరిగణించబడుతుంది.</translation> <translation id="7126716959063786004">టాస్క్ మేనేజర్లో ప్రాసెస్లను ముగించడాన్ని ప్రారంభించండి</translation> <translation id="7127892035367404455">లక్ష్య వెర్షన్కి ఉపసంహరించండి</translation> <translation id="7128918109610518786"><ph name="PRODUCT_OS_NAME" /> లాంచర్ బార్లో పిన్ చేసిన అప్లికేషన్ల వలె చూపే యాప్ల ఐడెంటిఫైయర్లను జాబితా చేస్తుంది. @@ -2842,9 +2862,9 @@ ఈ ఎంపిక నిలిపివేతకు సెట్ చేయబడినట్లయితే లేదా దీన్ని సెట్ చేయకుండా వదిలివేస్తే, వినియోగదారు డెవలపర్ సాధనాలను, JavaScript కన్సోల్ను ఉపయోగించడానికి అనుమతించబడతారు. DeveloperToolsAvailability విధానం సెట్ చేయబడినట్లయితే, DeveloperToolsDisabled విధానం విలువ విస్మరించబడుతుంది.</translation> -<translation id="7266471712301230894">ఈ విధానం <ph name="PRODUCT_NAME" /> 64 నుండి తీసివేయబడింది. +<translation id="7266471712301230894">ఈ విధానం <ph name="PRODUCT_NAME" /> 64వ వెర్షన్ నుండి తీసివేయబడింది. - అందించబడని ప్లగిన్లను స్వయంచాలకంగా శోధించి, ఇన్స్టాల్ చేసే పద్ధతి ఇకపై పని చేయదు.</translation> + అందించబడని ప్లగిన్లను ఆటోమేటిక్గా వెతికి, ఇన్స్టాల్ చేసే పద్ధతి ఇకపై పని చేయదు.</translation> <translation id="7267809745244694722">మీడియా కీలు డిఫాల్ట్గా ఫంక్షన్ కీలకు సెట్ చేయబడతాయి</translation> <translation id="7271085005502526897">మొదటి అమలులోనే డిఫాల్ట్ బ్రౌజర్ నుండి హోమ్పేజీని దిగుమతి చేయి</translation> <translation id="7273823081800296768">ఈ సెట్టింగ్ను ప్రారంభిస్తే లేదా కాన్ఫిగర్ చేయకపోతే, ఆపై వినియోగదారులు ప్రతిసారి PINని నమోదు చేయవలసిన అవసరం లేకుండా క్లయింట్లతో జత కావచ్చు మరియు కనెక్షన్ సమయంలో నిర్వహించవచ్చు. @@ -2857,7 +2877,7 @@ ఈ విధానాన్ని సెట్ చేయకుండా వదిలేస్తే, డిఫాల్ట్ అనేది ఎంటర్ప్రైజ్ నిర్వాహిత వినియోగదారులకు అనుమతించబడదు. కానీ నిర్వహించబడని వినియోగదారులకు అనుమతించబడుతుంది.</translation> <translation id="7295019613773647480">పర్యవేక్షించబడే వినియోగదారులను ప్రారంభించు</translation> -<translation id="7301543427086558500">శోధన ఇంజిన్ నుండి శోధన పదాలను సంగ్రహించడానికి ఉపయోగించబడే ప్రత్యామ్నాయ URLల జాబితాను నిర్దేశిస్తుంది. URLలు శోధన పదాలను సంగ్రహించడానికి ఉపయోగించబడే స్ట్రింగ్ <ph name="SEARCH_TERM_MARKER" />ను కలిగి ఉండాలి. +<translation id="7301543427086558500">శోధన ఇంజిన్ నుండి శోధన పదాలను సంగ్రహించడానికి ఉపయోగించబడే ప్రత్యామ్నాయ URLల జాబితాను నిర్దేశిస్తుంది. URLలలో <ph name="SEARCH_TERM_MARKER" /> స్ట్రింగ్ ఉండాలి, దానిని ఉపయోగించి శోధన పదాలు సంగ్రహించబడతాయి. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, శోధన పదాలను సంగ్రహించడానికి ఏ ప్రత్యామ్నాయ urlలు ఉపయోగించబడవు. @@ -2948,7 +2968,7 @@ <translation id="7443616896860707393">క్రాస్-ఆరిజిన్ HTTP ప్రాథమిక ప్రామాణీకరణ ప్రాంప్ట్లు</translation> <translation id="7458437477941640506">OS వెర్షన్, లక్ష్యం కన్నా కొత్తదైతే, లక్ష్య వెర్షన్కి ఉపసంహరించకండి మరియు లక్ష్య వెర్షన్లోనే ఉండండి. అప్డేట్లు కూడా నిలిపివేయబడ్డాయి.</translation> <translation id="7464991223784276288">ప్రస్తుత సెషన్కు URLలను సరిపోల్చకుండా కుక్కీలను పరిమితం చేస్తుంది</translation> -<translation id="7469554574977894907">శోధన సిఫార్సులను ప్రారంభించు</translation> +<translation id="7469554574977894907">శోధన సిఫార్సులని ప్రారంభించండి</translation> <translation id="7474249562477552702">స్థానిక విశ్వసనీయ యాంకర్ల ద్వారా మంజూరు చేయబడిన SHA-1 సంతకం గల ప్రమాణపత్రాలను అనుమతించాలో లేదో నిశ్చయించండి</translation> <translation id="7485481791539008776">డిఫాల్ట్ ప్రింటర్ ఎంపిక నియమాలు</translation> <translation id="7485730741952775732">ఈ విధానాన్ని సెట్ చేస్తే, రిమోట్ యాక్సెస్ హోస్ట్ కనెక్షన్లను ఆమోదించే క్రమంలో రిమోట్ యాక్సెస్ క్లయింట్ల నుండి ప్రమాణీకరణ టోకెన్లను ధృవీకరించడానికి ఈ URLను ఉపయోగిస్తుంది. తప్పనిసరిగా RemoteAccessHostTokenUrlతో కలయికలో ఉపయోగించాలి. @@ -3026,19 +3046,19 @@ ఈ సెట్టింగ్ను ఆపివేసినా లేదా సెట్ చేయకపోయినా, <ph name="PRODUCT_NAME" /> వినియోగదారు-పేర్కొన్న ప్రాధాన్య లొకేల్ను (కాన్ఫిగర్ చేసి ఉంటే), సిస్టమ్ లొకేల్ను లేదా ఫాల్బ్యాక్ 'en-US' లొకేల్ను ఉపయోగిస్తుంది.</translation> <translation id="7641363659597330616">వినియోగదారులు భద్రతా నిర్ణయాన్ని అతిక్రమించకుండా ఉండే విధంగా <ph name="PRODUCT_NAME" /> పూర్తిగా బ్లాక్ చేసే డౌన్లోడ్ల రకాన్ని కాన్ఫిగర్ చేస్తుంది. - మీరు ఈ విధానాన్ని సెట్ చేస్తే, <ph name="PRODUCT_NAME" /> నిర్దిష్ట రకాల డౌన్లోడ్లను నిరోధించడమే కాక, భద్రతా హెచ్చరికలను అతిక్రమించకుండా వినియోగదారులను అడ్డుకుంటుంది. + మీరు ఈ విధానాన్ని సెట్ చేస్తే, <ph name="PRODUCT_NAME" /> నిర్దిష్ట రకాల డౌన్లోడ్లను నిరోధిస్తుంది మరియు భద్రతా హెచ్చరికలను అతిక్రమించకుండా వినియోగదారులను అడ్డుకుంటుంది. 'హానికరమైన డౌన్లోడ్లను బ్లాక్ చేయి' ఎంపికను ఎంచుకున్నట్లయితే, సురక్షిత బ్రౌజింగ్ హెచ్చరికలను కలిగినవి మినహా మిగిలిన అన్ని డౌన్లోడ్లు అనుమతించబడతాయి. - 'హానికరమయ్యే అవకాశమున్న డౌన్లోడ్లను బ్లాక్ చేయి' ఎంపికను ఎంచుకున్నట్లయితే, హానికరమయ్యే అవకాశమున్న డౌన్లోడ్ల లాగా సురక్షిత బ్రౌజింగ్ హెచ్చరికలను కలిగిన డౌన్లోడ్లు మినహా, మిగిలిన అన్నీ అనుమతించబడతాయి. + 'హానికరమయ్యే అవకాశమున్న డౌన్లోడ్లను బ్లాక్ చేయి' ఎంపికను ఎంచుకున్నట్లయితే, హానికరమయ్యే అవకాశమున్న డౌన్లోడ్ల లాగా, సురక్షిత బ్రౌజింగ్ హెచ్చరికలను కలిగినవి మినహా మిగిలిన అన్ని డౌన్లోడ్లు అనుమతించబడతాయి. - 'అన్ని డౌన్లోడ్లను బ్లాక్ చేయి' ఎంచుకున్నట్లయితే, అన్ని డౌన్లోడ్లు బ్లాక్ చేయబడతాయి. + 'అన్ని డౌన్లోడ్లను బ్లాక్ చేయి' ఎంపికను ఎంచుకున్నట్లయితే, అన్ని డౌన్లోడ్లు బ్లాక్ చేయబడతాయి. - ఈ విధానాన్ని సెట్ చేయకుంటే (లేదా 'ప్రత్యేక పరిమితులు వద్దు' ఎంపికను ఎంచుకున్నట్లయితే), సురక్షిత బ్రౌజింగ్ విశ్లేషణ ఫలితాల ఆధారంగా, సాధారణ భద్రతా పరిమితుల ప్రకారం డౌన్లోడ్లు పరిశీలించబడతాయి. + ఈ విధానాన్ని సెట్ చేయకుంటే (లేదా 'ప్రత్యేక పరిమితులు వద్దు' ఎంపికను ఎంచుకున్నట్లయితే), సురక్షిత బ్రౌజింగ్ విశ్లేషణ ఫలితాల ఆధారంగా డౌన్లోడ్లు సాధారణ భద్రతా పరిమితుల ప్రకారం పరిశీలించబడతాయి. - వెబ్ పేజీ కంటెంట్ నుండి ప్రారంభించబడిన డౌన్లోడ్లతో పాటు, 'డౌన్లోడ్ లింక్...' సందర్భోచిత మెనూ ఎంపికకు ఈ పరిమితులు వర్తిస్తాయని గుర్తుంచుకోండి. ప్రస్తుతం ప్రదర్శించబడుతున్న పేజీ నుండి సేవ్ చేయడానికి / డౌన్లోడ్ చేయడానికి మరియు ముద్రణ ఎంపికల నుండి PDF లాగా సేవ్ చేయడానికి ఈ పరిమితులు వర్తించవు. + వెబ్ పేజీ కంటెంట్ నుండి ప్రారంభించబడిన డౌన్లోడ్లకు, వాటితో పాటుగా 'డౌన్లోడ్ లింక్...' సందర్భోచిత మెనూ ఎంపికకు ఈ పరిమితులు వర్తిస్తాయని గుర్తుంచుకోండి. ప్రస్తుతం ప్రదర్శించబడిన పేజీ నుండి సేవ్ చేయడానికి / డౌన్లోడ్ చేయడానికి మరియు ముద్రణ ఎంపికల నుండి PDF లాగా సేవ్ చేయడానికి ఈ పరిమితులు వర్తించవు. - సురక్షిత బ్రౌజింగ్ గురించి మరింత సమాచారం కోసం https://developers.google.com/safe-browsingని చూడండి.</translation> + సురక్షిత బ్రౌజింగ్ గురించి మరింత సమాచారం కోసం https://developers.google.com/safe-browsing చూడండి.</translation> <translation id="7643883929273267746"><ph name="PRODUCT_NAME" />లో కనిపించే ఖాతాలను నియంత్రించండి</translation> <translation id="7644825865811580663">If this policy is set to true, <ph name="PRODUCT_NAME" /> will unconditionally maximize the first window shown on first run. If this policy is set to false or not configured, the decision whether to maximize the first window shown will be based on the screen size.</translation> @@ -3549,7 +3569,7 @@ <translation id="8693243869659262736">అంతర్గత DNS క్లయింట్ను ఉపయోగించండి</translation> <translation id="8703488928438047864">బోర్డ్ పరిస్థితిని నివేదించు</translation> <translation id="8704831857353097849">ఆపివేయబడిన ప్లగ్ఇన్ల జాబితా</translation> -<translation id="8711086062295757690">కీవర్డ్ను పేర్కొంటుంది. ఈ కీవర్డ్, ఈ ప్రొవైడర్ కోసం శోధనను ప్రారంభించే ఓమ్నిబాక్స్లో ఉపయోగించే షార్ట్కట్. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, శోధన ప్రొవైడర్ను ఏ కీవర్డ్ యాక్టివేట్ చేయదు. ఈ విధానం, 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడి ఉన్నప్పుడు మాత్రమే పరిగణించబడుతుంది.</translation> +<translation id="8711086062295757690">కీవర్డ్ను పేర్కొంటుంది, ఈ కీవర్డ్ అనేది, ఈ ప్రదాత కోసం శోధనను ప్రారంభించే ఓమ్నిబాక్స్లో ఉపయోగించే షార్ట్కట్. ఈ విధానం ఐచ్ఛికం. సెట్ చేయకపోతే, శోధన ప్రదాతను ఏ కీవర్డ్ కూడా యాక్టివేట్ చేయదు. ఈ విధానం, 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడి ఉన్నప్పుడు మాత్రమే పరిగణించబడుతుంది.</translation> <translation id="8731693562790917685">నిర్ధిష్ట రకమైన కంటెంట్లను (ఉదాహరణకు కుక్కీలు, చిత్రాలు లేదా JavaScript) ఎలా నిర్వహించాలో పేర్కొనడానికి కంటెంట్ సెట్టింగ్లు మిమ్మల్ని అనుమతిస్తాయి.</translation> <translation id="8733448613597049197"><ph name="PRODUCT_NAME" /> యొక్క సురక్షిత బ్రౌజింగ్ విస్తారిత నివేదనను ప్రారంభిస్తుంది మరియు ఈ సెట్టింగ్ను మార్చకుండా వినియోగదారులను నివారిస్తుంది. @@ -3608,15 +3628,15 @@ <translation id="8858642179038618439">నిర్బంధ YouTube భద్రతా మోడ్</translation> <translation id="8860342862142842017">జాబితాలోని subjectPublicKeyInfo హాష్ల కోసం సర్టిఫికేట్ పారదర్శకత అమలును నిలిపివేయండి</translation> <translation id="8864975621965365890">సైట్ <ph name="PRODUCT_FRAME_NAME" /> ద్వారా అమలు చేయబడినప్పుడు ప్రాంప్ట్ చేయబడే అవకాశాన్ని నియంత్రిస్తుంది.</translation> -<translation id="8867464911288727016"><ph name="PRODUCT_NAME" />లో ఏకీకృతమైన 'Google అనువాదం' సేవను ప్రారంభిస్తుంది. +<translation id="8867464911288727016"><ph name="PRODUCT_NAME" />లో ఏకీకృత 'Google అనువాదం' సేవను ప్రారంభిస్తుంది. - మీరు ఈ సెట్టింగ్ను ప్రారంభిస్తే, <ph name="PRODUCT_NAME" /> అనువాద కార్యాచరణను, సాధనాల బార్ను (సముచిత సమయంలో) చూపడం ద్వారా, ఏకీకృత అనువాద సేవను అందిస్తుంది, కుడి-క్లిక్ సందర్భోచిత మెనూలో అనువాదం ఎంపికను చూపుతుంది. + మీరు ఈ సెట్టింగ్ను ప్రారంభిస్తే, <ph name="PRODUCT_NAME" /> ఏకీకృత అనువాదం సాధనాల బార్ను (సముచిత సమయంలో) చూపడం ద్వారా అనువాద కార్యకలాపాన్ని అందిస్తుంది మరియు కుడి-క్లిక్ సందర్భ మెనూలో అనువాదం ఎంపికను చూపుతుంది. మీరు ఈ సెట్టింగ్ను నిలిపివేస్తే, అంతర్గత అనువాదం ఫీచర్లు అన్నీ నిలిపివేయబడతాయి. మీరు ఈ సెట్టింగ్ను ప్రారంభించినా లేదా నిలిపివేసినా, వినియోగదారులు <ph name="PRODUCT_NAME" />లో ఈ సెట్టింగ్ను మార్చలేరు లేదా భర్తీ చేయలేరు. - ఈ సెట్టింగ్ను సెట్ చేయకుండా వదిలేస్తే, ఈ ఫంక్షన్ని ఉపయోగించాలో లేదో వినియోగదారు నిర్ణయించగలరు.</translation> + ఈ సెట్టింగ్ను సెట్ చేయకుండా వదిలేస్తే, ఈ ఫంక్షన్ను ఉపయోగించాలో లేదో వినియోగదారు నిర్ణయించగలరు.</translation> <translation id="8870318296973696995">హోమ్ పేజీ</translation> <translation id="8876188741456358123">డిఫాల్ట్ ప్రింటింగ్ డ్యూప్లెక్స్ మోడ్ను భర్తీ చేస్తుంది. మోడ్ అందుబాటులో లేనట్లయితే ఈ విధానం విస్మరించబడుతుంది.</translation> <translation id="8882006618241293596">ఈ సైట్లలో <ph name="FLASH_PLUGIN_NAME" /> ప్లగిన్ చేయి</translation>
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb index d5435121..37dd215f2 100644 --- a/components/policy/resources/policy_templates_th.xtb +++ b/components/policy/resources/policy_templates_th.xtb
@@ -774,6 +774,11 @@ หากปิดใช้การตั้งค่านี้และไฟร์วอลล์กรองการเชื่อมต่อ UDP ขาออก เครื่องนี้จะอนุญาตการเชื่อมต่อจากเครื่องไคลเอ็นต์ภายใน LAN เท่านั้น หากไม่กำหนดค่านโยบายนี้ จะมีการเปิดใช้การตั้งค่า</translation> +<translation id="2813281962735757923">นโยบายนี้ควบคุมกรอบเวลาที่อุปกรณ์ <ph name="PRODUCT_OS_NAME" /> จะไม่ได้รับอนุญาตให้ตรวจหาอัปเดตโดยอัตโนมัติ + เมื่อตั้งค่านโยบายนี้ด้วยช่วงเวลาที่ไม่ใช่รายการที่ว่างเปล่า สิ่งที่จะเกิดขึ้นมีดังนี้ + อุปกรณ์จะตรวจหาอัปเดตโดยอัตโนมัติไม่ได้ระหว่างช่วงเวลาที่ระบุ อุปกรณ์ที่ต้องย้อนกลับเวอร์ชันหรือมีเวอร์ชัน <ph name="PRODUCT_OS_NAME" /> ต่ำกว่าขั้นต่ำจะไม่ได้รับผลกระทบจากนโยบายนี้เพราะอาจมีปัญหาความปลอดภัย นอกจากนี้ นโยบายนี้จะไม่บล็อกการตรวจหาอัปเดตที่ผู้ใช้หรือผู้ดูแลระบบขอ + เมื่อไม่ได้ตั้งค่านโยบายนี้หรือไม่ได้ใส่ช่วงเวลา สิ่งที่จะเกิดขึ้นมีดังนี้ + นโยบายนี้จะไม่บล็อกการตรวจหาอัปเดตอัตโนมัติ แต่นโยบายอื่นๆ อาจบล็อกการตรวจหา ฟีเจอร์นี้จะเปิดใช้เฉพาะในอุปกรณ์ Chrome ที่กำหนดค่าเป็นคีออสก์ที่เปิดอัตโนมัติ นโยบายนี้ไม่ได้จำกัดอุปกรณ์อื่นๆ</translation> <translation id="2823870601012066791">ตำแหน่งรีจิสทรีของ Windows สำหรับไคลเอ็นต์ของ <ph name="PRODUCT_OS_NAME" /> คือ</translation> <translation id="2824715612115726353">เปิดใช้งานโหมดไม่ระบุตัวตน</translation> <translation id="2838830882081735096">ไม่อนุญาตให้ย้ายข้อมูลและใช้ ARC</translation> @@ -1065,6 +1070,7 @@ <translation id="3547954654003013442">การตั้งค่าพร็อกซี</translation> <translation id="355118380775352753">เว็บไซต์ที่จะเปิดในเบราว์เซอร์สำรอง</translation> <translation id="3577251398714997599">เครื่องมือตั้งค่าโฆษณาสำหรับเว็บไซต์ที่มีโฆษณาที่แทรก</translation> +<translation id="3591527072193107424">เปิดใช้ฟีเจอร์การรองรับเบราว์เซอร์เวอร์ชันเก่า</translation> <translation id="3591584750136265240">กำหนดค่าลักษณะการตรวจสอบสิทธิ์ของการเข้าสู่ระบบ</translation> <translation id="3624171042292187668"> ขอแนะนำให้ดูการตั้งค่านโยบาย IsolateOrigins เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด ทั้งการแยกและการจำกัดผลกระทบที่มีต่อผู้ใช้ด้วยการใช้ IsolateOrigins กับรายการเว็บไซต์ที่คุณต้องการแยก การตั้งค่า SitePerProcess นี้จะแยกเว็บไซต์ทั้งหมด @@ -1246,6 +1252,13 @@ <translation id="3965339130942650562">หมดเวลาจนกว่าจะดำเนินการออกจากระบบของผู้ใช้ที่ไม่มีการใช้งาน</translation> <translation id="3973371701361892765">ไม่ซ่อนชั้นวางอัตโนมัติเลย</translation> <translation id="3984028218719007910">กำหนดว่าจะให้ <ph name="PRODUCT_OS_NAME" /> เก็บข้อมูลบัญชีในตัวเครื่องหลังจากที่ออกจากระบบหรือไม่ หากตั้งค่าเป็น "จริง" <ph name="PRODUCT_OS_NAME" /> จะไม่เก็บบัญชีใดๆ ไว้อย่างถาวร และข้อมูลทั้งหมดจากเซสชันผู้ใช้จะถูกยกเลิกหลังจากที่ออกจากระบบ ถ้านโยบายนี้ถูกกำหนดเป็น "เท็จ" หรือไม่กำหนดค่า อุปกรณ์อาจเก็บข้อมูลผู้ใช้ในตัวเครื่องไว้ (โดยที่เข้ารหัส)</translation> +<translation id="398475542699441679">นโยบายนี้ควบคุมว่าจะเปิดใช้การรองรับเบราว์เซอร์เวอร์ชันเก่าหรือไม่ + + เมื่อไม่ได้ตั้งค่านโยบายนี้หรือตั้งค่าเป็น "เท็จ" Chrome จะไม่พยายามเปิด URL ที่กำหนดในเบราว์เซอร์อื่น + + เมื่อตั้งค่านโยบายนี้เป็น "จริง" Chrome จะพยายามเปิด URL บางรายการในเบราว์เซอร์อื่น (เช่น Internet Explorer) ฟีเจอร์นี้กำหนดค่าโดยใช้นโยบายในกลุ่ม<ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> + + และมาแทนที่ส่วนขยาย<ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> ฟีเจอร์นี้จะใช้การกำหนดค่าของส่วนขยายดังกล่าว แต่ขอแนะนำอย่างยิ่งให้ใช้นโยบาย Chrome แทน เพื่อให้ใช้งานร่วมกันได้ดีขึ้นในอนาคต</translation> <translation id="3997519162482760140">URL ที่จะได้รับสิทธิ์การเข้าถึงอุปกรณ์จับภาพวิดีโอในหน้าการเข้าสู่ระบบ SAML</translation> <translation id="4001275826058808087">ผู้ดูแลระบบ IT สำหรับอุปกรณ์ขององค์กรสามารถใช้การตั้งสถานะนี้เพื่อควบคุมว่าจะอนุญาตผู้ใช้ให้แลกรับข้อเสนอพิเศษผ่านการลงทะเบียน Chrome OS ไหม @@ -1486,6 +1499,7 @@ สำหรับรูปแบบตัวอย่าง โปรดดูที่ https://www.chromium.org/developers/how-tos/chrome-frame-getting-started</translation> <translation id="467449052039111439">เปิดรายการ URL</translation> +<translation id="4674871290487541952">อนุญาตอัลกอริทึมที่ไม่ปลอดภัยในการตรวจสอบความสมบูรณ์ของการอัปเดตและการติดตั้งส่วนขยาย</translation> <translation id="4680936297850947973">เลิกใช้งานไปแล้วใน M68 โปรดใช้ DefaultPopupsSetting แทน ดูคำอธิบายฉบับเต็มได้ที่ https://www.chromestatus.com/features/5675755719622656 @@ -2481,6 +2495,12 @@ หากนโยบายตั้งค่าเป็น False โหมดพื้นหลังจะปิดใช้และผู้ใช้จะควบคุมไม่ได้ในการตั้งค่าเบราว์เซอร์ หากไม่มีการตั้งค่านโยบายนี้ โหมดพื้นหลังจะปิดใช้ในตอนแรกและผู้ใช้สามารถควบคุมได้ในการตั้งค่าเบราว์เซอร์</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> ให้การอัปเดตและการติดตั้งส่วนขยายที่ปลอดภัย อย่างไรก็ตาม เนื้อหาของส่วนขยายบางรายการที่โฮสต์อยู่นอก Chrome เว็บสโตร์จะได้รับการปกป้องด้วยอัลกอริทึมการรับรองหรือการแฮชที่ไม่ปลอดภัย เช่น SHA1 เท่านั้น เมื่อปิดใช้นโยบายนี้ Chrome จะไม่อนุญาตการอัปเดตและการติดตั้งส่วนขยายดังกล่าวใหม่ (จนกว่านักพัฒนาส่วนขยายจะสร้างส่วนขยายใหม่ซึ่งมีอัลกอริทึมที่รัดกุมมากขึ้น) เมื่อเปิดใช้นโยบายนี้ ระบบจะอนุญาตการติดตั้งและการอัปเดตส่วนขยายดังกล่าว + + ซึ่งจะมีค่าเริ่มต้นเป็นลักษณะการทำงานที่เปิดใช้เมื่อไม่ได้ตั้งค่า + ตั้งแต่ <ph name="PRODUCT_NAME" /> 75 เป็นต้นไป การตั้งค่านี้จะมีค่าเริ่มต้นเป็นลักษณะการทำงานที่ปิดใช้เมื่อไม่ได้ตั้งค่า + + ตั้งแต่ <ph name="PRODUCT_NAME" /> 77 เป็นต้นไป ระบบจะไม่สนใจนโยบายนี้และถือว่ามีการปิดใช้</translation> <translation id="7126716959063786004">เปิดใช้การหยุดกระบวนการในตัวจัดการงาน</translation> <translation id="7127892035367404455">ย้อนกลับไปเวอร์ชันเป้าหมาย</translation> <translation id="7128918109610518786">แสดงรายการตัวระบุแอปพิเคชันที่ <ph name="PRODUCT_OS_NAME" /> แสดงเป็นแอปพลิเคชันที่ตรึงในแถบตัวเรียกใช้งาน
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb index 307d3744..54f0f8c 100644 --- a/components/policy/resources/policy_templates_tr.xtb +++ b/components/policy/resources/policy_templates_tr.xtb
@@ -335,10 +335,10 @@ Bu politika geçerli bir URL'ye ayarlandığında, <ph name="PRODUCT_NAME" />, site listesini o URL'den indirir ve kuralları, <ph name="SITELIST_POLICY_NAME" /> politikasıyla yapılandırılmışlar gibi uygular. Internet Explorer'ın <ph name="IEEM_SITELIST_POLICY" /> politikası hakkında daha fazla bilgiyi https://docs.microsoft.com/internet-explorer/ie11-deploy-guide/what-is-enterprise-mode adresinde bulabilirsiniz</translation> -<translation id="1839060937202387559">Depolama cihazlarına ait donanım istatistiklerini ve tanımlayıcıları bildirin. +<translation id="1839060937202387559">Depolama cihazlarına ait donanım istatistiklerini ve tanımlayıcıları bildirir. - Politika yanlış değerine ayarlanırsa istatistikler bildirilmez. - Politika doğru değerine ayarlanırsa veya ayarlanmadan bırakılırsa istatistikler bildirilir.</translation> + Politika false (yanlış) değerine ayarlanırsa istatistikler bildirilmez. + Politika true (doğru) değerine ayarlanırsa veya ayarlanmadan bırakılırsa istatistikler bildirilir.</translation> <translation id="1843117931376765605">Kullanıcı politikası için yenileme hızı</translation> <translation id="1844620919405873871">Hızlı kilit açmayla ilgili politikaları yapılandırır.</translation> <translation id="1847960418907100918">POST ile anında arama yaparken kullanılan parametreleri belirtir. Virgülle ayrılmış ad/değer çiftlerini içeren bir listeden oluşur. Bir değer, yukarıdaki örnekteki {searchTerms} gibi bir şablon parametresi ise, gerçek arama terimleri verisiyle değiştirilir. @@ -795,6 +795,11 @@ Bu ayar devre dışı bırakılırsa ve giden UDP bağlantıları güvenlik duvarı tarafından filtreleniyorsa, bu makine yalnızca yerel ağ içindeki istemci makinelerden gelen bağlantılara izin verir. Bu politika ayarlanmadan bırakılırsa, ayar etkinleşir.</translation> +<translation id="2813281962735757923">Bu politika, <ph name="PRODUCT_OS_NAME" /> cihazının güncellemeleri otomatik olarak denetlemesine izin verilmeyen zaman aralıklarını kontrol eder. + Bu politika, boş olmayan bir zaman aralıkları listesine ayarlandığında: + Cihazlar, belirtilen zaman aralıkları sırasında güncellemeleri otomatik olarak kontrol edemez. Geri alma işleminin yapılmasını gerektiren ve minimum <ph name="PRODUCT_OS_NAME" /> sürümünün altındaki cihazlar, olası güvenlik sorunlarından dolayı bu politikadan etkilenmez. Bununla birlikte, bu politika kullanıcılar veya yöneticiler tarafından istenen güncelleme kontrollerini engellemez. + Bu politika ayarlanmazsa veya herhangi bir zaman aralığı içermezse: + Hiçbir otomatik güncelleme kontrolü bu politika tarafından engellenmez, ancak kontroller diğer politikalar tarafından engellenebilir. Bu özellik yalnızca otomatik başlatma kioskları olarak yapılandırılan Chrome cihazlarda etkindir. Bu politika diğer cihazları kısıtlamak için kullanılamaz.</translation> <translation id="2823870601012066791"><ph name="PRODUCT_OS_NAME" /> istemcileri için Windows kayıt defteri konumu:</translation> <translation id="2824715612115726353">Gizli modu etkinleştir</translation> <translation id="2838830882081735096">Veri taşıma ve ARC'ye izin verme</translation> @@ -1048,7 +1053,7 @@ Bu politika isteğe bağlıdır. Ayarlanmazsa hiçbir yeni sekme sayfası sağlanmaz. Bu politika sadece "DefaultSearchProviderEnabled" politikası etkinleştirilmişse geçerli olur.</translation> -<translation id="3461279434465463233">Güç durumunu bildirme</translation> +<translation id="3461279434465463233">Güç durumunu bildir</translation> <translation id="346731943813722404">Bir oturumda güç yönetimi gecikmelerinin ve oturum süresi sınırının sadece kullanıcı ilk etkinliğinin gözlenmesinden sonra çalışmaya başlayıp başlamayacağını belirler. Bu politika Doğru seçeneğine ayarlanırsa bir oturumda güç yönetimi gecikmeleri ve oturum süresi sınırı kullanıcının ilk etkinliğinin gözlenmesine kadar çalışmaya başlamaz. @@ -1089,6 +1094,7 @@ <translation id="3547954654003013442">Proxy ayarları</translation> <translation id="355118380775352753">Alternatif tarayıcıda açılacak web siteleri</translation> <translation id="3577251398714997599">Araya giren reklamların yer aldığı siteler için reklam ayarı</translation> +<translation id="3591527072193107424">Eski Tarayıcı Desteği özelliğini etkinleştir.</translation> <translation id="3591584750136265240">Giriş için kimlik doğrulama yöntemini yapılandır</translation> <translation id="3624171042292187668"> Hem izolasyondan hem de kullanıcılar için sınırlı etkiden en iyi şekilde yararlanmak üzere IsolateOrigins politika ayarına bakmak isteyebilirsiniz. Bunun için, izole etmek istediğiniz sitelerin listesiyle IsolateOrigins'i kullanabilirsiniz. Bu ayar (SitePerProcess) tüm siteleri izole eder. @@ -1274,6 +1280,13 @@ <translation id="3965339130942650562">Boştaki kullanıcının çıkış yapması için geçecek zaman aşımı süresi</translation> <translation id="3973371701361892765">Rafı hiçbir zaman otomatik olarak gizleme</translation> <translation id="3984028218719007910">Çıkış yapıldıktan sonra yerel hesap verilerinin <ph name="PRODUCT_OS_NAME" /> tarafından korunup korunmayacağını belirler. True değerine ayarlanırsa, kalıcı hesaplar <ph name="PRODUCT_OS_NAME" /> tarafından korunmaz ve çıkış yapıldıktan sonra kullanıcı oturumuna ilişkin tüm veriler kaybedilir. Bu politika false değerine ayarlanırsa veya hiçbir şekilde ayarlanmazsa, cihaz (şifreli) yerel kullanıcı verilerini koruyabilir.</translation> +<translation id="398475542699441679">Bu politika, Eski Tarayıcı Desteğinin etkinleştirilip etkinleştirilmeyeceğini kontrol eder. + + Bu politika ayarlanmadan bırakılırsa veya false (yanlış) değerine ayarlanırsa, Chrome tanımlanan URL'leri alternatif tarayıcıda açma girişiminde bulunmaz. + + Bu politika true (doğru) değerine ayarlanırsa, Chrome bazı URL'leri alternatif tarayıcıda (ör. Internet Explorer) açma girişiminde bulunur. Bu özellik, <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> grubundaki politikalar kullanılarak yapılandırılır. + + Bu özellik, <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" /> uzantısının yerini almaktadır. Uzantıdan gerçekleştirilen yapılandırma bu özelliğe aktarılır, ancak bunun yerine Chrome politikalarının kullanılması önemle tavsiye edilir. Böylece ileride daha iyi uyumluluk sağlanabilir.</translation> <translation id="3997519162482760140">SAML oturum açma sayfalarında video yakalama cihazlarına erişimin verileceği URL'ler</translation> <translation id="4001275826058808087">Kurumsal cihazların BT yöneticileri, kullanıcıların Chrome OS Kaydı'nı kullanarak tekliflerden yararlanıp yararlanamayacağını belirlemek için bu bayrağı kullanabilirler. @@ -1526,6 +1539,7 @@ Örnek kalıplar için https://www.chromium.org/developers/how-tos/chrome-frame-getting-started adresine bakın.</translation> <translation id="467449052039111439">URL listesi aç</translation> +<translation id="4674871290487541952">Uzantı güncelleme ve yükleme işlemleriyle ilgili bütünlük kontrollerinde güvenli olmayan algoritmalara izin verme</translation> <translation id="4680936297850947973">M68 sürümünde kullanımdan kaldırılmıştır. Bunun yerine DefaultPopupsSetting politikasını kullanın. Tam açıklama için https://www.chromestatus.com/features/5675755719622656 adresine bakın. @@ -2297,7 +2311,7 @@ <translation id="6573305661369899995">URL kısıtlamaları için harici kaynak ayarla</translation> <translation id="6598235178374410284">Kullanıcı avatarı resmi</translation> <translation id="6603004149426829878">Saat dilimini çözümlerken kullanılabilir konum sinyallerini her zaman sunucuya gönder</translation> -<translation id="6628120204569232711">Depolama durumunu bildirme</translation> +<translation id="6628120204569232711">Depolama durumunu bildir</translation> <translation id="6628646143828354685">Web sitelerinin yakınlardaki Bluetooth cihazlarına erişim sağlamalarına izin verilip verilmeyeceğini ayarlamanıza olanak tanır. Erişim tamamıyla engellenebilir veya bir web sitesinin yakınlardaki Bluetooth cihazlarına erişim sağlamak istediği her defasında, kullanıcıya onay verip vermediği sorulabilir. Bu politika ayarlanmadan bırakılırsa "3" değeri kullanılır ve kullanıcı, bu değeri değiştirebilir.</translation> @@ -2555,6 +2569,12 @@ Bu politika Yanlış seçeneğine ayarlanırsa arka plan modu devre dışı bırakılır ve tarayıcı ayarlarında kullanıcı tarafından kontrol edilemez. Bu politika ayarlanmadan bırakılırsa arka plan modu ilk başta devre dışı bırakılır ve tarayıcı ayarlarında kullanıcı tarafından kontrol edilebilir.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" />, uzantıların güvenli bir şekilde güncellenmesini ve yüklenmesini sağlar. Ancak Chrome Web Mağazası'nın dışında barındırılan bazı uzantıların içeriği yalnızca SHA1 gibi güvenli olmayan imzalama veya karma oluşturma algoritmaları ile korunabilir. Bu politika devre dışı bırakılırsa, Chrome bu tür uzantıların sıfırdan yüklenmesine veya güncellenmesine izin vermez (uzantının geliştiricileri uzantıyı daha güçlü algoritmalarla yeniden oluşturana kadar). Bu politika etkinleştirilirse bu tür uzantıların yüklenmesine ve güncellenmesine izin verilir. + + Bu politika ayarlanmadan bırakılırsa, varsayılan etkin davranış olarak ayarlanır. + <ph name="PRODUCT_NAME" /> 75 sürümünden itibaren, bu politika ayarlanmadan bırakılırsa varsayılan devre dışı davranış olarak ayarlanır. + + <ph name="PRODUCT_NAME" /> 77 sürümünden itibaren, bu politika yoksayılır ve devre dışı olarak değerlendirilir.</translation> <translation id="7126716959063786004">Görev Yöneticisi'ndeki işlemlerin sona erdirilebilmesini etkinleştir</translation> <translation id="7127892035367404455">Hedef sürüme geri dönme</translation> <translation id="7128918109610518786"><ph name="PRODUCT_OS_NAME" /> tarafından başlatıcı çubuğunda sabitlenmiş uygulamalar olarak gösterilen uygulama tanımlayıcılarını listeler. @@ -3106,10 +3126,10 @@ <translation id="8274603902181597201">Kullanıcının ecryptfs ana dizinini sil ve yeni bir ext4-encrypted ana diziniyle başla.</translation> <translation id="8285435910062771358">Tam ekran büyüteci etkin</translation> <translation id="8288199156259560552">Android Google Konum Hizmetini Etkinleştir</translation> -<translation id="8292322992383748446">SoC bileşenlerine ait donanım istatistiklerini bildirin. +<translation id="8292322992383748446">SoC bileşenlerine ait donanım istatistiklerini bildirir. - Politika yanlış değerine ayarlanırsa istatistikler bildirilmez. - Politika doğru değerine ayarlanırsa veya ayarlanmadan bırakılırsa istatistikler bildirilir.</translation> + Politika false (yanlış) değerine ayarlanırsa istatistikler bildirilmez. + Politika true (doğru) değerine ayarlanırsa veya ayarlanmadan bırakılırsa istatistikler bildirilir.</translation> <translation id="8294750666104911727">Normalde, "ChromeFrameRendererSettings" politikası ne olursa olsun, chrome=1 olarak ayarlanmış X-UA Uyumlu sayfalar <ph name="PRODUCT_FRAME_NAME" /> ile oluşturulur. Bu ayarı etkinleştirirseniz sayfalarda meta etiketler taranmaz. @@ -3135,10 +3155,10 @@ <translation id="8367209241899435947">Windows'da Chrome Temizleme Aracı'nı etkinleştir</translation> <translation id="8369602308428138533">AC güçle çalışırken ekran kapatma gecikmesi</translation> <translation id="8371178326720637170">Yönetilen uzantıların Kurumsal Donanım Platformu API'sini kullanmasını sağlar</translation> -<translation id="8374747520743832795">Güçle ilgili donanım istatistiklerini ve tanımlayıcıları bildirin. +<translation id="8374747520743832795">Güçle ilgili donanım istatistiklerini ve tanımlayıcıları bildirir. - Politika yanlış değerine ayarlanırsa istatistikler bildirilmez. - Politika doğru değerine ayarlanırsa veya ayarlanmadan bırakılırsa istatistikler bildirilir.</translation> + Politika false (yanlış) değerine ayarlanırsa istatistikler bildirilmez. + Politika true (doğru) değerine ayarlanırsa veya ayarlanmadan bırakılırsa istatistikler bildirilir.</translation> <translation id="8377433219608936819"> Bu politika true (doğru) değerine ayarlanırsa, makine politikasıyla çelişmesi halinde bulut politikası öncelikli olur. Bu politika false (yanlış) değerine ayarlanırsa veya yapılandırılmazsa, bulut politikasıyla çelişmesi halinde makine politikası öncelikli olur.
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb index 22ccb4c..5bc04ce6 100644 --- a/components/policy/resources/policy_templates_uk.xtb +++ b/components/policy/resources/policy_templates_uk.xtb
@@ -788,6 +788,11 @@ Якщо це налаштування вимкнено, а вихідні з’єднання за протоколом UDP фільтруються брандмауером, такий комп’ютер дозволяє лише з’єднання з клієнтських комп’ютерів у локальній мережі. Якщо це правило не встановлено, його буде ввімкнено.</translation> +<translation id="2813281962735757923">Це правило керує проміжками часу, протягом яких пристрою <ph name="PRODUCT_OS_NAME" /> забороняється автоматично шукати оновлення. + Якщо для цього правила вказано непорожній список проміжків часу: + пристрої не зможуть автоматично шукати оновлення протягом указаних проміжків часу. Це правило не стосується пристроїв, для яких потрібне відкочування або версія яких нижча за <ph name="PRODUCT_OS_NAME" />, через потенційні проблеми з безпекою. Крім того, це правило не заблокує пошук оновлень за запитом користувача чи адміністратора. + Якщо це правило не налаштовано або не містить проміжків часу: + автоматичний пошук оновлень не блокуватиметься, але його зможуть заблокувати інші правила. Ця функція ввімкнена лише на пристроях Chrome, які налаштовано як термінали з автоматичним запуском. Це правило не обмежуватиме інші пристрої.</translation> <translation id="2823870601012066791">Розділ реєстру Windows для клієнтів <ph name="PRODUCT_OS_NAME" />:</translation> <translation id="2824715612115726353">Увімкнути режим анонімного перегляду</translation> <translation id="2838830882081735096">Заборонити перенесення даних і ARC</translation> @@ -1077,6 +1082,7 @@ <translation id="3547954654003013442">Налаштування проксі-сервера</translation> <translation id="355118380775352753">Веб-сайти, які мають відкриватися в альтернативному веб-переглядачі</translation> <translation id="3577251398714997599">Налаштування реклами для сайтів із нав’язливими оголошеннями</translation> +<translation id="3591527072193107424">Увімкнути функцію підтримки застарілих веб-переглядачів.</translation> <translation id="3591584750136265240">Налаштування автентифікації під час входу</translation> <translation id="3624171042292187668"> У налаштуваннях правила IsolateOrigins можна переглянути можливості ізоляції й обмеженого впливу на користувачів. Використовуйте IsolateOrigins зі списком сайтів, які хочете ізолювати. Параметр SitePerProcess ізолює всі сайти. @@ -1263,6 +1269,13 @@ <translation id="3965339130942650562">Час очікування до виходу неактивного користувача</translation> <translation id="3973371701361892765">Ніколи автоматично не ховати полицю</translation> <translation id="3984028218719007910">Визначає, чи <ph name="PRODUCT_OS_NAME" /> зберігає локальні дані облікового запису після виходу. Якщо значення встановлено як "true", <ph name="PRODUCT_OS_NAME" /> не зберігає постійні облікові записи, а всі дані сеансу користувача будуть видалені після виходу. Якщо значення правила встановлено як "false" або правило не налаштовано, пристрій може зберігати (зашифровані) локальні дані користувача.</translation> +<translation id="398475542699441679">Це правило дозволяє вибрати, чи вмикати підтримку застарілих веб-переглядачів. + + Якщо це правило не налаштовано або для нього вибрано значення false, Chrome не намагатиметься запускати визначені URL-адреси в альтернативному веб-переглядачі. + + Якщо для правила вибрано значення true, Chrome намагатиметься запускати визначені URL-адреси в альтернативному веб-переглядачі (як-от Internet Explorer). Цю функцію можна налаштувати за допомогою правил у групі "<ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />". + + Ця функція заміняє розширення "<ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />". Конфігурацію з такого розширення буде залишено в цій функції, однак ми настійно радимо використовувати правила Chrome. Це гарантує кращу сумісність у майбутньому.</translation> <translation id="3997519162482760140">URL-адреси, які матимуть доступ до пристроїв запису відео на сторінках входу SAML</translation> <translation id="4001275826058808087">ІT-адміністратори корпоративних пристроїв можуть використовувати це правило, щоб керувати можливістю користувачів отоварювати пропозиції через реєстрацію ОС Chrome. @@ -1502,6 +1515,7 @@ Приклади шаблонів можна переглянути на сторінці https://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Відкривати список URL-адрес</translation> +<translation id="4674871290487541952">Дозволити ненадійні алгоритми під час перевірки цілісності для оновлень і встановлень розширень</translation> <translation id="4680936297850947973">Не підтримується у версії M68. Натомість використовуйте правило DefaultPopupsSetting. Докладніше пояснення можна переглянути за посиланням: https://www.chromestatus.com/features/5675755719622656. @@ -2500,6 +2514,12 @@ Якщо для правила вибрано значення "false", фоновий режим буде вимкнено. Користувач не зможе ввімкнути його в налаштуваннях веб-переглядача. Якщо правило не налаштовано, фоновий режим буде вимкнено, і користувач зможе ввімкнути його в налаштуваннях веб-переглядача.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> надає оновлення безпеки й установлює розширення. Однак вміст деяких розширень, розміщених не у Веб-магазині Chrome, може бути захищений лише алгоритмами ненадійного підписування або хешування, як-от SHA1. Якщо це правило вимкнено, нове встановлення й оновлення таких розширень буде заборонено в Chrome (доки розробники розширення не оновлять для нього надійніші алгоритми). Якщо це правило ввімкнено, такі розширення можна встановлювати й оновлювати. + + Якщо правило не налаштовано, цю поведінку буде ввімкнено за умовчанням. + Якщо правило не налаштовано, у <ph name="PRODUCT_NAME" /> 75 цю поведінку буде вимкнено за умовчанням. + + У <ph name="PRODUCT_NAME" /> 77 це правило ігноруватиметься або вважатиметься вимкненим.</translation> <translation id="7126716959063786004">Увімкнути завершення процесів у Диспетчері завдань</translation> <translation id="7127892035367404455">Відкочування до цільової версії</translation> <translation id="7128918109610518786">Перелічує ідентифікатори програм, які <ph name="PRODUCT_OS_NAME" /> відображає як закріплені програми на панелі запуску.
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb index 61cc25b..a0dcece8 100644 --- a/components/policy/resources/policy_templates_vi.xtb +++ b/components/policy/resources/policy_templates_vi.xtb
@@ -807,6 +807,11 @@ Nếu cài đặt này bị tắt và kết nối UDP đi bị lọc bởi tường lửa, máy tính này sẽ chỉ cho phép kết nối từ các máy khách trong mạng cục bộ. Nếu không đặt chính sách này, cài đặt này sẽ được bật.</translation> +<translation id="2813281962735757923">Chính sách này kiểm soát khung thời gian mà thiết bị <ph name="PRODUCT_OS_NAME" /> không được phép tự động kiểm tra bản cập nhật. + Khi bạn đặt chính sách này thành một danh sách chứa các khoảng thời gian (tức là không trống), thì: + Thiết bị sẽ không thể tự động kiểm tra bản cập nhật trong khoảng thời gian chỉ định. Chính sách này sẽ không ảnh hưởng đến các thiết bị yêu cầu hạ cấp hệ điều hành hoặc thiết bị chạy phiên bản <ph name="PRODUCT_OS_NAME" /> tối thiểu trở xuống do các vấn đề bảo mật tiềm ẩn. Ngoài ra, chính sách này sẽ không chặn hoạt động kiểm tra bản cập nhật do người dùng hoặc quản trị viên yêu cầu. + Khi chính sách này không được đặt hoặc không chứa khoảng thời gian nào, thì: + Chính sách này sẽ không chặn hoạt động kiểm tra bản cập nhật tự động, nhưng các chính sách khác vẫn có thể chặn hoạt động này. Tính năng này chỉ được hỗ trợ trên thiết bị Chrome đã định cấu hình thành kiosk tự động chạy. Chính sách này sẽ không hạn chế các thiết bị khác.</translation> <translation id="2823870601012066791">Vị trí sổ đăng ký Windows cho các ứng dụng <ph name="PRODUCT_OS_NAME" />:</translation> <translation id="2824715612115726353">Bật chế độ Ẩn danh</translation> <translation id="2838830882081735096">Không cho phép di chuyển dữ liệu và ARC</translation> @@ -1102,6 +1107,7 @@ <translation id="3547954654003013442">Cài đặt proxy</translation> <translation id="355118380775352753">Các trang web sẽ mở trong trình duyệt thay thế</translation> <translation id="3577251398714997599">Cài đặt quảng cáo cho các trang web chứa quảng cáo xâm nhập</translation> +<translation id="3591527072193107424">Bật tính năng Hỗ trợ trình duyệt cũ.</translation> <translation id="3591584750136265240">Định cấu hình hành vi xác thực thông tin đăng nhập</translation> <translation id="3624171042292187668"> Có lẽ bạn nên xem xét tùy chọn cài đặt chính sách IsolateOrigins để khai thác tối đa cả hai chính sách (cách ly và tác động có giới hạn đối với người dùng) bằng cách sử dụng IsolateOrigins với danh sách trang web mà bạn muốn cách ly. Tùy chọn cài đặt SitePerProcess này sẽ cách ly tất cả các trang web. @@ -1290,6 +1296,13 @@ <translation id="3965339130942650562">Thời gian chờ cho tới khi đăng xuất của người dùng không hoạt động được thực thi</translation> <translation id="3973371701361892765">Không bao giờ tự động ẩn giá</translation> <translation id="3984028218719007910">Xác định liệu <ph name="PRODUCT_OS_NAME" /> có lưu dữ liệu tài khoản trên máy sau khi đăng xuất hay không. Nếu được đặt thành đúng, không có tài khoản lâu dài nào được <ph name="PRODUCT_OS_NAME" /> lưu và tất cả các dữ liệu từ phiên của người dùng sẽ bị hủy bỏ sau khi đăng xuất. Nếu chính sách này được đặt thành sai hoặc không được định cấu hình, thiết bị có thể lưu lại dữ liệu người dùng trên máy (được mã hóa).</translation> +<translation id="398475542699441679">Chính sách này kiểm soát việc có nên bật tính năng Hỗ trợ trình duyệt cũ hay không. + + Khi bạn không đặt chính sách này hoặc đặt thành false, thì Chrome sẽ không tìm cách khởi chạy các URL đã chỉ định trong một trình duyệt thay thế. + + Khi bạn đặt chính sách này thành true, thì Chrome sẽ tìm cách khởi chạy một số URL trong trình duyệt thay thế (chẳng hạn như Internet Explorer). Tính năng này được định cấu hình bằng các chính sách trong nhóm <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />. + + Tính năng này thay thế cho tiện ích <ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />. Mặc dù cấu hình từ tiện ích sẽ được chuyển sang tính năng này, chúng tôi đặc biệt khuyên bạn nên sử dụng các chính sách của Chrome. Điều này đảm bảo khả năng tương thích cao hơn trong tương lai.</translation> <translation id="3997519162482760140">URL sẽ được cấp quyền truy cập thiết bị quay video trên các trang đăng nhập SAML</translation> <translation id="4001275826058808087">Quản trị viên CNTT của thiết bị doanh nghiệp có thể sử dụng cờ này để kiểm soát xem có cho phép người dùng đổi phiếu mua hàng thông qua Đăng ký Chrome OS hay không. @@ -1540,6 +1553,7 @@ Để biết các mẫu ví dụ, hãy xem http://www.chromium.org/developers/how-tos/chrome-frame-getting-started.</translation> <translation id="467449052039111439">Mở một danh sách URL</translation> +<translation id="4674871290487541952">Cho phép thuật toán không an toàn trong quá trình kiểm tra tính toàn vẹn đối với các bản cập nhật và cài đặt tiện ích</translation> <translation id="4680936297850947973">Không còn dùng trong M68. Hãy sử dụng tùy chọn DefaultPopupsSetting để thay thế. Để biết thông tin giải thích đầy đủ, hãy truy cập vào https://www.chromestatus.com/features/5675755719622656. @@ -2586,6 +2600,12 @@ Nếu chính sách được đặt thành False thì chế độ nền sẽ bị tắt và người dùng không thể kiểm soát chế độ này trong trong cài đặt trình duyệt. Nếu chính sách này không được đặt thì chế độ nền sẽ bị tắt ban đầu và người dùng có thể kiểm soát chế độ này trong cài đặt trình duyệt.</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> cung cấp bản cập nhật và cài đặt an toàn cho tiện ích. Tuy nhiên, bạn chỉ có thể bảo vệ nội dung của một số tiện ích lưu trữ bên ngoài Cửa hàng Chrome trực tuyến bằng các thuật toán ký hoặc băm không an toàn như SHA1. Nếu bạn tắt chính sách này, thì Chrome sẽ không cho phép thực hiện quá trình cài đặt và cập nhật mới đối với những tiện ích đó (cho đến khi nhà phát triển tiện ích tạo lại tiện ích có thuật toán mạnh hơn). Khi bạn bật chính sách này, thì Chrome sẽ cho phép thực hiện quá trình cài đặt và cập nhật đối với những tiện ích đó. + + Chính sách này sẽ bật theo mặc định khi không được đặt. + Bắt đầu từ <ph name="PRODUCT_NAME" /> 75, chính sách này sẽ tắt theo mặc định khi không được đặt. + + Bắt đầu từ <ph name="PRODUCT_NAME" /> 77, chính sách này sẽ bị bỏ qua và coi như là đã tắt.</translation> <translation id="7126716959063786004">Cho phép kết thúc các quá trình trong Trình quản lý tác vụ</translation> <translation id="7127892035367404455">Khôi phục về phiên bản đích</translation> <translation id="7128918109610518786">Liệt kê số nhận dạng ứng dụng mà <ph name="PRODUCT_OS_NAME" /> hiển thị dưới dạng ứng dụng được ghim trong thanh trình chạy.
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb index 801fa88..4ecf051 100644 --- a/components/policy/resources/policy_templates_zh-CN.xtb +++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -744,6 +744,11 @@ 此政策处于停用状态并且出站UDP连接会被防火墙阻止时,此机器将只允许通过本地网络内的客户端机器建立连接。 如果此政策未设置,系统将启用此政策。</translation> +<translation id="2813281962735757923">此政策用于控制不允许 <ph name="PRODUCT_OS_NAME" />设备在哪些时间范围内自动检查是否有更新。 + 当此政策设为非空的时间范围列表时: + 相应设备将无法在指定的时间范围内自动检查是否有更新。由于存在潜在的安全问题,需要回滚的设备和低于最低 <ph name="PRODUCT_OS_NAME" />版本的设备都不会受到此政策的影响。另外,此政策不会阻止由用户或管理员请求的更新检查。 + 当此政策不含任何时间范围或未设置时: + 此政策不会阻止任何自动进行的更新检查,但其他政策可能会阻止这类检查。只有那些已配置为自动启动型自助服务终端的 Chrome 设备才能启用此功能。其他设备均不受此政策的限制。</translation> <translation id="2823870601012066791"><ph name="PRODUCT_OS_NAME" />客户端的 Windows 注册表位置:</translation> <translation id="2824715612115726353">启用隐身模式</translation> <translation id="2838830882081735096">禁止数据迁移和 ARC</translation> @@ -1029,6 +1034,7 @@ <translation id="3547954654003013442">代理设置</translation> <translation id="355118380775352753">要在替代浏览器中打开的网站</translation> <translation id="3577251398714997599">针对含侵扰性广告的网站的广告设置</translation> +<translation id="3591527072193107424">启用“旧版浏览器支持”功能。</translation> <translation id="3591584750136265240">配置登录身份验证行为</translation> <translation id="3624171042292187668"> 要想做到两全其美,既能实现隔离,又能减少给用户带来的影响,不妨查看一下 IsolateOrigins 政策设置,您可以使用 IsolateOrigins 政策来指定想要隔离的一系列网站。SitePerProcess 这项设置会隔离所有网站。 @@ -1210,6 +1216,13 @@ <translation id="3965339130942650562">对待机用户执行退出操作前的超时时间</translation> <translation id="3973371701361892765">一律不自动隐藏任务栏</translation> <translation id="3984028218719007910">确定 <ph name="PRODUCT_OS_NAME" />是否要在退出后保留本地帐号数据。如果将此政策设置为 true,<ph name="PRODUCT_OS_NAME" />就不会持续保留帐号,且会在退出后舍弃用户会话中的所有数据。如果未配置此政策或将其设置为 false,设备就会保留(经过加密的)本地用户数据。</translation> +<translation id="398475542699441679">此政策用于控制是否启用旧版浏览器支持。 + + 当此政策设为 false 或未设置时,Chrome 不会尝试在备用浏览器中打开指定的网址。 + + 当此政策设为 true 时,Chrome 会尝试在备用浏览器(例如 Internet Explorer)中打开某些网址。此功能是使用<ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" />组中的政策配置的。 + + 它将取代<ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />扩展程序。虽然该扩展程序中的配置会迁移至此功能中,但我们强烈建议您改用 Chrome 政策。这样有助于确保日后能实现更好的兼容性。</translation> <translation id="3997519162482760140">可通过 SAML 登录页面访问视频捕获设备的网址</translation> <translation id="4001275826058808087">企业设备的IT管理员可以使用此项控制是否允许用户通过注册Chrome操作系统兑换优惠。 @@ -1451,6 +1464,7 @@ 要查看示例格式,请访问 https://www.chromium.org/developers/how-tos/chrome-frame-getting-started。</translation> <translation id="467449052039111439">打开网址列表</translation> +<translation id="4674871290487541952">允许使用不安全的算法对扩展程序更新和安装进行完整性检查</translation> <translation id="4680936297850947973">已在 M68 中弃用。请改用 DefaultPopupsSetting。 如需完整说明,请访问 https://www.chromestatus.com/features/5675755719622656。 @@ -2422,6 +2436,12 @@ 如果此政策设为 False,系统将停用后台模式,并且用户无法在浏览器设置中控制该模式。 如果此政策未设置,开始时系统将停用后台模式,但用户可以在浏览器设置中控制该模式。</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> 用于控制安全更新和安装扩展程序。不过,对于某些在 Chrome 网上应用店外部托管的扩展程序而言,它们的内容可能只会受到不安全的签名或哈希算法(例如 SHA1)的保护。当此政策处于停用状态时,Chrome 会禁止对这类扩展程序进行全新安装或更新(除非相应开发者使用更强大的算法重新构建了这些扩展程序)。当此政策处于启用状态时,Chrome 会允许安装和更新这类扩展程序。 + + 当此政策未设置时,Chrome 的行为将会默认是此政策处于启用状态时的行为。 + 从 <ph name="PRODUCT_NAME" /> 75 开始,当此政策未设置时,Chrome 的行为将会默认是此政策处于停用状态时的行为。 + + 从 <ph name="PRODUCT_NAME" /> 77 开始,此政策将会被忽略并会被视为已停用。</translation> <translation id="7126716959063786004">允许在任务管理器中结束进程</translation> <translation id="7127892035367404455">回滚到目标版本</translation> <translation id="7128918109610518786">列出 <ph name="PRODUCT_OS_NAME" />在启动程序栏中显示为固定应用的应用标识符。
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb index d833021c..36a4430 100644 --- a/components/policy/resources/policy_templates_zh-TW.xtb +++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -335,7 +335,8 @@ 如要進一步瞭解 Internet Explorer 的 <ph name="IEEM_SITELIST_POLICY" /> 政策,請參閱:https://docs.microsoft.com/internet-explorer/ie11-deploy-guide/what-is-enterprise-mode</translation> <translation id="1839060937202387559">回報儲存裝置的硬體統計資料和 ID。 - 如果將這項政策設為 False,系統不會回報統計資料。如果設為 True 或不設定,則系統會回報統計資料。</translation> + 如果將這項政策設為 False,系統不會回報統計資料。 + 如果設為 True 或不設定,則系統會回報統計資料。</translation> <translation id="1843117931376765605">使用者政策的重新整理頻率</translation> <translation id="1844620919405873871">設定快速解鎖相關政策。</translation> <translation id="1847960418907100918">指定使用 POST 執行互動智慧搜尋時所用的參數,其包含以逗號分隔的名稱/數值配對。如果數值為範本參數 (例如上例中的 {searchTerms}),系統將會以實際的搜尋字詞資料替代這個數值。 @@ -772,6 +773,7 @@ 如果停用這項設定,且防火牆會篩出外傳 UDP 連線,則這台電腦只會自動允許來自區域網路用戶端電腦的連線。 如果未設定這項政策,系統會啟用這項設定。</translation> +<translation id="2813281962735757923">這項政策可控管針對 <ph name="PRODUCT_OS_NAME" /> 裝置封鎖自動檢查更新的時間範圍。將這項政策設為非空白的時間間隔清單時:在指定的時間間隔內,裝置將無法自動檢查更新。如果裝置需要復原至先前的版本,或是目前的 <ph name="PRODUCT_OS_NAME" /> 版本低於最低需求,則不受這項政策影響,以免發生潛在的安全性問題。此外,這項政策不會封鎖由使用者或系統管理員要求的更新檢查。若不設定這項政策,或政策中不包含時間間隔時:這項政策將不會封鎖任何自動更新檢查,但自動更新檢查仍可能遭到其他政策封鎖。只有在設為自動啟動資訊站的 Chrome 裝置上,這項功能才會啟用。其他裝置將不會受到這項政策限制。</translation> <translation id="2823870601012066791"><ph name="PRODUCT_OS_NAME" />用戶端的 Windows 登錄檔位置:</translation> <translation id="2824715612115726353">啟用無痕模式</translation> <translation id="2838830882081735096">不允許資料遷移和 ARC</translation> @@ -1061,6 +1063,7 @@ <translation id="3547954654003013442">Proxy 設定</translation> <translation id="355118380775352753">要在替代瀏覽器中開啟的網站</translation> <translation id="3577251398714997599">含侵入式廣告的網站的廣告設定</translation> +<translation id="3591527072193107424">啟用「舊版瀏覽器支援」功能。</translation> <translation id="3591584750136265240">設定登入驗證行為</translation> <translation id="3624171042292187668"> 想讓兩者皆發揮最佳成效,並透過適度隔離減少對使用者的影響,建議你查看 IsolateOrigins 政策,從中設定要隔離的網站清單。SitePerProcess 這項設定會隔離所有網站。 @@ -1242,6 +1245,7 @@ <translation id="3965339130942650562">逾時直到閒置使用者登出</translation> <translation id="3973371701361892765">永不自動隱藏檔案櫃</translation> <translation id="3984028218719007910">決定登出後 <ph name="PRODUCT_OS_NAME" /> 是否要保留本機帳戶資料。如果設為 True,<ph name="PRODUCT_OS_NAME" /> 不會保留任何永久帳戶,並且在登出後會刪除使用者工作階段的所有資料。如果這項政策設為 False 或未設定,裝置會保留 (加密) 本機使用者資料。</translation> +<translation id="398475542699441679">這項政策可控管是否要啟用「舊版瀏覽器支援」功能。如果不設定這項政策,或將這項政策設為 False,Chrome 不會嘗試在替代瀏覽器中啟動指定網址。如果將這項政策設為 True,則 Chrome 會嘗試在替代瀏覽器 (例如 Internet Explorer) 中啟動部分網址。系統會使用 <ph name="LEGACY_BROWSER_SUPPORT_POLICY_GROUP" /> 群組中的政策設定這項功能。這項功能是用於取代「<ph name="LEGACY_BROWSER_SUPPORT_EXTENSION_NAME" />」擴充功能,並會沿用該擴充功能的設定,但我們強烈建議你改用 Chrome 政策,以確保日後有更好的相容性。</translation> <translation id="3997519162482760140">可在 SAML 登入網頁取得錄影裝置存取權的網址</translation> <translation id="4001275826058808087">企業裝置的 IT 管理員可使用這個標記來控制是否允許使用者透過註冊 Chrome 作業系統來兌換優惠。 @@ -1481,6 +1485,7 @@ 如需模式範例,請參閱 https://www.chromium.org/developers/how-tos/chrome-frame-getting-started。</translation> <translation id="467449052039111439">開啟網址清單</translation> +<translation id="4674871290487541952">針對擴充功能更新與安裝作業進行完整性檢查時,允許使用不安全的演算法</translation> <translation id="4680936297850947973">自 M68 起已淘汰,請改用 DefaultPopupsSetting。 如需完整說明,請前往 https://www.chromestatus.com/features/5675755719622656。 @@ -2460,6 +2465,7 @@ 如果將這項政策設為 False,系統會停用背景模式,且使用者無法在瀏覽器設定中控制這項行為。 如果未設定這項政策,起初會停用背景模式,而使用者可以在瀏覽器設定中控制這項行為。</translation> +<translation id="7123266440503901785"><ph name="PRODUCT_NAME" /> 可讓你安全地更新及安裝擴充功能。不過,某些擴充功能並不是由 Chrome 線上應用程式商店代管,因此這些擴充功能的內容可能只受到 SHA1 這類不安全的簽署或雜湊演算法保護。如果停用這項政策,Chrome 會禁止安裝與更新這類擴充功能 (直到擴充功能開發人員以更安全的演算法重建這些擴充功能)。如果啟用這項政策,Chrome 將允許安裝與更新這類擴充功能。如果不設定這項政策,Chrome 會預設採用政策啟用時的行為。從 <ph name="PRODUCT_NAME" /> 75 版本開始,如果不設定這項政策,Chrome 會預設採用政策停用時的行為。從 <ph name="PRODUCT_NAME" /> 77 版本開始,Chrome 會忽略這項政策,並將政策視為已停用。</translation> <translation id="7126716959063786004">允許在工作管理員中結束處理程序</translation> <translation id="7127892035367404455">復原至目標版本</translation> <translation id="7128918109610518786">列出 <ph name="PRODUCT_OS_NAME" /> 在啟動器列中顯示為固定應用程式的應用程式識別碼。 @@ -2982,7 +2988,10 @@ <translation id="8274603902181597201">清除使用者的 eCryptfs 主目錄,改用全新的 Ext4 加密主目錄。</translation> <translation id="8285435910062771358">已啟用全螢幕放大鏡</translation> <translation id="8288199156259560552">啟用 Android Google 定位服務</translation> -<translation id="8292322992383748446">回報 SoC 元件的硬體統計資料。如果將這項政策設為 False,系統不會回報統計資料。如果設為 True 或不設定,則系統會回報統計資料。</translation> +<translation id="8292322992383748446">回報 SoC 元件的硬體統計資料。 + + 如果將這項政策設為 False,系統不會回報統計資料。 + 如果設為 True 或不設定,則系統會回報統計資料。</translation> <translation id="8294750666104911727">無論「ChromeFrameRendererSettings」政策為何,一般而言,X-UA-Compatible 設為 chrome=1 的網頁將會在 <ph name="PRODUCT_FRAME_NAME" /> 中開啟。 如果你啟用這項設定,系統將不會掃描網頁的中繼標記。 @@ -3008,7 +3017,8 @@ <translation id="8367209241899435947">在 Windows 裝置上啟用 Chrome 清理功能</translation> <translation id="8369602308428138533">在 AC 供電環境下執行時的螢幕關閉延遲時間</translation> <translation id="8371178326720637170">啟用受管理擴充功能以使用 Enterprise Hardware Platform API</translation> -<translation id="8374747520743832795">回報與電源相關的硬體統計資料和 ID。如果將這項政策設為 False,系統不會回報統計資料。如果設為 True 或不設定,則系統會回報統計資料。</translation> +<translation id="8374747520743832795">回報與電源相關的硬體統計資料和 ID。如果將這項政策設為 False,系統不會回報統計資料。 + 如果設為 True 或不設定,則系統會回報統計資料。</translation> <translation id="8377433219608936819"> 如果將這項政策設為 True,當雲端政策與裝置政策發生衝突時,系統會優先採用前者。 如果將這項政策設為 False 或不予設定,系統則會優先採用後者。
diff --git a/components/search_engines/search_engine_data_type_controller_unittest.cc b/components/search_engines/search_engine_data_type_controller_unittest.cc index 145e0c3..acf765c9 100644 --- a/components/search_engines/search_engine_data_type_controller_unittest.cc +++ b/components/search_engines/search_engine_data_type_controller_unittest.cc
@@ -67,10 +67,9 @@ void SetStartExpectations() { search_engine_dtc_.SetGenericChangeProcessorFactoryForTest( - base::WrapUnique<syncer::GenericChangeProcessorFactory>( - new syncer::FakeGenericChangeProcessorFactory( - std::make_unique<syncer::FakeGenericChangeProcessor>( - syncer::SEARCH_ENGINES, this)))); + std::make_unique<syncer::FakeGenericChangeProcessorFactory>( + std::make_unique<syncer::FakeGenericChangeProcessor>( + syncer::SEARCH_ENGINES))); EXPECT_CALL(model_load_callback_, Run(_, _)); }
diff --git a/components/search_engines/util.cc b/components/search_engines/util.cc index db4770b..d1371e33 100644 --- a/components/search_engines/util.cc +++ b/components/search_engines/util.cc
@@ -8,9 +8,11 @@ #include <stdint.h> #include <algorithm> +#include <limits> #include <map> #include <set> #include <string> +#include <unordered_map> #include <vector> #include "base/logging.h"
diff --git a/components/services/font/BUILD.gn b/components/services/font/BUILD.gn index 1c1e289..891bf03 100644 --- a/components/services/font/BUILD.gn +++ b/components/services/font/BUILD.gn
@@ -4,9 +4,7 @@ import("//build/config/features.gni") import("//ppapi/buildflags/buildflags.gni") -import("//services/catalog/public/tools/catalog.gni") import("//services/service_manager/public/cpp/service_executable.gni") -import("//services/service_manager/public/service_manifest.gni") import("//testing/test.gni") source_set("lib") { @@ -70,21 +68,16 @@ ] } -service_manifest("manifest") { - name = "font_service" - source = "manifest.json" -} - test("font_service_unittests") { sources = [ "font_loader_unittest.cc", ] deps = [ - ":font_service_unittests_catalog_source", "//base", "//base/test:test_support", "//components/services/font/public/cpp", + "//components/services/font/public/cpp:manifest", "//components/services/font/public/interfaces", "//mojo/core/test:run_all_unittests", "//mojo/public/cpp/bindings", @@ -107,19 +100,3 @@ ":font_service", ] } - -service_manifest("test_manifest") { - name = "font_service_unittests" - source = "test_manifest.json" -} - -catalog("font_service_unittests_catalog") { - embedded_services = [ ":test_manifest" ] - standalone_services = [ ":manifest" ] -} - -catalog_cpp_source("font_service_unittests_catalog_source") { - testonly = true - catalog = ":font_service_unittests_catalog" - generated_function_name = "font_service::test::CreateTestCatalog" -}
diff --git a/components/services/font/OWNERS b/components/services/font/OWNERS index 3d43cf0..f196c82 100644 --- a/components/services/font/OWNERS +++ b/components/services/font/OWNERS
@@ -1,6 +1 @@ drott@chromium.org - -per-file manifest.json=set noparent -per-file manifest.json=file://ipc/SECURITY_OWNERS -per-file test_manifest.json=set noparent -per-file test_manifest.json=file://ipc/SECURITY_OWNERS
diff --git a/components/services/font/font_loader_unittest.cc b/components/services/font/font_loader_unittest.cc index d7ec44d..c7984db 100644 --- a/components/services/font/font_loader_unittest.cc +++ b/components/services/font/font_loader_unittest.cc
@@ -7,12 +7,13 @@ #include "base/macros.h" #include "base/run_loop.h" #include "base/test/scoped_task_environment.h" -#include "components/services/font/font_service_unittests_catalog_source.h" #include "components/services/font/public/cpp/font_loader.h" +#include "components/services/font/public/cpp/manifest.h" #include "components/services/font/public/interfaces/constants.mojom.h" #include "components/services/font/public/interfaces/font_service.mojom.h" #include "ppapi/buildflags/buildflags.h" #include "services/service_manager/public/cpp/connector.h" +#include "services/service_manager/public/cpp/manifest_builder.h" #include "services/service_manager/public/cpp/test/test_service.h" #include "services/service_manager/public/cpp/test/test_service_manager.h" #include "testing/gtest/include/gtest/gtest.h" @@ -56,12 +57,19 @@ } #endif +const char kTestServiceName[] = "font_service_unittests"; + class FontLoaderTest : public testing::Test { public: FontLoaderTest() - : test_service_manager_(test::CreateTestCatalog()), - test_service_(test_service_manager_.RegisterTestInstance( - "font_service_unittests")), + : test_service_manager_( + {GetManifest(), + service_manager::ManifestBuilder() + .WithServiceName(kTestServiceName) + .RequireCapability(mojom::kServiceName, "font_service") + .Build()}), + test_service_( + test_service_manager_.RegisterTestInstance(kTestServiceName)), font_loader_(test_service_.connector()) {} ~FontLoaderTest() override = default;
diff --git a/components/services/font/manifest.json b/components/services/font/manifest.json deleted file mode 100644 index 8af0758..0000000 --- a/components/services/font/manifest.json +++ /dev/null
@@ -1,15 +0,0 @@ -{ - "name": "font_service", - "display_name": "Font Service", - "sandbox_type": "none", - "options" : { - "instance_sharing" : "shared_instance_across_users" - }, - "interface_provider_specs": { - "service_manager:connector": { - "provides": { - "font_service": [ "font_service.mojom.FontService" ] - } - } - } -}
diff --git a/components/services/font/public/cpp/BUILD.gn b/components/services/font/public/cpp/BUILD.gn index da5ce239..e553167a 100644 --- a/components/services/font/public/cpp/BUILD.gn +++ b/components/services/font/public/cpp/BUILD.gn
@@ -22,3 +22,16 @@ "//skia", ] } + +source_set("manifest") { + sources = [ + "manifest.cc", + "manifest.h", + ] + + deps = [ + "//base", + "//components/services/font/public/interfaces", + "//services/service_manager/public/cpp", + ] +}
diff --git a/components/services/font/public/cpp/OWNERS b/components/services/font/public/cpp/OWNERS new file mode 100644 index 0000000..6faeaa47 --- /dev/null +++ b/components/services/font/public/cpp/OWNERS
@@ -0,0 +1,4 @@ +per-file manifest.cc=set noparent +per-file manifest.cc=file://ipc/SECURITY_OWNERS +per-file manifest.h=set noparent +per-file manifest.h=file://ipc/SECURITY_OWNERS
diff --git a/components/services/font/public/cpp/manifest.cc b/components/services/font/public/cpp/manifest.cc new file mode 100644 index 0000000..dc6e07ce --- /dev/null +++ b/components/services/font/public/cpp/manifest.cc
@@ -0,0 +1,32 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/services/font/public/cpp/manifest.h" + +#include "base/no_destructor.h" +#include "components/services/font/public/interfaces/constants.mojom.h" +#include "components/services/font/public/interfaces/font_service.mojom.h" +#include "services/service_manager/public/cpp/manifest_builder.h" + +namespace font_service { + +const service_manager::Manifest& GetManifest() { + static base::NoDestructor<service_manager::Manifest> manifest{ + service_manager::ManifestBuilder() + .WithServiceName(mojom::kServiceName) + .WithDisplayName("Font Service") + .WithOptions(service_manager::ManifestOptionsBuilder() + .WithSandboxType("none") + .WithInstanceSharingPolicy( + service_manager::Manifest:: + InstanceSharingPolicy::kSharedAcrossGroups) + .Build()) + .ExposeCapability( + "font_service", + service_manager::Manifest::InterfaceList<mojom::FontService>()) + .Build()}; + return *manifest; +} + +} // namespace font_service
diff --git a/components/services/font/public/cpp/manifest.h b/components/services/font/public/cpp/manifest.h new file mode 100644 index 0000000..1c2c501 --- /dev/null +++ b/components/services/font/public/cpp/manifest.h
@@ -0,0 +1,16 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_SERVICES_FONT_PUBLIC_CPP_MANIFEST_H_ +#define COMPONENTS_SERVICES_FONT_PUBLIC_CPP_MANIFEST_H_ + +#include "services/service_manager/public/cpp/manifest.h" + +namespace font_service { + +const service_manager::Manifest& GetManifest(); + +} // namespace font_service + +#endif // COMPONENTS_SERVICES_FONT_PUBLIC_CPP_MANIFEST_H_
diff --git a/components/services/font/test_manifest.json b/components/services/font/test_manifest.json deleted file mode 100644 index a968987..0000000 --- a/components/services/font/test_manifest.json +++ /dev/null
@@ -1,11 +0,0 @@ -{ - "name": "font_service_unittests", - "display_name": "Font Service Unittests", - "interface_provider_specs": { - "service_manager:connector": { - "requires": { - "font_service": [ "font_service" ] - } - } - } -}
diff --git a/components/strings/components_strings_am.xtb b/components/strings/components_strings_am.xtb index 4039b41..cbf65315 100644 --- a/components/strings/components_strings_am.xtb +++ b/components/strings/components_strings_am.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">መውሰጃ</translation> <translation id="1662550410081243962">የመክፈያ ዘዴዎችን አስቀምጥ እና ሙላ</translation> <translation id="1663943134801823270">ካርዶች እና አድራሻዎች ከChrome የመጡ ናቸው። በ<ph name="BEGIN_LINK" />ቅንብሮች<ph name="END_LINK" /> ውስጥ ሊያስተዳድሯቸው ይችላሉ።</translation> +<translation id="1671391448414634642">ከአሁን በኋላ በ<ph name="SOURCE_LANGUAGE" /> ያሉ ገጾች ወደ <ph name="TARGET_LANGUAGE" /> ይተረጎማሉ።</translation> <translation id="1676269943528358898"><ph name="SITE" /> የእርስዎን መረጃ ለመጠበቅ በመደበኝነት ምስጠራ ይጠቀማል። Google Chrome አሁን ከ<ph name="SITE" /> ጋር ለመገናኘት ሲሞክር ድር ጣቢያው ያልተለመዱ እና ትክክል ያልሆኑ ምስክርነቶችን መልሷል። ይህ አንድ አጥቂ <ph name="SITE" />ን አስመስሎ ለመቅረብ ሲሞክር ነው ወይም አንድ የWi-Fi መግቢያ ገጽ ግንኙነቱን ሲያቋረጥ ሊከሰት ይችላል። Google Chrome ማንኛውም የውሂብ ልውውጥ ከመካሄዱ በፊት ግንኙነቱን ስላቋረጠው የእርስዎ መረጃ ደህንነት አሁንም የተጠበቀ ነው።</translation> <translation id="168841957122794586">የአገልጋይ እውቅና ማረጋገጫው ደካማ የሆነ ባለስውር መረጃ ቁልፍ ነው ያለው።</translation> <translation id="1697532407822776718">በቃ ጨርሰዋል!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">ተኪ ወደ ራስ-ውቅር ተዋቅሯል።</translation> <translation id="2030481566774242610"><ph name="LINK" />ን ማለትዎ ነው?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />ወኪሉን እና ኬላውን መፈተሽ<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">በ<ph name="LANGUAGE" /> ያሉ ገጾች አይተረጎሙም።</translation> <translation id="2053553514270667976">ዚፕ ኮድ</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 የአስተያየት ጥቆማ}one{# የአስተያየት ጥቆማዎች}other{# የአስተያየት ጥቆማዎች}}</translation> <translation id="2068663545051464999">የስንክል ሪፖርት መታወቂያ ተሰቅሏል <ph name="CRASH_ID" /> (ከባቢያዊ ዓውድ፦ <ph name="CRASH_LOCAL_ID" />)</translation> @@ -565,6 +567,7 @@ <translation id="4434045419905280838">ብቅ-ባዮች እና አቅጣጫ ማዞሮች</translation> <translation id="443673843213245140">የተኪ መጠቀም ተሰናክሏል ግን ግልጽ የሆነ የተኪ ውቅር ተገልጿል።</translation> <translation id="445100540951337728">ተቀባይነት ያላቸው ዴቢት ካርዶች</translation> +<translation id="4482953324121162758">ይህ ጣቢያ አይተረጎምም።</translation> <translation id="4506176782989081258">የማረጋገጥ ስህተት፦ <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">የሥርዓት አስተዳዳሪውን ማነጋገር</translation> <translation id="450710068430902550">ከአስተዳዳሪ ጋር ማጋራት</translation> @@ -756,6 +759,7 @@ <translation id="5786044859038896871">የካርድዎን መረጃ መሙላት ይፈልጋሉ?</translation> <translation id="5798683403665926540">በChrome ቅንብሮች ውስጥ መነሻ ገጽን ይቀይሩ</translation> <translation id="5803412860119678065">የእርስዎን <ph name="CARD_DETAIL" /> መሙላት ይፈልጋሉ?</translation> +<translation id="5804241973901381774">ፍቃዶች</translation> <translation id="5810442152076338065">ወደ <ph name="DOMAIN" /> ግንኙነትዎ ፍጹማዊ ስነ መሰውር ጥቅል በመጠቀም የተመሳጠረ ነው።</translation> <translation id="5813119285467412249">&አክልን ድገም</translation> <translation id="5838278095973806738">በአጥቂዎች ሊሰረቅ ስለሚችል በዚህ ጣቢያ ላይ ማናቸውም አደጋን ሊያስከትል የሚችል መረጃ (ለምሳሌ፦ የይለፍ ቃሎች ወይም የክሬዲት ካርዶች) ማስገባት የለብዎትም።</translation> @@ -777,6 +781,7 @@ <translation id="5967592137238574583">የዕውቂያ መረጃን ያርትዑ</translation> <translation id="5967867314010545767">ከታሪክ አስወግድ</translation> <translation id="5975083100439434680">አሳንስ</translation> +<translation id="5977976211062815271">በዚህ መሣሪያ ላይ</translation> <translation id="598637245381783098">የክፍያ መተግበሪያን መክፈት አይቻልም</translation> <translation id="5989320800837274978">ቋሚ ተኪ አገልጋዮችም ሆኑ የ.pac ስክሪፕት ዩአርኤል አልተገለጹም።</translation> <translation id="5990559369517809815">ወደ አገልጋዩ የተላኩ ጥያቄዎች በአንድ ቅጥያ ታግደዋል።</translation> @@ -874,6 +879,7 @@ <translation id="6710594484020273272"><የፍለጋ ቃል ይተይቡ></translation> <translation id="671076103358959139">የምዝገባ ማስመሰያ፦</translation> <translation id="6711464428925977395">በተኪ አገልጋዩ ላይ የሆነ ችግር አለ ወይም አድራሻው ትክክል አይደለም።</translation> +<translation id="6723740634201835758">በእርስዎ የGoogle መለያ ውስጥ</translation> <translation id="674375294223700098">ያልታወቀ የአገልጋይ እውቅና ማረጋገጫ ስህተት።</translation> <translation id="6744009308914054259">ግንኙነትን እየተጠባበቁ ሳሉ የመስመር ውጪ ጽሑፎችን ለማንበብ ውርዶችን መጎብኘት ይችላሉ።</translation> <translation id="6753269504797312559">የመምሪያ እሴት</translation> @@ -914,6 +920,7 @@ <translation id="6979440798594660689">ድምጸ-ከል አድርግ (ነባሪ)</translation> <translation id="6984479912851154518">በውጫዊ ማከማቻ በኩል ለማጫወት ከግል ሁነታ በመውጣት ላይ። ይቀጥል?</translation> <translation id="6989763994942163495">የላቁ ቅንብሮችን አሳይ...</translation> +<translation id="6996312675313362352">ሁልጊዜ <ph name="ORIGINAL_LANGUAGE" />ን ተርጉም</translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">እነዚህ ክፍያዎች የአንድ ጊዜ ወይም ተደጋጋሚ፣ እና የማያስታውቁ ሊሆኑ ይችላሉ።</translation> <translation id="7029809446516969842">የይለፍ ቃላት</translation>
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb index e59b01c3..4e096b2 100644 --- a/components/strings/components_strings_ar.xtb +++ b/components/strings/components_strings_ar.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">الاستلام</translation> <translation id="1662550410081243962">حفظ طرق الدفع وملؤها</translation> <translation id="1663943134801823270">تأتي البطاقات والعناوين من Chrome. ويمكنك إدارتها في <ph name="BEGIN_LINK" />الإعدادات<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">ستتم ترجمة الصفحات باللغة <ph name="SOURCE_LANGUAGE" /> إلى اللغة <ph name="TARGET_LANGUAGE" /> من الآن فصاعدًا.</translation> <translation id="1676269943528358898">يستخدم <ph name="SITE" /> التشفير عادة لحماية معلوماتك. عندما حاول Google Chrome الاتصال بموقع <ph name="SITE" /> هذه المرة، أرجَع موقع الويب بيانات اعتماد غير عادية وغير صحيحة. وقد يحدث هذا عندما يحاول أحد المهاجمين التظاهر بأنه موقع <ph name="SITE" />، أو إذا قاطعت شاشة تسجيل دخول Wi-Fi الاتصال. ولكن لا تزال معلوماتك آمنة نظرًا لأن Google Chrome أوقَف الاتصال قبل تبادل أي بيانات.</translation> <translation id="168841957122794586">تحتوي شهادة الخادم على مفتاح تشفير ضعيف.</translation> <translation id="1697532407822776718">أنت الآن على أتم استعداد.</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">تم تعيين الخادم الوكيل على التهيئة التلقائية.</translation> <translation id="2030481566774242610">هل تقصد <ph name="LINK" />؟</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />التحقق من الخادم الوكيل والجدار الناري<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">لن تتم ترجمة الصفحات باللغة <ph name="LANGUAGE" />.</translation> <translation id="2053553514270667976">الرمز البريدي</translation> <translation id="2064691555167957331">{COUNT,plural, =1{اقتراح واحد}zero{# اقتراح}two{اقتراحان (#)}few{# اقتراحات}many{# اقتراحًا}other{# اقتراح}}</translation> <translation id="2068663545051464999">مُعرّف تقارير الأعطال الذي تم تحميله <ph name="CRASH_ID" /> (السياق المحلي: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">النوافذ المنبثقة وإعادة التوجيه</translation> <translation id="443673843213245140">تم إيقاف استخدام الخادم الوكيل ولكن تم تحديد تهيئة صريحة للخادم الوكيل.</translation> <translation id="445100540951337728">بطاقات السحب الآلي المقبولة</translation> +<translation id="4482953324121162758">لن تتم ترجمة هذا الموقع.</translation> <translation id="4506176782989081258">خطأ في عملية التحقق: <ph name="VALIDATION_ERROR" />.</translation> <translation id="4506599922270137252">الاتصال بمشرف النظام</translation> <translation id="450710068430902550">المشاركة مع المشرف</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">هل تريد ملء معلومات بطاقتك؟</translation> <translation id="5798683403665926540">تغيير الصفحة الرئيسية في إعدادات Chrome</translation> <translation id="5803412860119678065">هل تريد ملء <ph name="CARD_DETAIL" />؟</translation> +<translation id="5804241973901381774">الأذونات</translation> <translation id="5810442152076338065">يتم ترميز اتصالك بالنطاق <ph name="DOMAIN" /> باستخدام مجموعة تشفير قديمة.</translation> <translation id="5813119285467412249">إعا&دة الإضافة</translation> <translation id="5838278095973806738">يجب عدم إدخال معلومات حسّاسة على هذا الموقع (على سبيل المثال، كلمات المرور أو بطاقات الائتمان)، نظرًا لأنه قد تتم سرقتها من قِبل المهاجمين.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">تعديل معلومات الاتصال</translation> <translation id="5967867314010545767">إزالة من السجل</translation> <translation id="5975083100439434680">تصغير</translation> +<translation id="5977976211062815271">على هذا الجهاز</translation> <translation id="598637245381783098">لا يمكن فتح تطبيق الدفع</translation> <translation id="5989320800837274978">لم يتم تحديد أي من الخوادم الوكيلة الثابتة ولا عنوان URL للنص البرمجي pac.</translation> <translation id="5990559369517809815">تم حظر الطلبات المقدمة إلى الخادم بواسطة إحدى الإضافات.</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><إدخال عبارة البحث></translation> <translation id="671076103358959139">الرمز المميّز للتسجيل:</translation> <translation id="6711464428925977395">هناك خطأ ما في الخادم الوكيل، أو العنوان غير صحيح.</translation> +<translation id="6723740634201835758">في حسابك على Google</translation> <translation id="674375294223700098">حدث خطأ غير معروف في شهادة الخادم.</translation> <translation id="6744009308914054259">أثناء انتظار اتصال، يمكنك الانتقال إلى "التنزيلات" للاطِّلاع على المقالات بلا اتصال بالإنترنت.</translation> <translation id="6753269504797312559">قيمة السياسة</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">كتم الصوت (تلقائي)</translation> <translation id="6984479912851154518">ستتم مغادرة وضع التصفّح المتخفي للدفع عبر تطبيق خارجي. هل تريد المتابعة؟</translation> <translation id="6989763994942163495">عرض الإعدادات المتقدمة...</translation> +<translation id="6996312675313362352">ترجمة اللغة <ph name="ORIGINAL_LANGUAGE" /> دائمًا</translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">قد يتمّ تحصيل هذه الرسوم لمرة واحدة أو بشكل متكرر، وقد تكون غير واضحة.</translation> <translation id="7029809446516969842">كلمات المرور</translation> @@ -940,7 +947,7 @@ <translation id="717330890047184534">معرّف GAIA:</translation> <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> وخيار <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> آخر}two{<ph name="SHIPPING_OPTION_PREVIEW" /> وخياران (<ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />) آخران}few{<ph name="SHIPPING_OPTION_PREVIEW" /> و<ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> خيارات أخرى}many{<ph name="SHIPPING_OPTION_PREVIEW" /> و<ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> خيارًا آخر}other{<ph name="SHIPPING_OPTION_PREVIEW" /> و<ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> خيار آخر}}</translation> <translation id="7179323680825933600">حفظ طرق الدفع وملء استماراتها</translation> -<translation id="7180611975245234373">تحديث</translation> +<translation id="7180611975245234373">إعادة التحميل</translation> <translation id="7182878459783632708">لم يتم تعيين أي سياسات</translation> <translation id="7186367841673660872">تمت ترجمة هذه الصفحة من اللغة<ph name="ORIGINAL_LANGUAGE" />إلى اللغة<ph name="LANGUAGE_LANGUAGE" /></translation> <translation id="7192203810768312527">يوفِّر <ph name="SIZE" />. قد يتم تحميل بعض مواقع الويب بشكل أبطأ عند زيارتها في المرة القادمة.</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb index 2ef0049..e418208 100644 --- a/components/strings/components_strings_bg.xtb +++ b/components/strings/components_strings_bg.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Вземане</translation> <translation id="1662550410081243962">Запазване и попълване на начини на плащане</translation> <translation id="1663943134801823270">Картите и адресите са от Chrome. Можете да ги управлявате от <ph name="BEGIN_LINK" />настройките<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">От сега нататък страниците на <ph name="SOURCE_LANGUAGE" /> ще се превеждат на <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898">Обикновено <ph name="SITE" /> използва шифроване за защита на информацията ви. Когато Google Chrome опита да установи връзка с/ъс <ph name="SITE" /> този път, уебсайтът върна необичайни и неправилни идентификационни данни. Това може да се случи, когато извършител на атака пробва да се представи за <ph name="SITE" /> или връзката е прекъсната от екран за вход в Wi-Fi. Информацията ви продължава да е защитена, тъй като Chrome спря връзката, преди да бъдат обменени данни.</translation> <translation id="168841957122794586">Сертификатът на сървъра съдържа слаб криптографски ключ.</translation> <translation id="1697532407822776718">Готово!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">За прокси сървъра е зададена автоматична конфигурация.</translation> <translation id="2030481566774242610">Може би имахте предвид <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Проверете прокси сървъра и защитната стена<ph name="END_LINK" />.</translation> +<translation id="2053111141626950936">Страниците на <ph name="LANGUAGE" /> няма да се превеждат.</translation> <translation id="2053553514270667976">Пощенски код</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 предложение}other{# предложения}}</translation> <translation id="2068663545051464999">Идентификатор на качения сигнал за срив <ph name="CRASH_ID" /> (Локално контекстно меню: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Изскач. прозорци и пренасочвания</translation> <translation id="443673843213245140">Използването на прокси сървър е деактивирано, но е посочена изрична негова конфигурация.</translation> <translation id="445100540951337728">Приемани дебитни карти</translation> +<translation id="4482953324121162758">Този сайт няма да се превежда.</translation> <translation id="4506176782989081258">Грешка при потвърждаването: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Свържете се със системния администратор.</translation> <translation id="450710068430902550">Споделяне с администратор</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">Искате ли да се попълнят данните за кредитната ви карта?</translation> <translation id="5798683403665926540">Променете началната страница от настройките на Chrome</translation> <translation id="5803412860119678065">Искате ли да се попълнят данните за <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Разрешения</translation> <translation id="5810442152076338065">Връзката ви с/ъс <ph name="DOMAIN" /> е шифрована с остарял криптографски пакет.</translation> <translation id="5813119285467412249">&Възстановяване на добавянето</translation> <translation id="5838278095973806738">Не ви препоръчваме да въвеждате поверителна информация в този сайт (например пароли или номера на кредитни карти), тъй като може да бъде открадната от извършители на атаки.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">Редактиране на информацията за връзка</translation> <translation id="5967867314010545767">Премахване от историята</translation> <translation id="5975083100439434680">Намаляване на мащаба</translation> +<translation id="5977976211062815271">На това устройство</translation> <translation id="598637245381783098">Приложението за плащане не може да се отвори</translation> <translation id="5989320800837274978">Не са посочени нито фиксирани прокси сървъри, нито URL адрес на скрипт във формат .pac.</translation> <translation id="5990559369517809815">Заявките към сървъра са блокирани от разширение.</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><Въведете дума за търсене></translation> <translation id="671076103358959139">Означение за регистриране:</translation> <translation id="6711464428925977395">Нещо не е наред с прокси сървъра или адресът е неправилен.</translation> +<translation id="6723740634201835758">В профила ви в Google</translation> <translation id="674375294223700098">Неизвестна грешка в сертификата на сървъра.</translation> <translation id="6744009308914054259">Докато чакате да се установи връзка, можете да посетите страницата „Изтегляния“, за да четете офлайн статии.</translation> <translation id="6753269504797312559">Стойност за правилото</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">Заглушаване (стандартно)</translation> <translation id="6984479912851154518">Ще напуснете режима на частно сърфиране, за да платите във външно приложение. Искате ли да продължите?</translation> <translation id="6989763994942163495">Показване на разширените настройки...</translation> +<translation id="6996312675313362352">Винаги да се превежда от <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Тези таксувания може да са еднократни или повтарящи се и е възможно да не са явни.</translation> <translation id="7029809446516969842">Пароли</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb index a824dd4..0dcb4c89 100644 --- a/components/strings/components_strings_bn.xtb +++ b/components/strings/components_strings_bn.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">তুলে নিন</translation> <translation id="1662550410081243962">পেমেন্টের পদ্ধতিগুলি পূরণ করে সেভ করুন</translation> <translation id="1663943134801823270">Chrome থেকে কার্ড এবং ঠিকানাগুলি এসেছে। আপনি <ph name="BEGIN_LINK" />সেটিংস<ph name="END_LINK" /> এ এগুলি পরিচালনা করতে পারবেন।</translation> +<translation id="1671391448414634642">এখন থেকে <ph name="SOURCE_LANGUAGE" /> ভাষার পৃষ্ঠা <ph name="TARGET_LANGUAGE" /> ভাষায় অনুবাদ করা হবে।</translation> <translation id="1676269943528358898"><ph name="SITE" /> সাধারণত আপনার তথ্য সুরক্ষিত রাখতে এনক্রিপশন ব্যবহার করে। এবার যখন Google Chrome <ph name="SITE" />-এর সাথে সংযোগ স্থাপন করার চেষ্টা করেছে, তখন ওয়েবসাইটটি অস্বাভাবিক এবং ভুল সার্টিফিকেট পাঠিয়েছে। হয় একজন আক্রমণকারী <ph name="SITE" /> হওয়ার ভান করছে অথবা কোনও ওয়াই-ফাই সাইন-ইন স্ক্রিণ সংযোগকে বাধা দেওয়া হয়েছে। আপনার তথ্য এখনো নিরাপদ আছে কারণ কোনও ডেটা আদানপ্রদানের আগেই Google Chrome সংযোগটিকে বন্ধ করে দিয়েছে।</translation> <translation id="168841957122794586">সার্ভার সার্টিফিকেটে একটি দুর্বল ক্রিপ্টোগ্রাফিক কী আছে৷</translation> <translation id="1697532407822776718">আপনার সমস্ত সেট আছে!</translation> @@ -183,6 +184,7 @@ <translation id="2025186561304664664">স্বতঃ কনফিগার করতে প্রক্সি সেট করা হয়৷</translation> <translation id="2030481566774242610">আপনি কি <ph name="LINK" /> বোঝাতে চেয়েছিলেন?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />প্রক্সি এবং ফায়ারওয়াল পরীক্ষা করে দেখুন<ph name="END_LINK" /></translation> +<translation id="2053111141626950936"><ph name="LANGUAGE" /> ভাষার পৃষ্ঠা অনুবাদ করা হবে না।</translation> <translation id="2053553514270667976">পিন কোড</translation> <translation id="2064691555167957331">{COUNT,plural, =1{১টি প্রস্তাব}one{#টি প্রস্তাব}other{#টি প্রস্তাব}}</translation> <translation id="2068663545051464999">ক্র্যাশ রিপোর্ট আইডি <ph name="CRASH_ID" /> আপলোড করা হয়েছে (স্থানীয় প্রসঙ্গ: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -567,6 +569,7 @@ <translation id="4434045419905280838">পপ-আপ এবং রিডাইরেক্ট</translation> <translation id="443673843213245140">প্রক্সির ব্যবহার অক্ষম করা হয়েছে কিন্তু কোনো স্পষ্ট প্রক্সি কনফিগারেশান নির্দিষ্ট করা হয়েছে৷</translation> <translation id="445100540951337728">ডেবিট কার্ড গ্রহণ করা হয়</translation> +<translation id="4482953324121162758">এই সাইটটি অনুবাদ করা হবে না।</translation> <translation id="4506176782989081258">যাচাইকরণের ত্রুটি: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">সিস্টেম প্রশাসকের সাথে যোগাযোগ করে দেখুন</translation> <translation id="450710068430902550">প্রশাসকের সাথে ভাগ করছে</translation> @@ -758,6 +761,7 @@ <translation id="5786044859038896871">আপনি কি আপনার কার্ডের তথ্য পূরণ করতে চান?</translation> <translation id="5798683403665926540">Chrome সেটিংসে হোম পৃষ্ঠা পরিবর্তন করুন</translation> <translation id="5803412860119678065">আপনি কি আপনার <ph name="CARD_DETAIL" /> এর তথ্য পূরণ করতে চান?</translation> +<translation id="5804241973901381774">অনুমতিগুলি</translation> <translation id="5810442152076338065"><ph name="DOMAIN" />-এ আপনার সংযোগ একটি অপ্রচলিত সাইফার স্যুট ব্যবহার করে এনক্রিপ্ট করা হয়েছে৷</translation> <translation id="5813119285467412249">&যোগ করাকে পুনরায় করুন</translation> <translation id="5838278095973806738">এই সাইটে আপনার কোনো সংবেদনশীল তথ্য দেওয়া উচিত হবে না (উদাহরণস্বরূপ, পাসওয়ার্ড বা ক্রেডিট কার্ড) কারণ আক্রমণকারীরা এগুলি চুরি করতে পারে।</translation> @@ -779,6 +783,7 @@ <translation id="5967592137238574583">পরিচিতির তথ্য সম্পাদনা করুন</translation> <translation id="5967867314010545767">ইতিহাস থেকে সরান</translation> <translation id="5975083100439434680">জুম কমান</translation> +<translation id="5977976211062815271">এই ডিভাইসে</translation> <translation id="598637245381783098">পেমেন্ট অ্যাপ খোলা যাচ্ছে না</translation> <translation id="5989320800837274978">কোনো নির্ধারিত প্রক্সি সার্ভার অথবা একটি.pac স্ক্রিপ্ট UR সুর্নিদিষ্টভাবে উল্লেখ করা হয়নি৷</translation> <translation id="5990559369517809815">সার্ভারে অনুরোধগুলি একটি এক্সটেনশন দিয়ে ব্লক করা আছে৷</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><সার্চের পদ লিখুন></translation> <translation id="671076103358959139">নথিভুক্ত করার জন্য টোকেন:</translation> <translation id="6711464428925977395">প্রক্সী সার্ভারের কোনো সমস্যা হয়েছে, অথবা ঠিকানাটি ভুল।</translation> +<translation id="6723740634201835758">আপনার Google অ্যাকাউন্টে</translation> <translation id="674375294223700098">অজানা সার্ভার সার্টিফিকেট ত্রুটি৷</translation> <translation id="6744009308914054259">কানেকশনের জন্য অপেক্ষা করার সময়, আপনি ডাউনলোডে গিয়ে অফলাইন নিবন্ধগুলি পড়তে পারেন।</translation> <translation id="6753269504797312559">নীতি মান</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">মিউট (ডিফল্ট)</translation> <translation id="6984479912851154518">এক্সটার্নাল অ্যাপ্লিকেশনের মাধ্যমে পেমেন্ট করার জন্য ব্যক্তিগত মোড থেকে বেরিয়ে যাচ্ছে। চালিয়ে যেতে চান?</translation> <translation id="6989763994942163495">উন্নত সেটিংস দেখান ...</translation> +<translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> ভাষায় থাকলে সবসময় অনুবাদ করা হবে</translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">এই চার্জটি একবার করা হতে পারে অথবা বারবার করা হতে পারে এবং স্পষ্টভাবে তথ্য নাও থাকতে পারে।</translation> <translation id="7029809446516969842">পাসওয়ার্ড</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb index 45da6bfa..63f6ab4 100644 --- a/components/strings/components_strings_ca.xtb +++ b/components/strings/components_strings_ca.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Recollida</translation> <translation id="1662550410081243962">Desa i emplena les formes de pagament</translation> <translation id="1663943134801823270">Les targetes i les adreces s'obtenen de Chrome. Pots gestionar-les des de <ph name="BEGIN_LINK" />Configuració<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">A partir d'ara, les pàgines en <ph name="SOURCE_LANGUAGE" /> es traduiran a <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898"><ph name="SITE" /> utilitza normalment l'encriptació per protegir la vostra informació. En aquesta ocasió, quan Google Chrome ha provat de connectar-se a <ph name="SITE" />, el lloc web ha enviat credencials poc comunes i incorrectes. Pot ser que un atacant estigui provant de fer-se passar per <ph name="SITE" /> o que una pantalla d'inici de sessió a la xarxa Wi-Fi hagi interromput la connexió. En qualsevol cas, la vostra informació continua estant segura, perquè Google Chrome ha aturat la connexió abans no s'intercanviés cap dada.</translation> <translation id="168841957122794586">El certificat de servidor conté una clau criptogràfica dèbil.</translation> <translation id="1697532407822776718">Ja esteu a punt</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">El servidor intermediari està definit perquè es configuri automàticament.</translation> <translation id="2030481566774242610">Volíeu dir <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Comproveu el servidor intermediari i el tallafoc<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Les pàgines en <ph name="LANGUAGE" /> no es traduiran.</translation> <translation id="2053553514270667976">Codi postal</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 suggeriment}other{# suggeriments}}</translation> <translation id="2068663545051464999">S'ha penjat l'identificador <ph name="CRASH_ID" /> de l'informe d'error (context local: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Finest. emergents i redireccions</translation> <translation id="443673843213245140">L'ús d'un servidor intermediari no està activat, però s'ha especificat una configuració explícita d'un servidor intermediari.</translation> <translation id="445100540951337728">Targetes de dèbit acceptades</translation> +<translation id="4482953324121162758">Aquest lloc web no es traduirà.</translation> <translation id="4506176782989081258">Error de validació: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Contacteu amb l'administrador del sistema</translation> <translation id="450710068430902550">Comparteix informació amb l'administrador</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">Vols emplenar la informació de la teva targeta?</translation> <translation id="5798683403665926540">Canvia la pàgina d'inici a la configuració de Chrome</translation> <translation id="5803412860119678065">Vols emplenar la informació de la teva targeta <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Permisos</translation> <translation id="5810442152076338065">La connexió a <ph name="DOMAIN" /> s'ha encriptat amb un sistema de xifratge obsolet.</translation> <translation id="5813119285467412249">&Refés l'addició</translation> <translation id="5838278095973806738">No introdueixis informació sensible en aquest lloc (com ara contrasenyes o targetes de crèdit), ja que alguns atacants podrien robar-la.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">Edita la informació de contacte</translation> <translation id="5967867314010545767">Elimina de l'historial</translation> <translation id="5975083100439434680">Redueix</translation> +<translation id="5977976211062815271">En aquest dispositiu</translation> <translation id="598637245381783098">No es pot obrir l'aplicació de pagament</translation> <translation id="5989320800837274978">No s'especifiquen servidors intermediaris ni URL d'script .pac.</translation> <translation id="5990559369517809815">Una extensió ha bloquejat les peticions al servidor.</translation> @@ -825,7 +830,7 @@ <translation id="627746635834430766">Perquè la propera vegada puguis pagar més ràpidament, desa la targeta i l'adreça de facturació al compte de Google.</translation> <translation id="6280223929691119688">No es pot entregar a aquesta adreça. Selecciona'n una altra.</translation> <translation id="6282194474023008486">Codi postal</translation> -<translation id="6290238015253830360">Els suggeriments d'articles es mostren aquí</translation> +<translation id="6290238015253830360">Els articles suggerits es mostren aquí</translation> <translation id="6302269476990306341">S'està aturant l'Assistent de Google a Chrome</translation> <translation id="6305205051461490394">No es pot accedir a <ph name="URL" />.</translation> <translation id="6321917430147971392">Reviseu la configuració de DNS</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><Escriviu el terme de cerca></translation> <translation id="671076103358959139">Testimoni d'inscripció:</translation> <translation id="6711464428925977395">Hi ha hagut algun problema amb el servidor intermediari o l'adreça no és correcta.</translation> +<translation id="6723740634201835758">Al teu Compte de Google</translation> <translation id="674375294223700098">Error de certificat del servidor desconegut.</translation> <translation id="6744009308914054259">Mentre esperes a tenir connexió, pots visitar Baixades per llegir articles sense connexió.</translation> <translation id="6753269504797312559">Valor de la política</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">Silencia (opció predeterminada)</translation> <translation id="6984479912851154518">Per pagar amb una aplicació externa sortiràs del mode privat. Vols continuar?</translation> <translation id="6989763994942163495">Mostra la configuració avançada...</translation> +<translation id="6996312675313362352">Tradueix sempre el text en <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Aquests càrrecs poden ser únics o periòdics i és possible que no s'indiquin d'una manera evident.</translation> <translation id="7029809446516969842">Contrasenyes</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb index 94901e8..b22c1ae9 100644 --- a/components/strings/components_strings_cs.xtb +++ b/components/strings/components_strings_cs.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Vyzvednutí</translation> <translation id="1662550410081243962">Ukládat a vyplňovat platební metody</translation> <translation id="1663943134801823270">Karty a adresy pocházejí z Chromu. Můžete je spravovat v <ph name="BEGIN_LINK" />Nastavení<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Stránky v jazyce <ph name="SOURCE_LANGUAGE" /> se od teď budou překládat do jazyka <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898">Web <ph name="SITE" /> vaše informace běžně chrání šifrováním. Když se prohlížeč Chrome k webu <ph name="SITE" /> pokusil připojit tentokrát, web vrátil neobvyklé a nesprávné identifikační údaje. K tomuto problému může dojít, pokud se za web <ph name="SITE" /> pokouší vydávat nějaký útočník nebo pokud bylo připojení přerušeno přihlašovací obrazovkou sítě Wi-Fi. Vaše informace jsou i nadále v bezpečí, protože prohlížeč Google Chrome připojení přerušil dříve, než došlo k odeslání jakýchkoliv dat.</translation> <translation id="168841957122794586">Certifikát serveru obsahuje slabý kryptografický klíč.</translation> <translation id="1697532407822776718">Vše je nastaveno!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Proxy server je nastaven na automatickou konfiguraci.</translation> <translation id="2030481566774242610">Měli jste na mysli <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Zkontrolovat proxy server a firewall<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Stránky v jazyce <ph name="LANGUAGE" /> se nebudou překládat.</translation> <translation id="2053553514270667976">PSČ</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 návrh}few{# návrhy}many{# návrhu}other{# návrhů}}</translation> <translation id="2068663545051464999">ID nahrané zprávy o selhání <ph name="CRASH_ID" /> (místní kontext: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -562,6 +564,7 @@ <translation id="4434045419905280838">Vyskakovací okna a přesměrování</translation> <translation id="443673843213245140">Využití proxy serveru je zakázáno, je však určena explicitní konfigurace proxy serveru.</translation> <translation id="445100540951337728">Přijímané debetní karty</translation> +<translation id="4482953324121162758">Tento web se nebude překládat.</translation> <translation id="4506176782989081258">Chyba ověřování: <ph name="VALIDATION_ERROR" />.</translation> <translation id="4506599922270137252">Kontaktovat administrátora systému</translation> <translation id="450710068430902550">Sdílení s administrátorem</translation> @@ -753,6 +756,7 @@ <translation id="5786044859038896871">Chcete vyplnit informace o kartě?</translation> <translation id="5798683403665926540">Domovskou stránku změníte v nastavení Chromu</translation> <translation id="5803412860119678065">Chcete vyplnit informace o kartě <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Oprávnění</translation> <translation id="5810442152076338065">Vaše připojení k doméně <ph name="DOMAIN" /> je šifrováno za použití zastaralé šifrovací sady.</translation> <translation id="5813119285467412249">&Opakovat přidání</translation> <translation id="5838278095973806738">Na tento web byste neměli zadávat citlivé údaje (například hesla nebo čísla platebních karet), protože by je mohli odcizit útočníci.</translation> @@ -774,6 +778,7 @@ <translation id="5967592137238574583">Úprava kontaktních údajů</translation> <translation id="5967867314010545767">Odstranit z historie</translation> <translation id="5975083100439434680">Oddálit</translation> +<translation id="5977976211062815271">V tomto zařízení</translation> <translation id="598637245381783098">Platební aplikaci nelze otevřít</translation> <translation id="5989320800837274978">Nejsou určeny pevně dané servery proxy ani adresa URL skriptu PAC.</translation> <translation id="5990559369517809815">Žádosti na tento server jsou blokovány rozšířením.</translation> @@ -870,6 +875,7 @@ <translation id="6710594484020273272"><Zadejte vyhledávací dotaz></translation> <translation id="671076103358959139">Registrační token:</translation> <translation id="6711464428925977395">Došlo k chybě proxy serveru nebo jste zadali nesprávnou adresu.</translation> +<translation id="6723740634201835758">V účtu Google</translation> <translation id="674375294223700098">Neznámá chyba certifikátu serveru.</translation> <translation id="6744009308914054259">Zatímco čekáte na připojení, v sekci Stažené soubory si můžete přečíst offline články.</translation> <translation id="6753269504797312559">Hodnota zásady</translation> @@ -910,6 +916,7 @@ <translation id="6979440798594660689">Ztlumit (výchozí)</translation> <translation id="6984479912851154518">Chystáte se opustit soukromý režim, abyste mohli zaplatit v externí aplikaci. Chcete pokračovat?</translation> <translation id="6989763994942163495">Zobrazit rozšířená nastavení...</translation> +<translation id="6996312675313362352">Jazyk <ph name="ORIGINAL_LANGUAGE" /> vždy překládat</translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Může se jednat o jednorázové nebo opakované poplatky, které nemusejí být jasně patrné.</translation> <translation id="7029809446516969842">Hesla</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb index b22da1b1..074fa44 100644 --- a/components/strings/components_strings_da.xtb +++ b/components/strings/components_strings_da.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Afhentning</translation> <translation id="1662550410081243962">Gem og udfyld betalingsmetoder</translation> <translation id="1663943134801823270">Kort og adresser er fra Chrome. Du kan administrere dem i <ph name="BEGIN_LINK" />Indstillinger<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Sider på <ph name="SOURCE_LANGUAGE" /> oversættes fremover til <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898"><ph name="SITE" /> bruger normalt kryptering til at beskytte dine oplysninger. Da Google Chrome forsøgte at oprette forbindelse til <ph name="SITE" /> denne gang, returnerede websitet usædvanlige og forkerte legitimationsoplysninger. Dette kan skyldes, at en hacker forsøger at udgive sig for at være <ph name="SITE" />, eller at en Wi-Fi-loginskærm har forstyrret forbindelsen. Dine oplysninger er stadig sikre, idet Google Chrome afbrød forbindelsen, inden der blev udvekslet data.</translation> <translation id="168841957122794586">Servercertifikatet indeholder en svag kryptografisk nøgle.</translation> <translation id="1697532407822776718">Fuldført</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Proxyen konfigureres automatisk.</translation> <translation id="2030481566774242610">Mente du <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Kontrollere din proxy og din firewall<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Sider på <ph name="LANGUAGE" /> oversættes ikke.</translation> <translation id="2053553514270667976">Postnummer</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 forslag}one{# forslag}other{# forslag}}</translation> <translation id="2068663545051464999">Uploadet nedbrudsrapport-id <ph name="CRASH_ID" /> (lokal kontekst: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Pop op-vinduer og omdirigeringer</translation> <translation id="443673843213245140">Brug af en proxy er deaktiveret, men en eksplicit proxykonfiguration er angivet.</translation> <translation id="445100540951337728">Accepterede debetkort</translation> +<translation id="4482953324121162758">Dette website kan ikke oversættes.</translation> <translation id="4506176782989081258">Valideringsfejl: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Kontakte systemadministratoren</translation> <translation id="450710068430902550">Deling med administrator</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">Skal dine kortoplysninger udfyldes?</translation> <translation id="5798683403665926540">Skift startside i indstillingerne for Chrome</translation> <translation id="5803412860119678065">Skal <ph name="CARD_DETAIL" /> udfyldes?</translation> +<translation id="5804241973901381774">Tilladelser</translation> <translation id="5810442152076338065">Din forbindelse til <ph name="DOMAIN" /> er krypteret ved hjælp af en forældet krypteringspakke.</translation> <translation id="5813119285467412249">&Annuller fortryd tilføjelse</translation> <translation id="5838278095973806738">Du bør ikke indtaste følsomme oplysninger på dette website (f.eks. adgangskoder eller kreditkortoplysninger), da de kan blive stjålet af hackere.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">Rediger kontaktoplysninger</translation> <translation id="5967867314010545767">Fjern fra historik</translation> <translation id="5975083100439434680">Zoom ud</translation> +<translation id="5977976211062815271">På denne enhed</translation> <translation id="598637245381783098">Betalingsappen kan ikke åbnes</translation> <translation id="5989320800837274978">Der er hverken angivet faste proxyservere eller en .pac-scriptwebadresse.</translation> <translation id="5990559369517809815">Anmodninger til serveren er blokeret af en udvidelse.</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><Indtast søgeterm></translation> <translation id="671076103358959139">Tilmeldingstoken:</translation> <translation id="6711464428925977395">Der er noget galt med proxyserveren, eller adressen er forkert.</translation> +<translation id="6723740634201835758">På din Google-konto</translation> <translation id="674375294223700098">Ukendt fejl i servercertifikatet.</translation> <translation id="6744009308914054259">Mens du venter på en forbindelse, kan du gå til Downloads for at læse artikler offline.</translation> <translation id="6753269504797312559">Politikkens værdi</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">Slå lyden fra (standard)</translation> <translation id="6984479912851154518">Du forlader privat tilstand for at betale via en ekstern app. Vil du fortsætte?</translation> <translation id="6989763994942163495">Vis avancerede indstillinger...</translation> +<translation id="6996312675313362352">Oversæt altid <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Disse debiteringer kan være enkeltstående eller gentagne og fremgår muligvis ikke tydeligt.</translation> <translation id="7029809446516969842">Adgangskoder</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb index 2b1e29bb..af0de30e 100644 --- a/components/strings/components_strings_de.xtb +++ b/components/strings/components_strings_de.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Abholung</translation> <translation id="1662550410081243962">Zahlungsmethode speichern und ausfüllen</translation> <translation id="1663943134801823270">Die Karten und Adressen stammen aus Chrome. Sie werden in den <ph name="BEGIN_LINK" />Einstellungen<ph name="END_LINK" /> verwaltet.</translation> +<translation id="1671391448414634642">Seiten auf <ph name="SOURCE_LANGUAGE" /> werden ab jetzt auf <ph name="TARGET_LANGUAGE" /> übersetzt.</translation> <translation id="1676269943528358898"><ph name="SITE" /> schützt Ihre Daten in der Regel durch Verschlüsselung. Als Google Chrome dieses Mal versuchte, eine Verbindung zu <ph name="SITE" /> herzustellen, gab die Website ungewöhnliche und falsche Anmeldedaten zurück. Entweder versucht ein Angreifer, sich als <ph name="SITE" /> auszugeben, oder die Verbindung wurde durch eine WLAN-Anmeldeseite unterbrochen. Da Google Chrome die Verbindung vor dem Austausch von Daten unterbrochen hat, sind Ihre Informationen weiterhin sicher.</translation> <translation id="168841957122794586">Das Serverzertifikat weist einen schwachen kryptografischen Schlüssel auf.</translation> <translation id="1697532407822776718">Fertig!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Proxy ist auf automatische Konfiguration eingestellt.</translation> <translation id="2030481566774242610">Meinten Sie <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Proxy und Firewall prüfen<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Seiten auf <ph name="LANGUAGE" /> werden nicht übersetzt.</translation> <translation id="2053553514270667976">Postleitzahl</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 Vorschlag}other{# Vorschläge}}</translation> <translation id="2068663545051464999">ID des hochgeladenen Absturzberichts: <ph name="CRASH_ID" /> (lokaler Kontext: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -564,6 +566,7 @@ <translation id="4434045419905280838">Pop-ups und Weiterleitungen</translation> <translation id="443673843213245140">Die Proxy-Nutzung ist deaktiviert, es ist jedoch eine explizite Proxy-Konfiguration festgelegt.</translation> <translation id="445100540951337728">Akzeptierte Debitkarten</translation> +<translation id="4482953324121162758">Diese Website wird nicht übersetzt.</translation> <translation id="4506176782989081258">Fehler bei der Überprüfung: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Kontakt mit dem Systemadministrator aufnehmen</translation> <translation id="450710068430902550">Datenfreigabe an Administrator</translation> @@ -755,6 +758,7 @@ <translation id="5786044859038896871">Möchten Sie Ihre Kreditkarteninformationen eingeben?</translation> <translation id="5798683403665926540">Startseite in den Chrome-Einstellungen ändern</translation> <translation id="5803412860119678065">Möchten Sie die Daten Ihrer <ph name="CARD_DETAIL" /> eingeben?</translation> +<translation id="5804241973901381774">Berechtigungen</translation> <translation id="5810442152076338065">Ihre Verbindung zu <ph name="DOMAIN" /> ist mit einer veralteten Codier-Suite verschlüsselt.</translation> <translation id="5813119285467412249">&Hinzufügen wiederholen</translation> <translation id="5838278095973806738">Sie sollten keine vertraulichen Informationen wie Passwörter oder Kreditkartennummern auf dieser Website eingeben, da sie von Angreifern gestohlen werden könnten.</translation> @@ -776,6 +780,7 @@ <translation id="5967592137238574583">Kontaktdaten bearbeiten</translation> <translation id="5967867314010545767">Aus Verlauf entfernen</translation> <translation id="5975083100439434680">Verkleinern</translation> +<translation id="5977976211062815271">Auf diesem Gerät</translation> <translation id="598637245381783098">Fehler beim Öffnen der Zahlungs-App</translation> <translation id="5989320800837274978">Weder feste Proxyserver noch eine PAC-Skript-URL sind festgelegt.</translation> <translation id="5990559369517809815">Anfragen an den Server wurden durch eine Erweiterung blockiert.</translation> @@ -873,6 +878,7 @@ <translation id="6710594484020273272"><Suchbegriff eingeben></translation> <translation id="671076103358959139">Registrierungstoken:</translation> <translation id="6711464428925977395">Mit dem Proxyserver ist ein Problem aufgetreten oder die Adresse ist falsch.</translation> +<translation id="6723740634201835758">Im Google-Konto</translation> <translation id="674375294223700098">Fehler wegen unbekanntem Serverzertifikat</translation> <translation id="6744009308914054259">Während Sie auf eine Verbindung warten, können Sie "Downloads" aufrufen und Offline-Artikel lesen.</translation> <translation id="6753269504797312559">Wert der Richtlinie</translation> @@ -913,6 +919,7 @@ <translation id="6979440798594660689">Stummschalten (Standard)</translation> <translation id="6984479912851154518">Der private Modus wird beendet, um über eine externe Anwendung zu zahlen. Weiter?</translation> <translation id="6989763994942163495">Erweiterte Einstellungen anzeigen</translation> +<translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> immer übersetzen</translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Diese Belastungen können einmalig oder wiederkehrend sein und sind vielleicht nicht offensichtlich.</translation> <translation id="7029809446516969842">Passwörter</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb index 8b168e6b..4d894f7 100644 --- a/components/strings/components_strings_el.xtb +++ b/components/strings/components_strings_el.xtb
@@ -761,6 +761,7 @@ <translation id="5786044859038896871">Θέλετε να συμπληρωθούν τα στοιχεία της κάρτας σας;</translation> <translation id="5798683403665926540">Αλλαγή αρχικής σελίδας στις ρυθμίσεις του Chrome</translation> <translation id="5803412860119678065">Θέλετε να συμπληρωθούν τα στοιχεία της κάρτας <ph name="CARD_DETAIL" />;</translation> +<translation id="5804241973901381774">Άδειες</translation> <translation id="5810442152076338065">Η σύνδεσή σας στο <ph name="DOMAIN" /> κρυπτογραφείται χρησιμοποιώντας ένα απαρχαιωμένο πρόγραμμα κρυπτογράφησης.</translation> <translation id="5813119285467412249">&Επανάληψη προσθήκης</translation> <translation id="5838278095973806738">Δεν θα πρέπει να εισαγάγετε ευαίσθητες πληροφορίες σε αυτόν τον ιστότοπο (για παράδειγμα, κωδικούς πρόσβασης ή πιστωτικές κάρτες), επειδή ενδέχεται να υποκλαπούν από εισβολείς.</translation>
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb index 62013e4..94fc535 100644 --- a/components/strings/components_strings_en-GB.xtb +++ b/components/strings/components_strings_en-GB.xtb
@@ -760,6 +760,7 @@ <translation id="5786044859038896871">Do you want to fill in your card info?</translation> <translation id="5798683403665926540">Change home page in Chrome settings</translation> <translation id="5803412860119678065">Do you want to fill in your <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Permissions</translation> <translation id="5810442152076338065">Your connection to <ph name="DOMAIN" /> is encrypted using an obsolete cipher suite.</translation> <translation id="5813119285467412249">&Redo Add</translation> <translation id="5838278095973806738">You should not enter any sensitive information on this site (for example, passwords or credit cards), because it could be stolen by attackers.</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb index 8b9e091..e1768fd 100644 --- a/components/strings/components_strings_es-419.xtb +++ b/components/strings/components_strings_es-419.xtb
@@ -36,7 +36,7 @@ <translation id="1165039591588034296">Error</translation> <translation id="1173894706177603556">Cambiar nombre</translation> <translation id="1175364870820465910">Im&primir...</translation> -<translation id="1181037720776840403">Eliminar</translation> +<translation id="1181037720776840403">Quitar</translation> <translation id="1197088940767939838">Naranja</translation> <translation id="1201402288615127009">Siguiente</translation> <translation id="1201895884277373915">Más sobre este sitio</translation> @@ -129,6 +129,7 @@ <translation id="1656489000284462475">Retiro</translation> <translation id="1662550410081243962">Guardar y completar formas de pago</translation> <translation id="1663943134801823270">Las tarjetas y direcciones provienen de Chrome. Puedes administrarlas en <ph name="BEGIN_LINK" />Configuración<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">De ahora en más, las páginas en <ph name="SOURCE_LANGUAGE" /> se traducirán al <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898"><ph name="SITE" /> suele utilizar la encriptación para proteger la información. Cuando Google Chrome intentó conectarse a <ph name="SITE" />, el sitio web devolvió credenciales incorrectas y poco comunes. Es posible que un atacante quiera suplantar a <ph name="SITE" /> o que una pantalla de acceso Wi-Fi haya interrumpido la conexión. Tu información permanece segura porque Google Chrome detuvo la conexión para evitar el intercambio de datos.</translation> <translation id="168841957122794586">El certificado del servidor contiene una clave criptográfica no segura.</translation> <translation id="1697532407822776718">¡Listo!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">El proxy se estableció en configuración automática.</translation> <translation id="2030481566774242610">¿Quisiste decir: <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Comprobar el proxy y el firewall<ph name="END_LINK" />.</translation> +<translation id="2053111141626950936">No se traducirán las páginas en <ph name="LANGUAGE" />.</translation> <translation id="2053553514270667976">Código Postal</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 sugerencia}other{# sugerencias}}</translation> <translation id="2068663545051464999">ID del informe de fallos subido <ph name="CRASH_ID" /> (Contexto local: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -567,6 +569,7 @@ <translation id="4434045419905280838">Ventanas emergentes y redirec.</translation> <translation id="443673843213245140">Se inhabilitó el uso de un proxy, pero se especificó una configuración explícita de proxy.</translation> <translation id="445100540951337728">Tarjetas de débito aceptadas</translation> +<translation id="4482953324121162758">Este sitio no se traducirá.</translation> <translation id="4506176782989081258">Error de validación: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Comunicarse con el administrador del sistema.</translation> <translation id="450710068430902550">Compartir con el administrador</translation> @@ -758,6 +761,7 @@ <translation id="5786044859038896871">¿Deseas llenar los campos con la información de tu tarjeta?</translation> <translation id="5798683403665926540">Cambia la página principal en la configuración de Chrome</translation> <translation id="5803412860119678065">¿Deseas llenar los campos con la información de tu tarjeta <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Permisos</translation> <translation id="5810442152076338065">Tu conexión a <ph name="DOMAIN" /> está encriptada con un conjunto de cifrado obsoleto.</translation> <translation id="5813119285467412249">&Rehacer Agregar</translation> <translation id="5838278095973806738">No debes ingresar información confidencial en este sitio (p. ej., contraseñas o tarjetas de crédito), ya que los atacantes podrían robarla.</translation> @@ -779,6 +783,7 @@ <translation id="5967592137238574583">Editar la información de contacto</translation> <translation id="5967867314010545767">Eliminar del historial</translation> <translation id="5975083100439434680">Alejar</translation> +<translation id="5977976211062815271">En este dispositivo</translation> <translation id="598637245381783098">No se puede abrir la app de pago</translation> <translation id="5989320800837274978">No se especifican servidores proxy fijos ni URL de secuencias de comandos .pac.</translation> <translation id="5990559369517809815">Una extensión bloqueó las solicitudes al servidor.</translation> @@ -876,6 +881,7 @@ <translation id="6710594484020273272"><Escribe el término de búsqueda></translation> <translation id="671076103358959139">Token de inscripción:</translation> <translation id="6711464428925977395">Hay un error en el servidor proxy o la dirección es incorrecta.</translation> +<translation id="6723740634201835758">En tu Cuenta de Google</translation> <translation id="674375294223700098">Error de certificado de servidor desconocido.</translation> <translation id="6744009308914054259">Mientras esperas a que se restablezca la conexión, puedes visitar Descargas para leer artículos sin conexión.</translation> <translation id="6753269504797312559">Valor de la política</translation> @@ -916,6 +922,7 @@ <translation id="6979440798594660689">Silenciar (predeterminado)</translation> <translation id="6984479912851154518">Saldrás del modo privado para pagar mediante una aplicación externa. ¿Deseas continuar?</translation> <translation id="6989763994942163495">Mostrar configuración avanzada...</translation> +<translation id="6996312675313362352">Siempre traducir <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Estos cargos pueden ser únicos o recurrentes, y es posible que no sean evidentes.</translation> <translation id="7029809446516969842">Contraseñas</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb index b8cb11b..b480c14 100644 --- a/components/strings/components_strings_es.xtb +++ b/components/strings/components_strings_es.xtb
@@ -36,7 +36,7 @@ <translation id="1165039591588034296">Error</translation> <translation id="1173894706177603556">Cambiar nombre</translation> <translation id="1175364870820465910">Im&primir...</translation> -<translation id="1181037720776840403">Eliminar</translation> +<translation id="1181037720776840403">Quitar</translation> <translation id="1197088940767939838">Naranja</translation> <translation id="1201402288615127009">Siguiente</translation> <translation id="1201895884277373915">Más entradas de este sitio</translation> @@ -129,6 +129,7 @@ <translation id="1656489000284462475">Recogida</translation> <translation id="1662550410081243962">Guardar y autocompletar métodos de pago</translation> <translation id="1663943134801823270">Las tarjetas y las direcciones proceden de Chrome. Puedes gestionarlas en <ph name="BEGIN_LINK" />Configuración<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">A partir de ahora, las páginas en <ph name="SOURCE_LANGUAGE" /> se traducirán al <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898"><ph name="SITE" /> utiliza normalmente el cifrado para proteger tu información. Cuando Google Chrome intentó establecer conexión con <ph name="SITE" />, el sitio web devolvió unas credenciales inusuales e incorrectas. Esto puede ocurrir si un atacante intenta suplantar la identidad de <ph name="SITE" /> o si una pantalla de inicio de sesión Wi-Fi interrumpe la conexión. Tu información sigue estando protegida, ya que Google Chrome detuvo la conexión antes de que se intercambiaran datos.</translation> <translation id="168841957122794586">El certificado del servidor contiene una clave criptográfica no segura.</translation> <translation id="1697532407822776718">¡Listo!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Se ha establecido que el proxy se configure automáticamente.</translation> <translation id="2030481566774242610">¿Querías decir <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Comprobar el proxy y el cortafuegos<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">No se traducirán las páginas en <ph name="LANGUAGE" />.</translation> <translation id="2053553514270667976">Código postal</translation> <translation id="2064691555167957331">{COUNT,plural, =1{Una sugerencia}other{# sugerencias}}</translation> <translation id="2068663545051464999">ID del informe sobre fallos subido: <ph name="CRASH_ID" /> (contexto local: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Ventanas emergentes y redirecciones</translation> <translation id="443673843213245140">Se ha inhabilitado el uso de un servidor proxy, pero se han especificado ajustes de proxy explícitos.</translation> <translation id="445100540951337728">Tarjetas de débito aceptadas</translation> +<translation id="4482953324121162758">Este sitio web no se traducirá.</translation> <translation id="4506176782989081258">Error de validación: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Ponerte en contacto con el administrador del sistema</translation> <translation id="450710068430902550">Compartir con el administrador</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">¿Quieres rellenar la información de la tarjeta?</translation> <translation id="5798683403665926540">Cambia la página de inicio en la configuración de Chrome</translation> <translation id="5803412860119678065">¿Quieres rellenar la información de <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Permisos</translation> <translation id="5810442152076338065">Tu conexión con <ph name="DOMAIN" /> está cifrada con un conjunto de cifrado obsoleto.</translation> <translation id="5813119285467412249">&Rehacer acción de añadir</translation> <translation id="5838278095973806738">No deberías introducir información confidencial en este sitio web (por ejemplo, contraseñas o tarjetas de crédito) porque los atacantes podrían robarla.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">Edita la información de contacto</translation> <translation id="5967867314010545767">Eliminar del historial</translation> <translation id="5975083100439434680">Reducir</translation> +<translation id="5977976211062815271">En este dispositivo</translation> <translation id="598637245381783098">No se ha podido abrir la aplicación de pago</translation> <translation id="5989320800837274978">No se han especificado servidores proxy fijos ni una URL de secuencia de comandos .pac.</translation> <translation id="5990559369517809815">Una extensión ha bloqueado el envío de solicitudes al servidor.</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><Introducir término de búsqueda></translation> <translation id="671076103358959139">Token de registro:</translation> <translation id="6711464428925977395">Se ha producido un error con el servidor proxy o la dirección es incorrecta.</translation> +<translation id="6723740634201835758">De tu cuenta de Google</translation> <translation id="674375294223700098">Error de certificado de servidor desconocido</translation> <translation id="6744009308914054259">Mientras esperas a que haya conexión, puedes ir a Descargas para leer artículos sin conexión.</translation> <translation id="6753269504797312559">Valor de la política</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">Silenciar (predeterminado)</translation> <translation id="6984479912851154518">Saldrás del modo privado para hacer un pago en una aplicación externa. ¿Quieres continuar?</translation> <translation id="6989763994942163495">Mostrar configuración avanzada...</translation> +<translation id="6996312675313362352">Traducir siempre del <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Estos cargos pueden ser únicos o periódicos, y es posible que no se indiquen de una forma evidente.</translation> <translation id="7029809446516969842">Contraseñas</translation>
diff --git a/components/strings/components_strings_et.xtb b/components/strings/components_strings_et.xtb index fc35a7da..4b6b0da 100644 --- a/components/strings/components_strings_et.xtb +++ b/components/strings/components_strings_et.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Kättesaamine</translation> <translation id="1662550410081243962">Salvesta ja sisesta makseviisid</translation> <translation id="1663943134801823270">Kaardid ja aadressid pärinevad Chrome'ist. Neid saate hallata menüüs <ph name="BEGIN_LINK" />Seaded<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Lehed keeles <ph name="SOURCE_LANGUAGE" /> tõlgitakse nüüd keelde <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898">Sait <ph name="SITE" /> kasutab teie teabe kaitsmiseks tavaliselt krüpteerimist. Kui Google Chrome püüdis seekord saidiga <ph name="SITE" /> ühendust luua, tagastas veebisait ebatavalised ja valed mandaadid. See võib juhtuda siis, kui ründaja proovib teeselda, et on sait <ph name="SITE" />, või WiFi sisselogimisekraan on ühenduse katkestanud. Teie teave on endiselt kaitstud, sest Google Chrome peatas ühenduse enne andmevahetust.</translation> <translation id="168841957122794586">Serveri sertifikaat sisaldab nõrka krüptograafilist võtit.</translation> <translation id="1697532407822776718">Kõik on valmis!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Puhverserver seadistatakse automaatselt.</translation> <translation id="2030481566774242610">Kas mõtlesite aadressi <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Kontrollige puhverserverit ja tulemüüri<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Selles keeles lehti ei tõlgita: <ph name="LANGUAGE" />.</translation> <translation id="2053553514270667976">Postiindeks</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 soovitus}other{# soovitust}}</translation> <translation id="2068663545051464999">Üleslaaditud krahhiaruande ID <ph name="CRASH_ID" /> (kohalik kontekst: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Hüpikaknad ja ümbersuunamised</translation> <translation id="443673843213245140">Puhverserveri kasutamine on keelatud, kuid määratud on ka konkreetne puhverserveri konfigureerimine.</translation> <translation id="445100540951337728">Aktsepteeritavad deebetkaardid</translation> +<translation id="4482953324121162758">Seda saiti ei tõlgita.</translation> <translation id="4506176782989081258">Valideerimisviga: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Võtke ühendust süsteemiadministraatoriga</translation> <translation id="450710068430902550">Administraatoriga jagamine</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">Kas soovite sisestada oma kaarditeabe?</translation> <translation id="5798683403665926540">Muutke avalehte Chrome'i seadetes</translation> <translation id="5803412860119678065">Kas soovite sisestada kirje <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Load</translation> <translation id="5810442152076338065">Teie ühendus domeeniga <ph name="DOMAIN" /> on krüpteeritud aegunud šifreerimiskomplektiga.</translation> <translation id="5813119285467412249">&Lisa uuesti</translation> <translation id="5838278095973806738">Te ei tohiks sellele saidile sisestada tundlikku teavet (nt paroolid või krediitkaardid), kuna ründajad võivad selle varastada.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">Kontaktteabe muutmine</translation> <translation id="5967867314010545767">Eemalda ajaloost</translation> <translation id="5975083100439434680">Suumib välja</translation> +<translation id="5977976211062815271">Selles seadmes</translation> <translation id="598637245381783098">Makserakendust ei saa avada</translation> <translation id="5989320800837274978">Määratud ei ole fikseeritud puhverservereid ega pac-skriptiga URL-i.</translation> <translation id="5990559369517809815">Laiendus blokeeris serverisse saadetavad päringud.</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><Sisestage otsingutermin></translation> <translation id="671076103358959139">Registreerimismärk:</translation> <translation id="6711464428925977395">Puhverserveriga on midagi valesti või aadress on vale.</translation> +<translation id="6723740634201835758">Teie Google’i kontol</translation> <translation id="674375294223700098">Serveri sertifikaadi tundmatu viga.</translation> <translation id="6744009308914054259">Ühenduse loomise ajal võite avada jaotise Allalaadimised ja lugeda võrguühenduseta artikleid.</translation> <translation id="6753269504797312559">Reegli väärtus</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">Vaigista (vaikeseade)</translation> <translation id="6984479912851154518">Väljute privaatsest režiimist, et välise rakenduse kaudu maksta. Kas soovite jätkata?</translation> <translation id="6989763994942163495">Kuva täpsemad seaded ...</translation> +<translation id="6996312675313362352">Tõlgi alati: <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">Hiina UnionPay</translation> <translation id="7016992613359344582">Tasud võivad olla ühekordsed või korduvad ja need ei pruugi olla ilmselged.</translation> <translation id="7029809446516969842">Paroolid</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb index 3da433c..7400493 100644 --- a/components/strings/components_strings_fa.xtb +++ b/components/strings/components_strings_fa.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">تحویل گرفتن</translation> <translation id="1662550410081243962">ذخیره و تکمیل روشهای پرداخت</translation> <translation id="1663943134801823270">کارتها و نشانیها از Chrome هستند. میتوانید آنها را در <ph name="BEGIN_LINK" />تنظیمات<ph name="END_LINK" /> مدیریت کنید.</translation> +<translation id="1671391448414634642">از این به بعد، صفحههای <ph name="SOURCE_LANGUAGE" />، به <ph name="TARGET_LANGUAGE" /> ترجمه خواهند شد.</translation> <translation id="1676269943528358898"><ph name="SITE" /> معمولاً برای محافظت از اطلاعات شما از رمزگذاری استفاده میکند. اما این بار که Chrome تلاش کرد به <ph name="SITE" /> متصل شود، وبسایت اعتبارنامهای نامعمول و نادرست را برگرداند. ممکن است مهاجمی در تلاش باشد خود را بهجای <ph name="SITE" /> معرفی کند یا یک صفحه ورود به سیستم Wi-Fi در ارتباط اختلال ایجاد کرده باشد. اطلاعات شما همچنان ایمن است، زیرا Google Chrome قبل از هرگونه تبادل داده، اتصال را متوقف کرد.</translation> <translation id="168841957122794586">گواهینامه سرور دارای یک کلید رمزنگاری ضعیف است.</translation> <translation id="1697532407822776718">آمادهاید!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">پروکسی بر روی پیکربندی خودکار تنظیم شده است.</translation> <translation id="2030481566774242610">منظورتان <ph name="LINK" /> بود؟</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />بررسی پروکسی و دیوار آتش<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">صفحههای <ph name="LANGUAGE" /> ترجمه نخواهند شد.</translation> <translation id="2053553514270667976">کد پستی</translation> <translation id="2064691555167957331">{COUNT,plural, =1{۱ پیشنهاد}one{# پیشنهاد}other{# پیشنهاد}}</translation> <translation id="2068663545051464999">شناسه گزارش خرابی بارگذاریشده <ph name="CRASH_ID" /> (زمینه محلی: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">پنجرههای بازشو و هدایتها</translation> <translation id="443673843213245140">استفاده از پروکسی غیرفعال است اما یک پیکربندی خاص برای پروکسی تعیین شده است.</translation> <translation id="445100540951337728">کارتهای نقدی قابلقبول</translation> +<translation id="4482953324121162758">این سایت ترجمه نخواهد شد.</translation> <translation id="4506176782989081258">خطای ارزیابی: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">تماس با سرپرست سیستم</translation> <translation id="450710068430902550">اشتراکگذاری با سرپرست سیستم</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">میخواهید اطلاعات کارتتان را وارد کنید؟</translation> <translation id="5798683403665926540">صفحه اصلی را در تنظیمات Chrome تغییر دهید</translation> <translation id="5803412860119678065">میخواهید <ph name="CARD_DETAIL" /> خود را وارد کنید؟</translation> +<translation id="5804241973901381774">مجوزها</translation> <translation id="5810442152076338065">اتصال شما به <ph name="DOMAIN" /> با استفاده از یک مجموعه رمز منسوخ، رمزگذاری شده است.</translation> <translation id="5813119285467412249">&انجام مجدد افزودن</translation> <translation id="5838278095973806738">نباید هیچ اطلاعات حساسی (مثل گذرواژه یا کارت اعتباری) را در این سایت وارد کنید، زیرا ممکن است مهاجمین آنها را سرقت کنند.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">ویرایش اطلاعات تماس</translation> <translation id="5967867314010545767">حذف از سابقه</translation> <translation id="5975083100439434680">دورنمایی کردن</translation> +<translation id="5977976211062815271">در این دستگاه</translation> <translation id="598637245381783098">برنامه پرداخت باز نشد</translation> <translation id="5989320800837274978">سرور پروکسی ثابت و URL اسکریپت pac. تعیین نشدهاند.</translation> <translation id="5990559369517809815">درخواستهای ارسالی به سرور توسط یک برنامهٔ افزودنی مسدود شد.</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><عبارت جستجو را تایپ کنید></translation> <translation id="671076103358959139">کد ثبتنام:</translation> <translation id="6711464428925977395">مشکلی در سرور پروکسی وجود دارد یا این آدرس درست نیست.</translation> +<translation id="6723740634201835758">در حساب Google</translation> <translation id="674375294223700098">خطای ناشناس گواهی سرور.</translation> <translation id="6744009308914054259">وقتی درانتظار اتصال هستید، میتوانید برای خواندن مقالههای آفلاین، «بارگیریها» را مشاهده کنید.</translation> <translation id="6753269504797312559">مقدار خطمشی</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">بیصدا (پیشفرض)</translation> <translation id="6984479912851154518">درحال خروج از حالت ناشناس، برای پرداخت ازطریق برنامهای خارجی. ادامه میدهید؟</translation> <translation id="6989763994942163495">نمایش تنظیمات پیشرفته ...</translation> +<translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> همیشه ترجمه شود</translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">ممکن است این هزینهها یکباره یا تکرارشونده باشند یا واضح نباشند.</translation> <translation id="7029809446516969842">گذرواژهها</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb index 9e3f0292..5527c6a 100644 --- a/components/strings/components_strings_fi.xtb +++ b/components/strings/components_strings_fi.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Noutoaika</translation> <translation id="1662550410081243962">Tallenna ja täytä maksutavat</translation> <translation id="1663943134801823270">Kortit ja osoitteet ovat peräisin Chromesta. Voit hallinnoida niitä <ph name="BEGIN_LINK" />asetuksissa<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Kielellä <ph name="SOURCE_LANGUAGE" /> kirjoitetut sivut käännetään tästä lähtien kielelle <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898"><ph name="SITE" /> suojaa tietosi normaalisti salauksen avulla. Kun Chrome yritti tällä kertaa yhdistää sivustoon <ph name="SITE" />, sivusto palautti epätavalliset ja virheelliset kirjautumistiedot. Hyökkääjä saattaa yrittää esiintyä sivustona <ph name="SITE" />, tai Wi-Fi-kirjautumisruutu on keskeyttänyt yhteyden. Tietosi ovat edelleen turvassa, sillä Google Chrome katkaisi yhteyden, ennen kuin mitään tietoja vaihdettiin.</translation> <translation id="168841957122794586">Palvelinvarmenne sisältää heikon salausavaimen.</translation> <translation id="1697532407822776718">Kaikki on valmista.</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Välityspalvelimen asetus: automaattisesti määritetty.</translation> <translation id="2030481566774242610">Tarkoititko: <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Tarkista välityspalvelimen ja palomuurin määritykset.<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Kielellä <ph name="LANGUAGE" /> kirjoitettuja sivuja ei käännetä.</translation> <translation id="2053553514270667976">Postinumero</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 ehdotus}other{# ehdotusta}}</translation> <translation id="2068663545051464999">Kaatumisraportti lähetetty, raporttitunnus: <ph name="CRASH_ID" /> (paikallinen konteksti: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -567,6 +569,7 @@ <translation id="4434045419905280838">Ponnahdusikk. ja uudelleenohj.</translation> <translation id="443673843213245140">Välityspalvelinta ei saa käyttää, mutta erilliset välityspalvelimen asetukset on määritetty.</translation> <translation id="445100540951337728">Hyväksytyt maksukortit</translation> +<translation id="4482953324121162758">Tätä sivustoa ei käännetä.</translation> <translation id="4506176782989081258">Todennusvirhe: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Ota yhteyttä järjestelmänvalvojaan.</translation> <translation id="450710068430902550">Jakaminen järjestelmänvalvojan kanssa</translation> @@ -758,6 +761,7 @@ <translation id="5786044859038896871">Täytetäänkö kortin tiedot?</translation> <translation id="5798683403665926540">Vaihda kotisivua Chromen asetuksissa</translation> <translation id="5803412860119678065">Täytetäänkö kortin <ph name="CARD_DETAIL" /> tiedot?</translation> +<translation id="5804241973901381774">Käyttöoikeudet</translation> <translation id="5810442152076338065">Yhteytesi kohteeseen <ph name="DOMAIN" /> on salattu vanhentuneella salaustekniikalla.</translation> <translation id="5813119285467412249">&Toista lisäys</translation> <translation id="5838278095973806738">Älä anna tälle sivustolle salasanoja, luottokorttinumeroita tai muita arkaluonteisia tietoja, sillä hyökkääjät saattavat varastaa ne.</translation> @@ -779,6 +783,7 @@ <translation id="5967592137238574583">Muokkaa yhteystietoja</translation> <translation id="5967867314010545767">Poista historiasta</translation> <translation id="5975083100439434680">Loitonna</translation> +<translation id="5977976211062815271">Tällä laitteella</translation> <translation id="598637245381783098">Maksusovelluksen avaaminen ei onnistu.</translation> <translation id="5989320800837274978">Kiinteitä välityspalvelimia tai .pac-URL-osoitetta ei ole määritetty.</translation> <translation id="5990559369517809815">Laajennus esti palvelinpyynnöt.</translation> @@ -876,6 +881,7 @@ <translation id="6710594484020273272"><Anna hakukysely></translation> <translation id="671076103358959139">Käyttöönottotunnus:</translation> <translation id="6711464428925977395">Välityspalvelimessa on jotain vikaa tai osoite on virheellinen.</translation> +<translation id="6723740634201835758">Google-tililläsi</translation> <translation id="674375294223700098">Tuntematon palvelimen varmennevirhe.</translation> <translation id="6744009308914054259">Voit lukea artikkeleita offline-tilassa Lataukset-kohdassa, kun odotat yhteyden muodostamista.</translation> <translation id="6753269504797312559">Käytännön arvo</translation> @@ -916,6 +922,7 @@ <translation id="6979440798594660689">Mykistä (oletus)</translation> <translation id="6984479912851154518">Yksityinen tila suljetaan, jotta voit tehdä maksun ulkoisella sovelluksella. Haluatko jatkaa?</translation> <translation id="6989763994942163495">Näytä lisäasetukset...</translation> +<translation id="6996312675313362352">Käännä aina <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Veloitukset voivat olla kertaluontoisia tai toistuvia, eikä niitä välttämättä esitetä selkeästi.</translation> <translation id="7029809446516969842">Salasanat</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb index 5ca86ce..7903ccf 100644 --- a/components/strings/components_strings_fil.xtb +++ b/components/strings/components_strings_fil.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">I-pick up</translation> <translation id="1662550410081243962">I-save at punan ang mga paraan ng pagbabayad</translation> <translation id="1663943134801823270">Ang mga card at address ay mula sa Chrome. Maaari mong pamahalaan ang mga ito sa <ph name="BEGIN_LINK" />Mga Setting<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Simula ngayon ay ita-translate na sa <ph name="TARGET_LANGUAGE" /> ang mga page na nasa <ph name="SOURCE_LANGUAGE" />.</translation> <translation id="1676269943528358898">Karaniwang gumagamit ang <ph name="SITE" /> ng pag-encrypt upang protektahan ang iyong impormasyon. Noong sinubukang kumonekta ng Chrome sa <ph name="SITE" /> sa pagkakataong ito, nagbalik ang website ng mga hindi pangkaraniwan at maling kredensyal. Maaari itong mangyari kapag sinusubukan ng isang attacker na magpanggap bilang <ph name="SITE" />, o naputol ang koneksyon dahil sa isang screen ng pag-sign in sa Wi-Fi. Secure pa rin ang iyong impormasyon dahil inihinto ng Google Chrome ang koneksyon bago magkaroon ng palitan ng anumang data.</translation> <translation id="168841957122794586">Naglalaman ang server certificate ng isang mahinang cryptographic key.</translation> <translation id="1697532407822776718">Handa ka na!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Nakatakda sa awtomatikong naka-configure ang proxy.</translation> <translation id="2030481566774242610">Ang ibig mo bang sabihin ay <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Suriin ang proxy at ang firewall<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Hindi ita-translate ang mga page na nasa <ph name="LANGUAGE" />.</translation> <translation id="2053553514270667976">ZIP code</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 suhestyon}one{# suhestyon}other{# na suhestyon}}</translation> <translation id="2068663545051464999">ID ng Na-upload na Ulat ng Pag-crash <ph name="CRASH_ID" /> (Lokal na Konteksto: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Mga pop-up at pag-redirect</translation> <translation id="443673843213245140">Hindi pinagana ang paggamit ng isang proxy ngunit tinutukoy ang isang tahasang configuration ng proxy.</translation> <translation id="445100540951337728">Mga tinatanggap na debit card</translation> +<translation id="4482953324121162758">Hindi ita-translate ang site na ito.</translation> <translation id="4506176782989081258">Error sa pagpapatunay: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Makipag-ugnayan sa admin ng system</translation> <translation id="450710068430902550">Pagbabahagi sa Administrator</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">Gusto mo bang ilagay ang impormasyon ng iyong card?</translation> <translation id="5798683403665926540">Baguhin ang home page sa mga setting ng Chrome</translation> <translation id="5803412860119678065">Gusto mo bang ilagay ang iyong <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Mga Pahintulot</translation> <translation id="5810442152076338065">Naka-encrypt ang iyong koneksyon sa <ph name="DOMAIN" /> gamit ang isang hindi na ginagamit na cipher suite.</translation> <translation id="5813119285467412249">&Gawing Muli ang Pagdagdag</translation> <translation id="5838278095973806738">Hindi ka dapat maglagay ng anumang sensitibong impormasyon sa site na ito (halimbawa, mga password o credit card), dahil maaari itong nakawin ng mga umaatake.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">I-edit ang Impormasyon ng Contact</translation> <translation id="5967867314010545767">Alisin sa history</translation> <translation id="5975083100439434680">Mag-zoom out</translation> +<translation id="5977976211062815271">Sa device na ito</translation> <translation id="598637245381783098">Hindi mabuksan ang app sa pagbabayad</translation> <translation id="5989320800837274978">Hindi tunukoy ang alinman sa mga hindi nababagong proxy server o isang .pac script URL.</translation> <translation id="5990559369517809815">Na-block ng isang extension ang mga kahilingan sa server.</translation> @@ -807,7 +812,7 @@ <translation id="614940544461990577">Subukang:</translation> <translation id="6151417162996330722">Masyadong mahaba ang panahon ng pagkakaroon ng bisa ng certificate ng server.</translation> <translation id="6157877588268064908">Upang makita ang mga pamamaraan at kinakailangan sa pagpapadala, pumili ng address</translation> -<translation id="6165508094623778733">Matuto nang higit pa</translation> +<translation id="6165508094623778733">Matuto pa</translation> <translation id="6169916984152623906">Makakapag-browse ka na ngayon nang pribado, at hindi makikita ng ibang taong gumagamit sa device na ito ang iyong aktibidad. Gayunpaman, mase-save ang mga download at bookmark.</translation> <translation id="6177128806592000436">Hindi ligtas ang iyong koneksyon sa site na ito</translation> <translation id="6203231073485539293">Suriin ang iyong koneksyon sa Internet</translation> @@ -825,7 +830,7 @@ <translation id="627746635834430766">Para mas mabilis na makapagbayad sa susunod, i-save ang iyong card at billing address sa Google Account mo.</translation> <translation id="6280223929691119688">Hindi maaaring maghatid sa address na ito. Pumili ng ibang address.</translation> <translation id="6282194474023008486">Postal code</translation> -<translation id="6290238015253830360">Lalabas dito ang iminungkahi mong artikulo</translation> +<translation id="6290238015253830360">Lalabas dito ang mga iminungkahi mong artikulo</translation> <translation id="6302269476990306341">Ihinihinto ang Google Assistant sa Chrome</translation> <translation id="6305205051461490394">Hindi makakonekta sa <ph name="URL" />.</translation> <translation id="6321917430147971392">Suriin ang iyong mga setting ng DNS</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><I-type ang termino para sa paghahanap></translation> <translation id="671076103358959139">Token sa Pag-enroll</translation> <translation id="6711464428925977395">May problema sa proxy server, o mali ang address.</translation> +<translation id="6723740634201835758">Sa iyong Google Account</translation> <translation id="674375294223700098">Hindi alam na error sa certificate ng server</translation> <translation id="6744009308914054259">Habang naghihintay ng koneksyon, maaari mong bisitahin ang Mga Download para magbasa ng mga offline na artikulo.</translation> <translation id="6753269504797312559">Halaga ng patakaran</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">I-mute (default)</translation> <translation id="6984479912851154518">Aalis sa pribadong mode para magbayad sa pamamagitan ng external na application. Magpatuloy?</translation> <translation id="6989763994942163495">Ipakita ang mga advanced na setting...</translation> +<translation id="6996312675313362352">Palaging i-translate ang <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Ang mga singil na ito ay maaaring isang beses lang o umuulit at maaaring hindi mo mapansin.</translation> <translation id="7029809446516969842">Mga Password</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb index c6c20f17..a33f1b85 100644 --- a/components/strings/components_strings_fr.xtb +++ b/components/strings/components_strings_fr.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Enlèvement</translation> <translation id="1662550410081243962">Enregistrer et renseigner les modes de paiement</translation> <translation id="1663943134801823270">Les cartes et les adresses proviennent de Chrome. Vous pouvez les gérer dans les <ph name="BEGIN_LINK" />Paramètres<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Les pages en <ph name="SOURCE_LANGUAGE" /> seront désormais traduites en <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898">Un chiffrement est normalement utilisé sur le site <ph name="SITE" /> pour protéger vos informations. Lors de la dernière tentative de connexion de Google Chrome au site <ph name="SITE" />, des identifiants inhabituels et incorrects ont été retournés. Il est possible qu'un individu malveillant tente de se faire passer pour <ph name="SITE" /> ou qu'un écran de connexion Wi-Fi ait interrompu la connexion. Vos informations restent sécurisées, car nous avons arrêté la connexion avant l'échange des données.</translation> <translation id="168841957122794586">Le certificat du serveur contient une clé de chiffrement faible.</translation> <translation id="1697532407822776718">Vous êtes prêt !</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Le proxy est défini sur la configuration automatique.</translation> <translation id="2030481566774242610">Essayez avec <ph name="LINK" /></translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Vérifier le proxy et le pare-feu<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Les pages en <ph name="LANGUAGE" /> ne seront pas traduites.</translation> <translation id="2053553514270667976">Code postal</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 suggestion}one{# suggestion}other{# suggestions}}</translation> <translation id="2068663545051464999">ID du rapport d'erreur importé : <ph name="CRASH_ID" /> (Contexte local : <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Pop-up et redirections</translation> <translation id="443673843213245140">L'utilisation d'un proxy est désactivée, mais une configuration de proxy explicite est spécifiée.</translation> <translation id="445100540951337728">Cartes de débit acceptées</translation> +<translation id="4482953324121162758">Ce site ne sera pas traduit.</translation> <translation id="4506176782989081258">Erreur de validation : <ph name="VALIDATION_ERROR" />.</translation> <translation id="4506599922270137252">Contacter l'administrateur système</translation> <translation id="450710068430902550">Partage avec l'administrateur</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">Souhaitez-vous indiquer vos informations de carte de paiement ?</translation> <translation id="5798683403665926540">Modifier la page d'accueil dans les paramètres de Chrome</translation> <translation id="5803412860119678065">Souhaitez-vous indiquer les informations "<ph name="CARD_DETAIL" />" ?</translation> +<translation id="5804241973901381774">Autorisations</translation> <translation id="5810442152076338065">Votre connexion à <ph name="DOMAIN" /> est chiffrée à l'aide d'une méthode de chiffrement obsolète.</translation> <translation id="5813119285467412249">&Rétablir l'ajout</translation> <translation id="5838278095973806738">Vous ne devriez pas saisir d'informations sensibles sur ce site (par exemple, vos mots de passe ou les informations de votre carte de paiement), car elles risquent d'être dérobées par des pirates informatiques.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">Modifier les coordonnées</translation> <translation id="5967867314010545767">Supprimer de l'historique</translation> <translation id="5975083100439434680">Zoom arrière</translation> +<translation id="5977976211062815271">Sur cet appareil</translation> <translation id="598637245381783098">Impossible d'ouvrir l'application de paiement</translation> <translation id="5989320800837274978">Aucun serveur proxy déterminé ou URL de script .pac n'a été indiqué.</translation> <translation id="5990559369517809815">Les requêtes vers le serveur ont été bloquées par une extension.</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><Saisissez le terme de recherche></translation> <translation id="671076103358959139">Jeton d'inscription :</translation> <translation id="6711464428925977395">Le serveur proxy présente une erreur, ou l'adresse est incorrecte.</translation> +<translation id="6723740634201835758">Dans votre compte Google</translation> <translation id="674375294223700098">Erreur inconnue liée au certificat du serveur.</translation> <translation id="6744009308914054259">En attendant d'avoir une connexion, vous pouvez consulter les téléchargements pour lire des articles hors connexion.</translation> <translation id="6753269504797312559">Valeur de la règle</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">Coupé (par défaut)</translation> <translation id="6984479912851154518">En payant via une application externe, vous allez quitter le mode privé. Voulez-vous continuer ?</translation> <translation id="6989763994942163495">Afficher les paramètres avancés…</translation> +<translation id="6996312675313362352">Toujours traduire les pages en <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Il peut s'agir de frais uniques ou récurrents qui ne sont pas toujours clairement signalés.</translation> <translation id="7029809446516969842">Mots de passe</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb index a1976a10..b8a1488f 100644 --- a/components/strings/components_strings_gu.xtb +++ b/components/strings/components_strings_gu.xtb
@@ -36,7 +36,7 @@ <translation id="1165039591588034296">ભૂલ</translation> <translation id="1173894706177603556">નામ બદલો</translation> <translation id="1175364870820465910">&છાપો...</translation> -<translation id="1181037720776840403">દૂર કરો</translation> +<translation id="1181037720776840403">કાઢી નાખો</translation> <translation id="1197088940767939838">નારંગી</translation> <translation id="1201402288615127009">આગલું</translation> <translation id="1201895884277373915">આ સાઇટથી વધુ</translation> @@ -129,6 +129,7 @@ <translation id="1656489000284462475">પિકઅપ</translation> <translation id="1662550410081243962">ચુકવણી પદ્ધતિઓ સાચવો અને ભરો</translation> <translation id="1663943134801823270">કાર્ડ અને સરનામા Chromeમાંથી છે. તમે તેને <ph name="BEGIN_LINK" />સેટિંગ્સ<ph name="END_LINK" />માં સંચાલિત કરી શકો છો.</translation> +<translation id="1671391448414634642">હવેથી <ph name="SOURCE_LANGUAGE" />માં છે તે પેજનો અનુવાદ <ph name="TARGET_LANGUAGE" />માં થશે.</translation> <translation id="1676269943528358898"><ph name="SITE" /> સામાન્ય રીતે તમારી માહિતીને સુરક્ષિત રાખવા માટે એન્ક્રિપ્શનનો ઉપયોગ કરે છે. જ્યારે આ સમયે Google Chrome દ્વારા <ph name="SITE" />થી કનેક્ટ કરવાનો પ્રયાસ થયો, ત્યારે વેબસાઇટે અસામાન્ય અને ખોટા લૉગ ઇન વિગતને પાછા મોકલ્યાં. આવું ત્યારે થઈ શકે જ્યારે કોઈ હુમલાખોર <ph name="SITE" /> હોવાનો ડોળ કરવાનો પ્રયાસ કરી રહ્યો હોય અથવા કોઈ Wi-Fi સાઇન-ઇન સ્ક્રીને કનેક્શનમાં વિક્ષેપ પાડ્યો હોય. તમારી માહિતી હજી પણ સુરક્ષિત છે કારણ કે Google Chrome એ કોઈ પણ ડેટા વિનિમય થાય એ પહેલાં જ કનેક્શન રોકી દીધું.</translation> <translation id="168841957122794586">સર્વર પ્રમાણપત્ર એક નબળી ક્રિપ્ટોગ્રાફિક કી ધરાવે છે.</translation> <translation id="1697532407822776718">તમારું બધું સેટ છે!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">પ્રૉક્સીને ઑટો ગોઠવણી મોડ પર સેટ કરાઈ છે.</translation> <translation id="2030481566774242610">શું તમારો અર્થ <ph name="LINK" /> છે?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />પ્રૉક્સી અને ફાયરવૉલ ચેક કરવાનો પ્રયાસ કરો<ph name="END_LINK" /></translation> +<translation id="2053111141626950936"><ph name="LANGUAGE" />માં લખાયેલાં પેજનો અનુવાદ થશે નહીં.</translation> <translation id="2053553514270667976">પિન કોડ</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 સૂચન}one{# સૂચન}other{# સૂચન}}</translation> <translation id="2068663545051464999">ક્રૅશ રિપોર્ટ ID <ph name="CRASH_ID" /> અપલોડ કર્યું (સ્થાનિક સંદર્ભ: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -565,6 +567,7 @@ <translation id="4434045419905280838">પૉપ-અપ અને રીડાયરેક્ટ</translation> <translation id="443673843213245140">પ્રૉક્સીનો ઉપયોગ બંધ કરેલો છે પણ એક સ્પષ્ટ પ્રૉક્સી ગોઠવણીનો ઉલ્લેખ કરેલો છે.</translation> <translation id="445100540951337728">સ્વીકૃત ડેબિટ કાર્ડ</translation> +<translation id="4482953324121162758">આ સાઇટનો અનુવાદ થશે નહીં.</translation> <translation id="4506176782989081258">માન્યતા ભૂલ: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">સિસ્ટમ વ્યવસ્થાપકનો સંપર્ક કરીને</translation> <translation id="450710068430902550">વ્યવસ્થાપક સાથે શેર કરવું</translation> @@ -756,6 +759,7 @@ <translation id="5786044859038896871">શું તમે તમારી કાર્ડ માહિતી ભરવા માગો છો?</translation> <translation id="5798683403665926540">Chrome સેટિંગમાં હોમ પેજ બદલો</translation> <translation id="5803412860119678065">શું તમે તમારી <ph name="CARD_DETAIL" /> માહિતી ભરવા માગો છો?</translation> +<translation id="5804241973901381774">પરવાનગીઓ</translation> <translation id="5810442152076338065"><ph name="DOMAIN" /> સાથેના તમારા કનેક્શનને ઑબ્સોલિટ સાઇફર સ્યૂટનો ઉપયોગ કરીને એન્ક્રિપ્ટ કરાયું છે.</translation> <translation id="5813119285467412249">&ઉમેરવું ફરી કરો</translation> <translation id="5838278095973806738">તમારે આ સાઇટ પર કોઈપણ સંવેદનશીલ માહિતી (ઉદાહરણ તરીકે, પાસવર્ડ્સ અથવા ક્રેડિટ કાર્ડ્સ) દાખલ કરવી જોઈએ નહીં, કારણ કે તે હુમલાખોર દ્વારા ચોરવામાં આવી શકે છે.</translation> @@ -777,6 +781,7 @@ <translation id="5967592137238574583">સંપર્ક માહિતીમાં ફેરફાર કરો</translation> <translation id="5967867314010545767">ઇતિહાસમાંથી દૂર કરો</translation> <translation id="5975083100439434680">ઝૂમ ઘટાડો</translation> +<translation id="5977976211062815271">આ ડિવાઇસ પર</translation> <translation id="598637245381783098">ચુકવણી ઍપ્લિકેશન ખોલી શકાતી નથી</translation> <translation id="5989320800837274978">ફિક્સ્ડ પ્રૉક્સી સર્વર કે .pac સ્ક્રિપ્ટ URL, બેમાંથી કોઈનો પણ ઉલ્લેખ કરેલો નથી.</translation> <translation id="5990559369517809815">સર્વર પરની વિનંતિઓને એક્સ્ટેંશન દ્વારા અવરોધિત કરવામાં આવી છે.</translation> @@ -874,6 +879,7 @@ <translation id="6710594484020273272"><શોધ શબ્દ લખો></translation> <translation id="671076103358959139">નોંધણી ટોકન:</translation> <translation id="6711464428925977395">પ્રૉક્સી સર્વરમાં કંઈક ખોટું થયું છે અથવા તો ઍડ્રેસ ખોટું છે.</translation> +<translation id="6723740634201835758">તમારા Google એકાઉન્ટમાં</translation> <translation id="674375294223700098">અજ્ઞાત સર્વર પ્રમાણપત્ર ભૂલ.</translation> <translation id="6744009308914054259">કનેક્શન માટે રાહ જોતી વખતે, ઑફલાઇન લેખ વાંચવા માટે તમે ડાઉનલોડની મુલાકાત લઈ શકો.</translation> <translation id="6753269504797312559">નીતિ મૂલ્ય</translation> @@ -914,6 +920,7 @@ <translation id="6979440798594660689">મ્યૂટ કરો (ડિફૉલ્ટ)</translation> <translation id="6984479912851154518">બાહ્ય ઍપ્લિકેશન મારફતે ચુકવણી કરવા માટે ખાનગી મોડ છોડી રહ્યાં છીએ. ચાલુ રાખવું છે?</translation> <translation id="6989763994942163495">વિગતવાર સેટિંગ્સ બતાવો...</translation> +<translation id="6996312675313362352">હંમેશાં <ph name="ORIGINAL_LANGUAGE" />નો અનુવાદ કરો</translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">આ શુલ્ક એક-સમયનું અથવા પુનરાવર્તિત હોઈ શકે છે અને કદાચ દેખીતા શુલ્ક ન પણ હોય.</translation> <translation id="7029809446516969842">પાસવર્ડ્સ</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb index 4d97647..ed97e39 100644 --- a/components/strings/components_strings_hi.xtb +++ b/components/strings/components_strings_hi.xtb
@@ -36,7 +36,7 @@ <translation id="1165039591588034296">गड़बड़ी</translation> <translation id="1173894706177603556">नाम बदलें</translation> <translation id="1175364870820465910">&प्रिंट करें...</translation> -<translation id="1181037720776840403">निकालें</translation> +<translation id="1181037720776840403">हटाएं</translation> <translation id="1197088940767939838">नारंगी</translation> <translation id="1201402288615127009">आगे बढ़ें</translation> <translation id="1201895884277373915">इस साइट की ओर से अधिक</translation> @@ -103,7 +103,7 @@ <translation id="1521655867290435174">Google पत्रक</translation> <translation id="1527263332363067270">कनेक्शन के इंतज़ार में…</translation> <translation id="1532118530259321453">इस पेज का कहना है कि</translation> -<translation id="153384715582417236">अभी के लिए हो गया</translation> +<translation id="153384715582417236">फिलहाल बस इतना ही</translation> <translation id="154408704832528245">डिलीवरी पता चुनें</translation> <translation id="1549470594296187301">इस सुविधा का उपयोग करने के लिए JavaScript को सक्षम किया जाना चाहिए.</translation> <translation id="1555130319947370107">नीला</translation> @@ -129,6 +129,7 @@ <translation id="1656489000284462475">पिकअप</translation> <translation id="1662550410081243962">भुगतान के तरीके सेव करें और जानकारी भरें</translation> <translation id="1663943134801823270">कार्ड और पते Chrome से मिलते हैं. आप उन्हें <ph name="BEGIN_LINK" />सेटिंग<ph name="END_LINK" /> में प्रबंधित कर सकते हैं.</translation> +<translation id="1671391448414634642">अब से <ph name="SOURCE_LANGUAGE" /> भाषा के पेज का अनुवाद <ph name="TARGET_LANGUAGE" /> भाषा में किया जाएगा.</translation> <translation id="1676269943528358898">आपकी जानकारी की सुरक्षा करने के लिए <ph name="SITE" /> आमतौर पर एन्क्रिप्शन का उपयोग करती है. जब Google Chrome ने इस बार <ph name="SITE" /> से कनेक्ट करने का प्रयास किया, तो वेबसाइट ने असामान्य और गलत क्रेडेंशियल वापस भेजे. ऐसा तब हो सकता है जब कोई हमलावर <ph name="SITE" /> होने का दावा करने का प्रयास कर रहा हो या किसी वाई-फ़ाई प्रवेश स्क्रीन ने कनेक्शन को बाधित कर दिया हो. आपकी जानकारी अभी भी सुरक्षित है क्योंकि किसी भी डेटा के आदान-प्रदान से पहले ही Google Chrome ने कनेक्शन को रोक दिया था.</translation> <translation id="168841957122794586">सर्वर प्रमाणपत्र में कमज़ोर क्रिप्टोग्राफ़िक कुंजी है.</translation> <translation id="1697532407822776718">आप बिल्कुल तैयार हैं!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">प्रॉक्सी स्वत: कॉन्फ़िगर पर सेट है.</translation> <translation id="2030481566774242610">क्या आप मतलब <ph name="LINK" /> से है?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />प्रॉक्सी और फायरवॉल की जाँच करें<ph name="END_LINK" /></translation> +<translation id="2053111141626950936"><ph name="LANGUAGE" /> भाषा के पेजों का अनुवाद नहीं किया जाएगा.</translation> <translation id="2053553514270667976">ज़िप कोड</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 सुझाव}one{# सुझाव}other{# सुझाव}}</translation> <translation id="2068663545051464999">अपलोड की गई खराबी रिपोर्ट आईडी <ph name="CRASH_ID" /> (स्थानीय संदर्भ : <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">पॉप-अप और रीडायरेक्ट</translation> <translation id="443673843213245140">प्रॉक्सी का उपयोग अक्षम है लेकिन कोई स्पष्ट प्रॉक्सी कॉन्फ़िगरेशन निर्दिष्ट किया गया है.</translation> <translation id="445100540951337728">स्वीकृत डेबिट कार्ड</translation> +<translation id="4482953324121162758">इस साइट का अनुवाद नहीं किया जाएगा.</translation> <translation id="4506176782989081258">सत्यापन गड़बड़ी: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">सिस्टम व्यवस्थापक से संपर्क करें</translation> <translation id="450710068430902550">व्यवस्थापक के साथ शेयर करना</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">क्या अपनी कार्ड जानकारी भरना चाहते हैं?</translation> <translation id="5798683403665926540">Chrome सेटिंग में जाकर होम पेज बदलें</translation> <translation id="5803412860119678065">क्या आप अपनी <ph name="CARD_DETAIL" /> भरना चाहते हैं?</translation> +<translation id="5804241973901381774">अनुमतियां</translation> <translation id="5810442152076338065"><ph name="DOMAIN" /> से आपके कनेक्शन को किसी अप्रचलित सिफ़र सुइट का उपयोग करके एन्क्रिप्ट किया गया है.</translation> <translation id="5813119285467412249">&जोड़ना फिर से करें</translation> <translation id="5838278095973806738">आपको इस साइट पर कोई भी संवेदनशील जानकारी (उदाहरण के लिए, पासवर्ड या क्रेडिट कार्ड) नहीं डालनी चाहिए, क्योंकि उसे हमलावर चुरा सकते हैं.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">संपर्क जानकारी में बदलाव करें</translation> <translation id="5967867314010545767">इतिहास से निकालें</translation> <translation id="5975083100439434680">ज़ूम आउट</translation> +<translation id="5977976211062815271">इस डिवाइस पर</translation> <translation id="598637245381783098">भुगतान ऐप्लिकेशन नहीं खोला जा सकता</translation> <translation id="5989320800837274978">न तो कोई फ़िक्स्ड प्रॉक्सी सर्वर और न ही कोई .pac स्क्रिप्ट URL साफ़ तौर पर बताया गया है.</translation> <translation id="5990559369517809815">सर्वर से किए गए अनुरोधों को एक्सटेंशन द्वारा अवरुद्ध कर दिया गया है.</translation> @@ -807,7 +812,7 @@ <translation id="614940544461990577">यह आज़माकर देखें:</translation> <translation id="6151417162996330722">सर्वर प्रमाणपत्र की मान्यता अवधि बहुत लंबी है.</translation> <translation id="6157877588268064908">शिपिंग के तरीके और ज़रूरतें देखने केे लिए, कोई पता चुनें</translation> -<translation id="6165508094623778733">अधिक जानें</translation> +<translation id="6165508094623778733">ज़्यादा जानें</translation> <translation id="6169916984152623906">अब आप निजी रूप से ब्राउज़ कर सकते हैं और इस डिवाइस का उपयोग करने वाले दूसरे लोगों को आपकी गतिविधि दिखाई नहीं देगी. लेकिन डाउनलोड और बुकमार्क सेव होंगे.</translation> <translation id="6177128806592000436">इस साइट से आपका कनेक्शन सुरक्षित नहीं है</translation> <translation id="6203231073485539293">अपना इंटरनेट कनेक्शन जाँचें</translation> @@ -825,7 +830,7 @@ <translation id="627746635834430766">अगली बार तेज़ी से भुगतान करने के लिए, अपने कार्ड और बिलिंग पते को अपने Google खाते में सेव करें.</translation> <translation id="6280223929691119688">इस पते पर वितरित नहीं किया जा सकता. कोई दूसरा पता चुनें.</translation> <translation id="6282194474023008486">डाक कोड</translation> -<translation id="6290238015253830360">आपके सुझाए गए लेख यहां दिखाई देते हैं</translation> +<translation id="6290238015253830360">आपके सुझाए हुए लेख यहां दिखाई देते हैं</translation> <translation id="6302269476990306341">'Chrome में Google Assistant' को रोका जा रहा है</translation> <translation id="6305205051461490394"><ph name="URL" /> तक नहीं पहुंचा जा सकता.</translation> <translation id="6321917430147971392">अपनी DNS सेटिंग जाँचें</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><खोज शब्द लिखें></translation> <translation id="671076103358959139">नाम दर्ज करने का टोकन:</translation> <translation id="6711464428925977395">प्रॉक्सी सर्वर के साथ कुछ गलत है या पता गलत है.</translation> +<translation id="6723740634201835758">अपने Google खाते में</translation> <translation id="674375294223700098">अज्ञात सर्वर प्रमाणपत्र गड़बड़ी.</translation> <translation id="6744009308914054259">कनेक्शन का इंतज़ार करते समय, ऑफ़लाइन लेख पढ़ने के लिए आप 'डाउनलोड' पर जा सकते हैं.</translation> <translation id="6753269504797312559">नीति मान</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">म्यूट करें (डिफ़ॉल्ट)</translation> <translation id="6984479912851154518">किसी बाहरी ऐप्लिकेशन के ज़रिए भुगतान करने के लिए 'निजी' मोड छोड़ रहे हैं. जारी रखना चाहते हैं?</translation> <translation id="6989763994942163495">अतिरिक्त सेटिंग दिखाएं...</translation> +<translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> का हमेशा अनुवाद करें</translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">ये शुल्क एक बार लगने वाले या बार-बार लगने वाले हो सकते हैं और हो सकता है कि इनके बारे में स्पष्ट जानकारी न दी जाए.</translation> <translation id="7029809446516969842">पासवर्ड</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb index 2d73552..a255fad 100644 --- a/components/strings/components_strings_hr.xtb +++ b/components/strings/components_strings_hr.xtb
@@ -759,6 +759,7 @@ <translation id="5786044859038896871">Želite li ispuniti podatke o kartici?</translation> <translation id="5798683403665926540">Promijenite početnu stranicu u postavkama Chromea</translation> <translation id="5803412860119678065">Želite li ispuniti podatke o kartici <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Dozvoljeno</translation> <translation id="5810442152076338065">Vaša veza s domenom <ph name="DOMAIN" /> kriptirana je zastarjelim kriptografskim paketom.</translation> <translation id="5813119285467412249">&Ponovi dodavanje</translation> <translation id="5838278095973806738">Na ovu web-lokaciju nemojte unositi osjetljive podatke (na primjer, zaporke ili kreditne kartice) jer su je možda ukrali napadači.</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb index 2f15919..19c43ba 100644 --- a/components/strings/components_strings_hu.xtb +++ b/components/strings/components_strings_hu.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Átvétel</translation> <translation id="1662550410081243962">Fizetési módok mentése és betöltése</translation> <translation id="1663943134801823270">A kártyák és a címek a Chrome-ból származnak. A <ph name="BEGIN_LINK" />Beállításokban<ph name="END_LINK" /> kezelheti őket.</translation> +<translation id="1671391448414634642">A(z) <ph name="SOURCE_LANGUAGE" /> nyelvű oldalak mostantól le lesznek fordítva <ph name="TARGET_LANGUAGE" /> nyelvre.</translation> <translation id="1676269943528358898">A(z) <ph name="SITE" /> webhely rendes esetben titkosítást alkalmaz az Ön adatainak védelme érdekében. Amikor a Google Chrome most csatlakozni próbált, a(z) <ph name="SITE" /> webhely szokatlan és helytelen hitelesítési adatokat küldött vissza. Ez olyankor fordulhat elő, amikor egy támadó megpróbálja magát kiadni a(z) <ph name="SITE" /> webhelynek, vagy valamilyen Wi-Fi-bejelentkezési képernyő megszakította a kapcsolatot. Adatai továbbra is biztonságban vannak, mivel a Google Chrome még azt megelőzően megszakította a kapcsolatot, hogy bármiféle adatcserére sor kerülhetett volna.</translation> <translation id="168841957122794586">A szervertanúsítvány gyenge titkosítási kulcsot tartalmaz.</translation> <translation id="1697532407822776718">Máris elkészült!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Automatikusan konfigurálhatóra beállított proxy.</translation> <translation id="2030481566774242610">Erre gondolt: <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />A proxy és a tűzfal ellenőrzése<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">A(z) <ph name="LANGUAGE" /> nyelvű oldalak nem lesznek lefordítva.</translation> <translation id="2053553514270667976">Irányítószám</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 javaslat}other{# javaslat}}</translation> <translation id="2068663545051464999">Feltöltött hibajelentés azonosítója: <ph name="CRASH_ID" /> (helyi kontextus: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -564,6 +566,7 @@ <translation id="4434045419905280838">Előugró ablakok és átirányítások</translation> <translation id="443673843213245140">A proxy használata le van tiltva, de kifejezett proxykonfiguráció van megadva.</translation> <translation id="445100540951337728">Elfogadott bankkártyák</translation> +<translation id="4482953324121162758">Nem fordítjuk le ezt a webhelyet.</translation> <translation id="4506176782989081258">Érvényesítési hiba: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Kapcsolatfelvétel a rendszergazdával</translation> <translation id="450710068430902550">Megosztás a rendszergazdával</translation> @@ -755,6 +758,7 @@ <translation id="5786044859038896871">Ki szeretné tölteni a kártyaadatait?</translation> <translation id="5798683403665926540">Kezdőlap módosítása a Chrome beállításaiban</translation> <translation id="5803412860119678065">Ki szeretné tölteni <ph name="CARD_DETAIL" /> kártyájának adataival?</translation> +<translation id="5804241973901381774">Engedélyek</translation> <translation id="5810442152076338065">A(z) <ph name="DOMAIN" /> domainnel való kapcsolata elavult kriptográfiával van titkosítva.</translation> <translation id="5813119285467412249">&Hozzáadás újra</translation> <translation id="5838278095973806738">Ne írjon be semmilyen bizalmas adatot (például jelszót vagy hitelkártyaadatot) a webhelyen, mivel a támadók ellophatják.</translation> @@ -776,6 +780,7 @@ <translation id="5967592137238574583">Kapcsolattartási adatok szerkesztése</translation> <translation id="5967867314010545767">Eltávolítás az előzmények közül</translation> <translation id="5975083100439434680">Kicsinyítés</translation> +<translation id="5977976211062815271">Ezen az eszközön</translation> <translation id="598637245381783098">Nem sikerült megnyitni a fizetőalkalmazást</translation> <translation id="5989320800837274978">Sem fix proxyszerver, sem pedig .pac típusú szkript URL-címe nincs megadva.</translation> <translation id="5990559369517809815">A szerver felé irányuló kéréseket egy bővítmény blokkolja.</translation> @@ -873,6 +878,7 @@ <translation id="6710594484020273272"><Írja be a keresési kifejezést></translation> <translation id="671076103358959139">Regisztrációs token</translation> <translation id="6711464428925977395">Valami gond van a proxyszerverrel, vagy a cím nem megfelelő.</translation> +<translation id="6723740634201835758">Google-fiókban</translation> <translation id="674375294223700098">Ismeretlen szervertanúsítvány-hiba.</translation> <translation id="6744009308914054259">Miközben kapcsolatra vár, a Letöltések között elolvashatja az offline cikkeket.</translation> <translation id="6753269504797312559">Házirend értéke</translation> @@ -913,6 +919,7 @@ <translation id="6979440798594660689">Némítás (alapértelmezett)</translation> <translation id="6984479912851154518">Elhagyja a privát módot külső alkalmazással történő fizetéshez. Folytatja?</translation> <translation id="6989763994942163495">Speciális beállítások megjelenítése...</translation> +<translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> – mindig legyen lefordítva</translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Ezek egyszeri vagy ismétlődő díjak lehetnek, és nem feltétlenül nyilvánvalóak.</translation> <translation id="7029809446516969842">Jelszavak</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb index 767cd44d..b533ce8 100644 --- a/components/strings/components_strings_id.xtb +++ b/components/strings/components_strings_id.xtb
@@ -759,6 +759,7 @@ <translation id="5786044859038896871">Ingin mengisi informasi kartu?</translation> <translation id="5798683403665926540">Ubah halaman beranda di setelan Chrome</translation> <translation id="5803412860119678065">Ingin mengisi <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Izin</translation> <translation id="5810442152076338065">Sambungan Anda ke <ph name="DOMAIN" /> dienkripsi menggunakan cipher suite yang sudah usang.</translation> <translation id="5813119285467412249">&Ulangi Penambahan</translation> <translation id="5838278095973806738">Jangan masukkan informasi sensitif apa pun di situs ini (misalnya, sandi atau kartu kredit), karena penyerang dapat mencurinya.</translation> @@ -945,7 +946,7 @@ <translation id="717330890047184534">ID GAIA:</translation> <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> dan <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> lainnya}other{<ph name="SHIPPING_OPTION_PREVIEW" /> dan <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> lainnya}}</translation> <translation id="7179323680825933600">Simpan dan Isi Metode Pembayaran</translation> -<translation id="7180611975245234373">Segarkan</translation> +<translation id="7180611975245234373">Perbarui</translation> <translation id="7182878459783632708">Tidak ada kebijakan yang disetel</translation> <translation id="7186367841673660872">Halaman ini telah diterjemahkan dari<ph name="ORIGINAL_LANGUAGE" />ke<ph name="LANGUAGE_LANGUAGE" /></translation> <translation id="7192203810768312527">Sediakan ruang sebesar <ph name="SIZE" />. Sebagian situs mungkin dimuat lebih lambat pada kunjungan Anda berikutnya.</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb index 3665d616..ee18eb1 100644 --- a/components/strings/components_strings_it.xtb +++ b/components/strings/components_strings_it.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Ritiro</translation> <translation id="1662550410081243962">Salva e compila i metodi di pagamento</translation> <translation id="1663943134801823270">Carte di credito e indirizzi provengono da Chrome. Puoi gestirli in <ph name="BEGIN_LINK" />Impostazioni<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">D'ora in poi, le pagine in <ph name="SOURCE_LANGUAGE" /> verranno tradotte in <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898"><ph name="SITE" /> in genere utilizza la crittografia per proteggere le tue informazioni. Questa volta, quando Google Chrome ha provato a connettersi a <ph name="SITE" />, il sito web ha restituito credenziali insolite e sbagliate. È possibile che un malintenzionato stia cercando di spacciarsi per il sito <ph name="SITE" /> oppure che una schermata di accesso alla rete Wi-Fi abbia interrotto la connessione. Le tue informazioni sono ancora al sicuro perché Google Chrome ha interrotto la connessione prima che avvenissero scambi di dati.</translation> <translation id="168841957122794586">Il certificato del server contiene una chiave crittografica debole.</translation> <translation id="1697532407822776718">Ecco fatto!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">È stata impostata la configurazione automatica del proxy.</translation> <translation id="2030481566774242610">Forse cercavi <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Controllare il proxy e firewall<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Le pagine in <ph name="LANGUAGE" /> non verranno tradotte.</translation> <translation id="2053553514270667976">ZIP</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 suggerimento}other{# suggerimenti}}</translation> <translation id="2068663545051464999">ID rapporto sugli arresti anomali caricato <ph name="CRASH_ID" /> (Contesto locale: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -563,6 +565,7 @@ <translation id="4434045419905280838">Popup e reindirizzamenti</translation> <translation id="443673843213245140">L'utilizzo di un proxy è stato disattivato ma è stata specificata una configurazione proxy esplicita.</translation> <translation id="445100540951337728">Carte di debito accettate</translation> +<translation id="4482953324121162758">Questo sito non verrà tradotto.</translation> <translation id="4506176782989081258">Errore di convalida. <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Contattare l'amministratore di sistema</translation> <translation id="450710068430902550">Condivisione con l'amministratore</translation> @@ -754,6 +757,7 @@ <translation id="5786044859038896871">Vuoi inserire automaticamente i dati della carta?</translation> <translation id="5798683403665926540">Cambia la pagina iniziale nelle impostazioni di Chrome</translation> <translation id="5803412860119678065">Vuoi inserire automaticamente <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Autorizzazioni</translation> <translation id="5810442152076338065">La connessione a <ph name="DOMAIN" /> è criptata tramite un pacchetto di crittografia obsoleto.</translation> <translation id="5813119285467412249">&Ripeti aggiunta</translation> <translation id="5838278095973806738">Non dovresti inserire dati sensibili in questo sito (ad esempio password o carte di credito) perché potrebbero essere intercettati da utenti malintenzionati.</translation> @@ -775,6 +779,7 @@ <translation id="5967592137238574583">Modifica informazioni di contatto</translation> <translation id="5967867314010545767">Rimuovi da cronologia</translation> <translation id="5975083100439434680">Diminuisci lo zoom</translation> +<translation id="5977976211062815271">Su questo dispositivo</translation> <translation id="598637245381783098">Impossibile aprire l'app per i pagamenti</translation> <translation id="5989320800837274978">Non sono stati specificati né server proxy fissi né un URL script .pac.</translation> <translation id="5990559369517809815">Le richieste al server sono state bloccate da un'estensione.</translation> @@ -871,6 +876,7 @@ <translation id="6710594484020273272"><Digita un termine di ricerca></translation> <translation id="671076103358959139">Token di registrazione:</translation> <translation id="6711464428925977395">Si è verificato un problema con il server proxy oppure l'indirizzo non è corretto.</translation> +<translation id="6723740634201835758">Nell'account Google</translation> <translation id="674375294223700098">Errore sconosciuto del certificato del server.</translation> <translation id="6744009308914054259">In attesa di una connessione, puoi visitare la pagina Download per leggere gli articoli offline.</translation> <translation id="6753269504797312559">Valore norma</translation> @@ -911,6 +917,7 @@ <translation id="6979440798594660689">Disattivazione audio (impostazione predefinita)</translation> <translation id="6984479912851154518">Per procedere al pagamento tramite un'applicazione esterna, uscirai dalla modalità di navigazione privata. Vuoi continuare?</translation> <translation id="6989763994942163495">Mostra impostazioni avanzate...</translation> +<translation id="6996312675313362352">Traduci sempre questa lingua: <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">L'addebito potrebbe essere singolo oppure ricorrente e potrebbe non essere evidente.</translation> <translation id="7029809446516969842">Password</translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb index 0afbee1d..67fb3d38 100644 --- a/components/strings/components_strings_iw.xtb +++ b/components/strings/components_strings_iw.xtb
@@ -36,7 +36,7 @@ <translation id="1165039591588034296">שגיאה</translation> <translation id="1173894706177603556">שנה שם</translation> <translation id="1175364870820465910">הדפס...</translation> -<translation id="1181037720776840403">הסר</translation> +<translation id="1181037720776840403">הסרה</translation> <translation id="1197088940767939838">כתום</translation> <translation id="1201402288615127009">הבא</translation> <translation id="1201895884277373915">עוד מאתר זה</translation> @@ -129,6 +129,7 @@ <translation id="1656489000284462475">איסוף</translation> <translation id="1662550410081243962">שמירה ומילוי של אמצעי תשלום</translation> <translation id="1663943134801823270">הכרטיסים והכתובות נלקחים מ-Chrome. אפשר לנהל אותם ב<ph name="BEGIN_LINK" />הגדרות<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">דפים ב<ph name="SOURCE_LANGUAGE" /> יתורגמו מעכשיו ל<ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898">האתר <ph name="SITE" /> משתמש בדרך כלל בהצפנה כדי להגן על המידע שלך. כאשר Google Chrome ניסה הפעם להתחבר ל-<ph name="SITE" />, האתר שלח חזרה אישורים חריגים ושגויים. ייתכן שתוקף מנסה להתחזות לאתר <ph name="SITE" />, או שמסך כניסה ל-Wi-Fi הפריע לחיבור. המידע שלך עדיין מאובטח מכיוון ש-Google Chrome הפסיק את החיבור לפני חילופי הנתונים.</translation> <translation id="168841957122794586">אישור השרת מכיל מפתח הצפנה חלש.</translation> <translation id="1697532407822776718">הכל מוכן!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">שרת Proxy נקבע למוגדר אוטומטית.</translation> <translation id="2030481566774242610">האם התכוונת ל-<ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />לבדוק את שרת ה-Proxy ואת חומת האש<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">דפים ב<ph name="LANGUAGE" /> לא יתורגמו.</translation> <translation id="2053553514270667976">מספר / מיקוד</translation> <translation id="2064691555167957331">{COUNT,plural, =1{הצעה אחת}two{שתי הצעות}many{# הצעות}other{# הצעות}}</translation> <translation id="2068663545051464999">הועלה דוח קריסה עם המזהה <ph name="CRASH_ID" /> (הקשר מקומי: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">חלונות קופצים והפניות אוטומטיות</translation> <translation id="443673843213245140">השימוש בשרת Proxy הושבת, אך צויינה תצורת שרת Proxy מפורשת.</translation> <translation id="445100540951337728">כרטיסי חיוב שהסוחר מקבל</translation> +<translation id="4482953324121162758">האתר הזה לא יתורגם.</translation> <translation id="4506176782989081258">שגיאת אימות: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">לפנות אל מנהל המערכת</translation> <translation id="450710068430902550">שיתוף עם מנהל מערכת</translation> @@ -762,6 +765,7 @@ <translation id="5786044859038896871">האם ברצונך למלא את פרטי הכרטיס שלך?</translation> <translation id="5798683403665926540">שינוי דף הבית בהגדרות Chrome</translation> <translation id="5803412860119678065">האם ברצונך למלא את פרטי הכרטיס <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">הרשאות</translation> <translation id="5810442152076338065">החיבור שלך אל <ph name="DOMAIN" /> מוצפן באמצעות חבילת צופן מיושנת.</translation> <translation id="5813119285467412249">&ביצוע מחדש של הוספה</translation> <translation id="5838278095973806738">אין להזין מידע רגיש באתר הזה (כמו סיסמאות או מספרי כרטיסי אשראי), מאחר שתוקפים עלולים לקבל אליו גישה.</translation> @@ -783,6 +787,7 @@ <translation id="5967592137238574583">עריכת הפרטים ליצירת קשר</translation> <translation id="5967867314010545767">הסר מההיסטוריה</translation> <translation id="5975083100439434680">התרחק</translation> +<translation id="5977976211062815271">במכשיר הזה</translation> <translation id="598637245381783098">לא ניתן לפתוח את אפליקציית התשלומים</translation> <translation id="5989320800837274978">לא צוינו שרתי Proxy קבועים ולא כתובת אתר של סקריפט .pac</translation> <translation id="5990559369517809815">בקשות שנשלחו לשרת נחסמו על ידי תוסף.</translation> @@ -880,6 +885,7 @@ <translation id="6710594484020273272"><הקלד מונח חיפוש></translation> <translation id="671076103358959139">אסימון הרשמה:</translation> <translation id="6711464428925977395">משהו אינו תקין בשרת ה-proxy, או שהכתובת שגויה.</translation> +<translation id="6723740634201835758">בחשבון Google שלך</translation> <translation id="674375294223700098">שגיאת אישור שרת לא ידוע.</translation> <translation id="6744009308914054259">בזמן ההמתנה לחיבור אפשר לעבור אל 'הורדות' כדי לקרוא מאמרים לא מקוונים.</translation> <translation id="6753269504797312559">ערך מדיניות</translation> @@ -920,6 +926,7 @@ <translation id="6979440798594660689">השתקה (ברירת מחדל)</translation> <translation id="6984479912851154518">בחרת לצאת ממצב פרטי כדי לשלם באמצעות אפליקציה חיצונית. להמשיך?</translation> <translation id="6989763994942163495">הצג הגדרות מתקדמות...</translation> +<translation id="6996312675313362352">יש תמיד לתרגם <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">התשלום עשוי להיות חד-פעמי או לכלול חיובים חוזרים וייתכן שהדרישה לתשלום לא תוצג בצורה ברורה וחד-משמעית.</translation> <translation id="7029809446516969842">סיסמאות</translation> @@ -945,7 +952,7 @@ <translation id="717330890047184534">מזהה GAIA:</translation> <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> ועוד <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}two{<ph name="SHIPPING_OPTION_PREVIEW" /> ועוד <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}many{<ph name="SHIPPING_OPTION_PREVIEW" /> ועוד <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}other{<ph name="SHIPPING_OPTION_PREVIEW" /> ועוד <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}}</translation> <translation id="7179323680825933600">שמירה ומילוי של אמצעי תשלום</translation> -<translation id="7180611975245234373">רענן</translation> +<translation id="7180611975245234373">רענון</translation> <translation id="7182878459783632708">לא הוגדרה מדיניות</translation> <translation id="7186367841673660872">דף זה תורגם מ<ph name="ORIGINAL_LANGUAGE" />ל<ph name="LANGUAGE_LANGUAGE" /></translation> <translation id="7192203810768312527">פינוי של <ph name="SIZE" /> מהשטח. תיתכן טעינה איטית יותר של אתרים מסוימים בביקור הבא שלך.</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb index 26cd0af..5e65392 100644 --- a/components/strings/components_strings_ja.xtb +++ b/components/strings/components_strings_ja.xtb
@@ -103,7 +103,7 @@ <translation id="1521655867290435174">Google スプレッドシート</translation> <translation id="1527263332363067270">接続を待機しています…</translation> <translation id="1532118530259321453">このページの内容</translation> -<translation id="153384715582417236">現時点では他にありません</translation> +<translation id="153384715582417236">現在、コンテンツはありません</translation> <translation id="154408704832528245">配達先住所を選択</translation> <translation id="1549470594296187301">この機能を使用するには JavaScript を有効にする必要があります。</translation> <translation id="1555130319947370107">青</translation> @@ -129,6 +129,7 @@ <translation id="1656489000284462475">引取</translation> <translation id="1662550410081243962">お支払い方法の保存と入力</translation> <translation id="1663943134801823270">Chrome に保存されているクレジット カードと住所です。[<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />] で管理できます。</translation> +<translation id="1671391448414634642">今後、<ph name="SOURCE_LANGUAGE" />のページは<ph name="TARGET_LANGUAGE" />に翻訳されます。</translation> <translation id="1676269943528358898"><ph name="SITE" /> では通常、暗号化して情報を保護しています。今回、Google Chrome から <ph name="SITE" /> への接続試行時に、このウェブサイトからいつもとは異なる誤った認証情報が返されました。悪意のあるユーザーが <ph name="SITE" /> になりすまそうとしているか、Wi-Fi ログイン画面で接続が中断された可能性があります。データのやり取りが行われる前に Google Chrome によって接続が停止されたため、情報は引き続き保護されています。</translation> <translation id="168841957122794586">サーバー証明書に脆弱な暗号鍵が含まれています。</translation> <translation id="1697532407822776718">設定が完了しました。</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">プロキシは自動設定になっています。</translation> <translation id="2030481566774242610">もしかして: <ph name="LINK" /></translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />プロキシとファイアウォールを確認する<ph name="END_LINK" /></translation> +<translation id="2053111141626950936"><ph name="LANGUAGE" />のページは翻訳されません。</translation> <translation id="2053553514270667976">郵便番号</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 件の候補}other{# 件の候補}}</translation> <translation id="2068663545051464999">クラッシュ レポート ID <ph name="CRASH_ID" /> がアップロードされました(ローカル コンテキスト: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">ポップアップとリダイレクト</translation> <translation id="443673843213245140">プロキシの使用は無効ですが、プロキシの設定が明示的に指定されています。</translation> <translation id="445100540951337728">利用可能なデビットカード</translation> +<translation id="4482953324121162758">このサイトは翻訳されません。</translation> <translation id="4506176782989081258">検証エラー: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">システム管理者に問い合わせる</translation> <translation id="450710068430902550">管理者との共有</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">カード情報を入力しますか?</translation> <translation id="5798683403665926540">Chrome の設定でホームページを変更します</translation> <translation id="5803412860119678065"><ph name="CARD_DETAIL" /> を入力しますか?</translation> +<translation id="5804241973901381774">権限</translation> <translation id="5810442152076338065"><ph name="DOMAIN" /> への接続は古い暗号スイートにより暗号化されています。</translation> <translation id="5813119285467412249">追加のやり直し(&R)</translation> <translation id="5838278095973806738">このサイトでは機密情報(パスワード、クレジット カードなど)を入力しないでください。悪意のあるユーザーに情報が盗まれる恐れがあります。</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">連絡先情報の編集</translation> <translation id="5967867314010545767">履歴から削除</translation> <translation id="5975083100439434680">縮小する</translation> +<translation id="5977976211062815271">このデバイス</translation> <translation id="598637245381783098">お支払いアプリを開けません</translation> <translation id="5989320800837274978">固定プロキシ サーバーと .pac スクリプト URL のどちらも指定されていません。</translation> <translation id="5990559369517809815">サーバーへのリクエストは拡張機能によってブロックされています。</translation> @@ -807,7 +812,7 @@ <translation id="614940544461990577">次をお試しください:</translation> <translation id="6151417162996330722">サーバー証明書の有効期限が長すぎます。</translation> <translation id="6157877588268064908">配送方法と要件を確認するには、住所を選択してください</translation> -<translation id="6165508094623778733">詳しく見る</translation> +<translation id="6165508094623778733">詳細</translation> <translation id="6169916984152623906">現在、シークレット モードで閲覧しています。あなたのアクティビティは、この端末を利用する他のユーザーには表示されません。ただし、ダウンロードしたファイルとブックマークは通常どおり保存されます。</translation> <translation id="6177128806592000436">このサイトへの接続は保護されていません</translation> <translation id="6203231073485539293">インターネット接続を確認してください</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><検索キーワードを入力></translation> <translation id="671076103358959139">登録トークン:</translation> <translation id="6711464428925977395">プロキシ サーバーに問題がある、またはアドレスが正しくありません。</translation> +<translation id="6723740634201835758">Google アカウント</translation> <translation id="674375294223700098">不明なサーバー証明書エラー</translation> <translation id="6744009308914054259">接続するまでの間、[ダウンロード] に移動してオフラインで記事を読むことができます。</translation> <translation id="6753269504797312559">ポリシーの値</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">ミュート(デフォルト)</translation> <translation id="6984479912851154518">外部アプリケーションでのお支払い処理に進むため、プライベート モードを解除します。続行しますか?</translation> <translation id="6989763994942163495">詳細設定を表示...</translation> +<translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" />を常に翻訳</translation> <translation id="7012363358306927923">中国銀聯</translation> <translation id="7016992613359344582">料金の請求は 1 回限りの場合も毎月行われる場合もあり、課金されたかどうかわからないこともあります。</translation> <translation id="7029809446516969842">パスワード</translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb index e3fe2cb4..b6547aa 100644 --- a/components/strings/components_strings_kn.xtb +++ b/components/strings/components_strings_kn.xtb
@@ -36,7 +36,7 @@ <translation id="1165039591588034296">ದೋಷ</translation> <translation id="1173894706177603556">ಮರುಹೆಸರಿಸು</translation> <translation id="1175364870820465910">&ಮುದ್ರಿಸಿ...</translation> -<translation id="1181037720776840403">ತೆಗೆದುಹಾಕು</translation> +<translation id="1181037720776840403">ತೆಗೆದುಹಾಕಿ</translation> <translation id="1197088940767939838">ಕಿತ್ತಳೆ</translation> <translation id="1201402288615127009">ಮುಂದೆ</translation> <translation id="1201895884277373915">ಈ ಸೈಟ್ನಿಂದ ಇನ್ನಷ್ಟು</translation> @@ -128,6 +128,7 @@ <translation id="1656489000284462475">ಪಿಕಪ್</translation> <translation id="1662550410081243962">ಪಾವತಿ ವಿಧಾನಗಳನ್ನು ಉಳಿಸಿ ಮತ್ತು ಭರ್ತಿ ಮಾಡಿ</translation> <translation id="1663943134801823270">ಕಾರ್ಡ್ಗಳು ಮತ್ತು ವಿಳಾಸಗಳನ್ನು Chrome ನಿಂದ ಪಡೆಯಲಾಗಿದೆ. ನೀವು ಅವುಗಳನ್ನು <ph name="BEGIN_LINK" />ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ<ph name="END_LINK" /> ನಿರ್ವಹಿಸಬಹುದು.</translation> +<translation id="1671391448414634642">ಇಂದಿನಿಂದ <ph name="SOURCE_LANGUAGE" />ಭಾಷೆಯಲ್ಲಿರುವ ಪುಟಗಳನ್ನು <ph name="TARGET_LANGUAGE" />ಭಾಷೆಗೆ ಅನುವಾದ ಮಾಡಲಾಗುವುದು.</translation> <translation id="1676269943528358898"><ph name="SITE" /> ಸಾಮಾನ್ಯವಾಗಿ ನಿಮ್ಮ ಮಾಹಿತಿಯನ್ನು ಸಂರಕ್ಷಿಸಲು ಎನ್ಕ್ರಿಪ್ಶನ್ ಪ್ರಯೋಜನವನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ Google Chrome <ph name="SITE" /> ವೆಬ್ಸೈಟ್ಗೆ ಸಂಪರ್ಕಿಸಲು ಪ್ರಯತ್ನಿಸಿದಾಗ, ಆ ವೆಬ್ಸೈಟ್ ಅಸಹಜ ಮತ್ತು ತಪ್ಪು ರುಜುವಾತುಗಳನ್ನು ಹಿಂತಿರುಗಿಸಿದೆ. ದಾಳಿಕೋರರು <ph name="SITE" /> ರೂಪದಲ್ಲಿ ಸೋಗು ಹಾಕಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವಾಗ ಅಥವಾ ವೈ-ಫೈ ಸೈನ್-ಇನ್ ಪರದೆಯು ಸಂಪರ್ಕಕ್ಕೆ ಅಡ್ಡಿಯುಂಟು ಮಾಡಿದಾಗ ಇದು ಕಂಡುಬರಬಹುದು. ಯಾವುದೇ ಡೇಟಾವನ್ನು ವಿನಿಮಯ ಮಾಡಿಕೊಳ್ಳುವ ಮೊದಲೇ Google Chrome ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಿರುವ ಕಾರಣ, ನಿಮ್ಮ ಮಾಹಿತಿ ಈಗಲೂ ಸುರಕ್ಷಿತವಾಗಿದೆ.</translation> <translation id="168841957122794586">ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರವು ದುರ್ಬಲ ಕ್ರಿಪ್ಟೋಗ್ರಾಫಿಕ್ ಕೀಯನ್ನು ಹೊಂದಿದೆ.</translation> <translation id="1697532407822776718">ನೀವು ಎಲ್ಲ ರೀತಿಯಲ್ಲಿಯೂ ಸಿದ್ಧರಾಗಿರುವಿರಿ!</translation> @@ -181,6 +182,7 @@ <translation id="2025186561304664664">ಪ್ರಾಕ್ಸಿಯನ್ನು ಸ್ವಯಂ ಕಾನ್ಫಿಗರ್ ಆಗಿ ಹೊಂದಿಸಲಾಗಿದೆ.</translation> <translation id="2030481566774242610">ನಿಮ್ಮ ಮಾತಿನ ಅರ್ಥ <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />ಪ್ರಾಕ್ಸಿ ಮತ್ತು ಫೈರ್ವಾಲ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ<ph name="END_LINK" /></translation> +<translation id="2053111141626950936"><ph name="LANGUAGE" />ಭಾಷೆಯಲ್ಲಿರುವ ಪುಟಗಳು ಅನುವಾದಕ್ಕೊಳಪಡುವುದಿಲ್ಲ.</translation> <translation id="2053553514270667976">ಪಿನ್ ಕೋಡ್</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 ಸಲಹೆ}one{# ಸಲಹೆಗಳು}other{# ಸಲಹೆಗಳು}}</translation> <translation id="2068663545051464999">ಅಪ್ಲೋಡ್ ಮಾಡಿದ ಕ್ರ್ಯಾಶ್ ವರದಿ ಐಡಿ <ph name="CRASH_ID" /> (ಸ್ಥಳೀಯ ಸಂದರ್ಭ: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -562,6 +564,7 @@ <translation id="4434045419905280838">ಪಾಪ್-ಅಪ್ಗಳು ಹಾಗೂ ಮರುನಿರ್ದೇಶನಗಳು</translation> <translation id="443673843213245140">ಪ್ರಾಕ್ಸಿಯ ಬಳಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ ಆದರೆ ಬಹಿರಂಗ ಪ್ರಾಕ್ಸಿ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ.</translation> <translation id="445100540951337728">ಸಮ್ಮತಿಸಲಾದ ಡೆಬಿಟ್ ಕಾರ್ಡ್ಗಳು</translation> +<translation id="4482953324121162758">ಈ ಸೈಟ್ ಅನುವಾದಕ್ಕೆ ಒಳಪಡುವುದಿಲ್ಲ.</translation> <translation id="4506176782989081258">ಮೌಲ್ಯೀಕರಿಸುವಿಕೆಯ ದೋಷ: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">ಸಿಸ್ಟಂ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಲಾಗುತ್ತಿದೆ</translation> <translation id="450710068430902550">ನಿರ್ವಾಹಕರೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳುವುದು</translation> @@ -753,6 +756,7 @@ <translation id="5786044859038896871">ನಿಮ್ಮ ಕಾರ್ಡ್ ಮಾಹಿತಿ ಭರ್ತಿ ಮಾಡಲು ನೀವು ಬಯಸುವಿರಾ?</translation> <translation id="5798683403665926540">ಮುಖಪುಟವನ್ನು Chrome ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಬದಲಾಯಿಸಿ</translation> <translation id="5803412860119678065">ನಿಮ್ಮ <ph name="CARD_DETAIL" /> ಭರ್ತಿ ಮಾಡಲು ನೀವು ಬಯಸುವಿರಾ?</translation> +<translation id="5804241973901381774">ಅನುಮತಿಗಳು</translation> <translation id="5810442152076338065">ಬಳಕೆಯಲ್ಲಿಲ್ಲದ ಸೈಫರ್ ಸೂಟ್ ಬಳಸುವ ಮೂಲಕ <ph name="DOMAIN" /> ಗೆ ನಿಮ್ಮ ಸಂಪರ್ಕವನ್ನು ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗಿದೆ.</translation> <translation id="5813119285467412249">&ಸೇರಿಸುವುದನ್ನು ಮತ್ತೆಮಾಡು</translation> <translation id="5838278095973806738">ಈ ಸೈಟ್ನಲ್ಲಿ ನೀವು ಯಾವುದೇ ಸೂಕ್ಷ್ಮ ಮಾಹಿತಿಯನ್ನು (ಉದಾಹರಣೆಗೆ, ಪಾಸ್ವರ್ಡ್ಗಳು ಅಥವಾ ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ಗಳು) ನಮೂದಿಸಬಾರದು, ಏಕೆಂದರೆ ಅದು ದಾಳಿಕೋರರ ಮೂಲಕ ಕಳುವಾಗಬಹುದು.</translation> @@ -774,6 +778,7 @@ <translation id="5967592137238574583">ಸಂಪರ್ಕ ಮಾಹಿತಿಯನ್ನು ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="5967867314010545767">ಇತಿಹಾಸದಿಂದ ತೆಗೆದುಹಾಕಿ</translation> <translation id="5975083100439434680">ಝೂಮ್ ಔಟ್</translation> +<translation id="5977976211062815271">ಈ ಸಾಧನದಲ್ಲಿರುವವು</translation> <translation id="598637245381783098">ಪಾವತಿ ಅಪ್ಲಿಕೇಶನ್ ತೆರೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ</translation> <translation id="5989320800837274978">ಹೊಂದಿಸಿದ ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್ಗಳು ಆಗಲಿ ಅಥವಾ .pac ಸ್ಕ್ರಿಪ್ಟ್ URL ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿಲ್ಲ.</translation> <translation id="5990559369517809815">ಸರ್ವರ್ಗಳ ವಿನಂತಿಗಳನ್ನು ವಿಸ್ತರಣೆಯಿಂದ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.</translation> @@ -820,7 +825,7 @@ <translation id="627746635834430766">ಮುಂದಿನ ಬಾರಿ ವೇಗವಾಗಿ ಪಾವತಿಸಲು, ನಿಮ್ಮ ಕಾರ್ಡ್ ಮತ್ತು ಬಿಲ್ಲಿಂಗ್ ವಿಳಾಸವನ್ನು ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಿ.</translation> <translation id="6280223929691119688">ಈ ವಿಳಾಸಕ್ಕೆ ತಲುಪಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಬೇರೊಂದು ವಿಳಾಸವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ.</translation> <translation id="6282194474023008486">ಪೋಸ್ಟಲ್ ಕೋಡ್</translation> -<translation id="6290238015253830360">ನೀವು ಸಲಹೆ ನೀಡಿರುವ ಲೇಖನಗಳು ಇಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ</translation> +<translation id="6290238015253830360">ನಿಮ್ಮ ಸೂಚಿತ ಲೇಖನಗಳು ಇಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ</translation> <translation id="6302269476990306341">Chrome ನಲ್ಲಿನ Google ಅಸಿಸ್ಟೆಂಟ್ ನಿಲ್ಲುತ್ತಿದೆ</translation> <translation id="6305205051461490394"><ph name="URL" /> ತಲುಪಲಾಗುವುದಿಲ್ಲ.</translation> <translation id="6321917430147971392">ನಿಮ್ಮ DNS ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ</translation> @@ -870,6 +875,7 @@ <translation id="6710594484020273272"><ಹುಡುಕಾಟದ ಪದ ಟೈಪ್ ಮಾಡಿ></translation> <translation id="671076103358959139">ನೋಂದಣಿಯ ಟೋಕನ್:</translation> <translation id="6711464428925977395">ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್ನಲ್ಲಿ ಏನೋ ದೋಷವಿದೆ ಅಥವಾ ವಿಳಾಸವು ತಪ್ಪಾಗಿದೆ.</translation> +<translation id="6723740634201835758">ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿರುವವು</translation> <translation id="674375294223700098">ಅಪರಿಚಿತ ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರ ದೋಷ.</translation> <translation id="6744009308914054259">ಸಂಪರ್ಕಕ್ಕಾಗಿ ನಿರೀಕ್ಷಿಸುತ್ತಿರುವಾಗ, ಆಫ್ಲೈನ್ ಲೇಖನಗಳನ್ನು ಓದಲು ನೀವು ಡೌನ್ಲೋಡ್ಗಳಿಗೆ ಭೇಟಿ ನೀಡಬಹುದು.</translation> <translation id="6753269504797312559">ನೀತಿ ಮೌಲ್ಯ</translation> @@ -910,6 +916,7 @@ <translation id="6979440798594660689">ಮ್ಯೂಟ್ (ಡಿಫಾಲ್ಟ್)</translation> <translation id="6984479912851154518">ಬಾಹ್ಯ ಆ್ಯಪ್ ಮೂಲಕ ಪಾವತಿಸಲು ಖಾಸಗಿ ಮೋಡ್ ತೊರೆಯಲಾಗುತ್ತಿದೆ. ಮುಂದುವರಿಸುವುದೇ?</translation> <translation id="6989763994942163495">ಸುಧಾರಿತ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ತೋರಿಸು...</translation> +<translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" />ಭಾಷೆಯನ್ನು ಯಾವಾಗಲೂ ಅನುವಾದಿಸಿ</translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">ಇವುಗಳು ಒಂದು ಬಾರಿ ಪಾವತಿಸುವಂತಹ ಶುಲ್ಕಗಳಾಗಿರಬಹುದು, ಮರುಕಳಿಸುವ ಶುಲ್ಕಗಳಾಗಿರಬಹುದು ಅಥವಾ ಸ್ಪಷ್ಟವಾಗಿಲ್ಲದೇ ಇರಬಹುದು.</translation> <translation id="7029809446516969842">ಪಾಸ್ವರ್ಡ್ಗಳು</translation> @@ -935,7 +942,7 @@ <translation id="717330890047184534">Gaia ಐಡಿ:</translation> <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> ಮತ್ತು <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ಇನ್ನಷ್ಟು}one{<ph name="SHIPPING_OPTION_PREVIEW" /> ಮತ್ತು <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ಇನ್ನಷ್ಟು}other{<ph name="SHIPPING_OPTION_PREVIEW" /> ಮತ್ತು <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ಇನ್ನಷ್ಟು}}</translation> <translation id="7179323680825933600">ಪಾವತಿ ವಿಧಾನಗಳನ್ನು ಉಳಿಸಿ ಮತ್ತು ಭರ್ತಿ ಮಾಡಿ</translation> -<translation id="7180611975245234373">ರಿಫ್ರೆಶ್ ಮಾಡಿ</translation> +<translation id="7180611975245234373">ರಿಫ್ರೆಶ್</translation> <translation id="7182878459783632708">ಯಾವುದೇ ನೀತಿಗಳನ್ನು ಹೊಂದಿಸಿಲ್ಲ</translation> <translation id="7186367841673660872">ಈ ಪುಟವನ್ನು<ph name="ORIGINAL_LANGUAGE" />ನಿಂದ<ph name="LANGUAGE_LANGUAGE" />ಗೆ ಭಾಷಾಂತರಿಸಲಾಗಿದೆ</translation> <translation id="7192203810768312527"><ph name="SIZE" /> ತೆಗೆದುಹಾಕಿ. ನಿಮ್ಮ ನಂತರದ ಭೇಟಿಯ ಸಮಯದಲ್ಲಿ ಕೆಲವು ಸೈಟ್ಗಳು ನಿಧಾನವಾಗಿ ಲೋಡ್ ಆಗಬಹುದು.</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb index e3ce14c..54f0d59a 100644 --- a/components/strings/components_strings_ko.xtb +++ b/components/strings/components_strings_ko.xtb
@@ -103,7 +103,7 @@ <translation id="1521655867290435174">Google 스프레드시트</translation> <translation id="1527263332363067270">연결 대기 중...</translation> <translation id="1532118530259321453">이 페이지 내용:</translation> -<translation id="153384715582417236">새 콘텐츠가 없습니다.</translation> +<translation id="153384715582417236">새 콘텐츠 없음</translation> <translation id="154408704832528245">배달 주소 선택</translation> <translation id="1549470594296187301">이 기능을 이용하려면 자바스크립트를 사용하도록 설정해야 합니다.</translation> <translation id="1555130319947370107">파란색</translation> @@ -129,6 +129,7 @@ <translation id="1656489000284462475">수령</translation> <translation id="1662550410081243962">결제 수단 저장 및 자동 입력</translation> <translation id="1663943134801823270">카드와 주소는 Chrome에서 가져왔습니다. 이 정보는 <ph name="BEGIN_LINK" />설정<ph name="END_LINK" />에서 관리할 수 있습니다.</translation> +<translation id="1671391448414634642">지금부터 <ph name="SOURCE_LANGUAGE" />로 된 페이지가 <ph name="TARGET_LANGUAGE" />로 번역됩니다.</translation> <translation id="1676269943528358898"><ph name="SITE" />에서는 사용자 정보를 보호하기 위해 일반적으로 암호화를 사용합니다. 이번에 Chrome에서 <ph name="SITE" />에 연결을 시도했을 때 웹사이트에서 비정상적이고 잘못된 사용자 인증 정보를 반환했습니다. 이는 공격자가 <ph name="SITE" />인 것처럼 가장하려고 하거나 Wi-Fi 로그인 화면이 연결을 방해했기 때문일 수 있습니다. 데이터 교환이 발생하기 전에 Chrome에서 연결을 중단했기 때문에 사용자 정보는 안전합니다.</translation> <translation id="168841957122794586">서버 인증서에 안전성이 낮은 암호화 키가 포함되어 있습니다.</translation> <translation id="1697532407822776718">설정 완료</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">프록시가 자동 설정되도록 지정됩니다.</translation> <translation id="2030481566774242610"><ph name="LINK" />을(를) 찾으셨나요?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />프록시 및 방화벽 확인<ph name="END_LINK" /></translation> +<translation id="2053111141626950936"><ph name="LANGUAGE" />로 된 페이지를 번역하지 않습니다.</translation> <translation id="2053553514270667976">우편번호</translation> <translation id="2064691555167957331">{COUNT,plural, =1{제안 1개}other{제안 #개}}</translation> <translation id="2068663545051464999">비정상 종료 보고서 ID <ph name="CRASH_ID" />업로드됨(로컬 컨텍스트: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">팝업 및 리디렉션</translation> <translation id="443673843213245140">프록시 사용은 중지되었지만 명시적 프록시 설정이 지정되어 있습니다.</translation> <translation id="445100540951337728">사용 가능한 직불카드</translation> +<translation id="4482953324121162758">이 사이트는 번역되지 않습니다.</translation> <translation id="4506176782989081258">유효성 검사 오류 <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">시스템 관리자에게 문의</translation> <translation id="450710068430902550">관리자와 공유</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">카드 정보를 입력하시겠습니까?</translation> <translation id="5798683403665926540">Chrome 설정에서 홈페이지를 변경하세요.</translation> <translation id="5803412860119678065"><ph name="CARD_DETAIL" />을(를) 입력하시겠습니까?</translation> +<translation id="5804241973901381774">권한</translation> <translation id="5810442152076338065"><ph name="DOMAIN" />에 대한 연결이 더 이상 사용되지 않는 암호화 기술을 사용하여 암호화됩니다.</translation> <translation id="5813119285467412249">추가 다시 실행(&R)</translation> <translation id="5838278095973806738">이 사이트에 입력하는 비밀번호나 신용카드 번호 등의 정보는 공격자에 의해 도난당할 수 있습니다.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">연락처 정보 수정</translation> <translation id="5967867314010545767">기록에서 삭제</translation> <translation id="5975083100439434680">축소</translation> +<translation id="5977976211062815271">이 기기에서</translation> <translation id="598637245381783098">결제 앱을 열 수 없습니다.</translation> <translation id="5989320800837274978">고정 프록시 서버와 .pac 스크립트 URL이 모두 지정되지 않았습니다.</translation> <translation id="5990559369517809815">서버에 대한 요청이 확장 프로그램에 의해 차단되었습니다.</translation> @@ -825,7 +830,7 @@ <translation id="627746635834430766">다음번에 더 빠르게 결제할 수 있도록 Google 계정에 카드와 청구서 수신 주소를 저장하세요.</translation> <translation id="6280223929691119688">이 주소로 배달할 수 없습니다. 다른 주소를 선택하세요.</translation> <translation id="6282194474023008486">우편번호</translation> -<translation id="6290238015253830360">추천 기사가 여기에 표시됩니다.</translation> +<translation id="6290238015253830360">추천 콘텐츠가 여기에 표시됩니다.</translation> <translation id="6302269476990306341">Chrome의 Google 어시스턴트 중지하는 중</translation> <translation id="6305205051461490394"><ph name="URL" />에 연결할 수 없습니다.</translation> <translation id="6321917430147971392">DNS 설정 확인</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><검색어 입력></translation> <translation id="671076103358959139">등록 토큰:</translation> <translation id="6711464428925977395">프록시 서버에 문제가 발생했거나 주소가 잘못되었습니다.</translation> +<translation id="6723740634201835758">내 Google 계정에서</translation> <translation id="674375294223700098">알 수 없는 서버 인증서 오류입니다.</translation> <translation id="6744009308914054259">연결을 기다리는 동안 다운로드에서 오프라인 기사를 읽을 수 있습니다.</translation> <translation id="6753269504797312559">정책 값</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">음소거(기본값)</translation> <translation id="6984479912851154518">시크릿 모드를 종료하고 외부 애플리케이션에서 결제합니다. 계속하시겠습니까?</translation> <translation id="6989763994942163495">고급 설정 표시</translation> +<translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> 항상 번역</translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">이러한 청구는 일회성일 수도 있고 반복적일 수도 있으며 명확하지 않을 수도 있습니다.</translation> <translation id="7029809446516969842">비밀번호</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb index 990d951..e045e9e 100644 --- a/components/strings/components_strings_lt.xtb +++ b/components/strings/components_strings_lt.xtb
@@ -761,6 +761,7 @@ <translation id="5786044859038896871">Ar norite, kad būtų įvesta jūsų kredito kortelės informacija?</translation> <translation id="5798683403665926540">Keisti pagrindinį puslapį „Chrome“ nustatymuose</translation> <translation id="5803412860119678065">Ar norite, kad būtų įvesta <ph name="CARD_DETAIL" /> informacija?</translation> +<translation id="5804241973901381774">Leidimai</translation> <translation id="5810442152076338065">Ryšys su <ph name="DOMAIN" /> užšifruotas naudojant pasenusį šifravimo paketą.</translation> <translation id="5813119285467412249">&Pridėti dar kartą</translation> <translation id="5838278095973806738">Šioje svetainėje neturėtumėte pateikti neskelbtinos informacijos (pvz., slaptažodžių ar kredito kortelių numerių), nes ją gali pavogti užpuolikai.</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb index fd22315..9f6b95b 100644 --- a/components/strings/components_strings_lv.xtb +++ b/components/strings/components_strings_lv.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Informācija par saņemšanu</translation> <translation id="1662550410081243962">Saglabāt un aizpildīt maksājuma veidus</translation> <translation id="1663943134801823270">Kartes un adreses tiek iegūtas no Chrome. Varat pārvaldīt tās <ph name="BEGIN_LINK" />iestatījumos<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Turpmāk lapas, kas būs šādā valodā: <ph name="SOURCE_LANGUAGE" />, tiks tulkotas šādā valodā: <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898">Vietnē <ph name="SITE" /> informācijas aizsargāšanai parasti tiek izmantota šifrēšana. Kad pārlūkā Google Chrome tika mēģināts izveidot savienojumu ar vietni <ph name="SITE" />, šoreiz tā nosūtīja neparastus un nepareizus akreditācijas datus. Iespējams, tas notika, jo uzbrucējs mēģināja uzdoties par vietni <ph name="SITE" />, vai arī Wi-Fi pierakstīšanās ekrāns pārtrauc savienojumu. Jūsu informācija joprojām ir drošībā, jo pārlūks Google Chrome pārtrauca savienojumu, pirms tika veikta jebkādu datu apmaiņa.</translation> <translation id="168841957122794586">Servera sertifikāts ietver vāju kriptogrāfisko atslēgu.</translation> <translation id="1697532407822776718">Gatavs!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Starpniekserverim ir iestatīta autokonfigurācija.</translation> <translation id="2030481566774242610">Vai domājāt <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Pārbaudiet starpniekserveri un ugunsmūri<ph name="END_LINK" />.</translation> +<translation id="2053111141626950936">Lapas netiks tulkotas no šīs valodas: <ph name="LANGUAGE" /></translation> <translation id="2053553514270667976">Pasta indekss</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 ieteikums}zero{# ieteikumi}one{# ieteikums}other{# ieteikumi}}</translation> <translation id="2068663545051464999">Augšupielādētā avārijas pārskata ID: <ph name="CRASH_ID" /> (lokālais konteksts: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -565,6 +567,7 @@ <translation id="4434045419905280838">Uznirstošie elem. un novirzīšana</translation> <translation id="443673843213245140">Starpniekservera lietošana ir atspējota, bet ir norādīta atklāta starpniekservera konfigurācija.</translation> <translation id="445100540951337728">Atbalstītās debetkartes</translation> +<translation id="4482953324121162758">Šī vietne netiks tulkota.</translation> <translation id="4506176782989081258">Validācijas kļūda: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Sazinieties ar sistēmas administratoru.</translation> <translation id="450710068430902550">Kopīgošana ar administratoru</translation> @@ -756,6 +759,7 @@ <translation id="5786044859038896871">Vai vēlaties aizpildīt laukus ar kartes informāciju?</translation> <translation id="5798683403665926540">Mainīt sākumlapu Chrome iestatījumos</translation> <translation id="5803412860119678065">Vai vēlaties aizpildīt lauku ar informāciju “<ph name="CARD_DETAIL" />”?</translation> +<translation id="5804241973901381774">Atļaujas</translation> <translation id="5810442152076338065">Savienojums ar domēnu <ph name="DOMAIN" /> ir šifrēts, izmantojot novecojušu šifra komplektu.</translation> <translation id="5813119285467412249">&Pievienošanas atsaukuma atcelšana</translation> <translation id="5838278095973806738">Neievadiet šajā vietnē sensitīvu informāciju (piemēram, paroles vai kredītkartes), jo to var nozagt uzbrucēji.</translation> @@ -777,6 +781,7 @@ <translation id="5967592137238574583">Kontaktinformācijas rediģēšana</translation> <translation id="5967867314010545767">Noņemt no vēstures</translation> <translation id="5975083100439434680">Tālināt</translation> +<translation id="5977976211062815271">Šajā ierīcē</translation> <translation id="598637245381783098">Nevar atvērt maksājumu lietotni</translation> <translation id="5989320800837274978">Nav norādīti nedz fiksēti starpniekserveri, nedz .pac skripta URL.</translation> <translation id="5990559369517809815">Paplašinājums ir bloķējis pieprasījumus serverim.</translation> @@ -874,6 +879,7 @@ <translation id="6710594484020273272"><Ierakstiet meklēšanas vienumu></translation> <translation id="671076103358959139">Reģistrācijas pilnvara:</translation> <translation id="6711464428925977395">Starpniekserverī radās kļūda, vai arī adrese nav pareiza.</translation> +<translation id="6723740634201835758">Google kontā</translation> <translation id="674375294223700098">Nezināma servera sertifikāta kļūda.</translation> <translation id="6744009308914054259">Kamēr tiek gaidīts savienojums, varat apmeklēt Lejupielādes, lai lasītu rakstu bezsaistē.</translation> <translation id="6753269504797312559">Politikas vērtība</translation> @@ -914,6 +920,7 @@ <translation id="6979440798594660689">Izslēgt skaņu (noklusējums)</translation> <translation id="6984479912851154518">Ja maksāšanai tiks izmantota ārējā lietojumprogramma, tiks aizvērts privātais režīms. Vai turpināt?</translation> <translation id="6989763994942163495">Rādīt papildu iestatījumus...</translation> +<translation id="6996312675313362352">Vienmēr tulkot šo valodu: <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Šie naudas pieprasījumi var būt vienreizēji vai atkārtoti, un tie var nebūt uzreiz pamanāmi.</translation> <translation id="7029809446516969842">Paroles</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb index f4dd9ec..51fe66cb 100644 --- a/components/strings/components_strings_ml.xtb +++ b/components/strings/components_strings_ml.xtb
@@ -103,7 +103,7 @@ <translation id="1521655867290435174">Google ഷീറ്റ്</translation> <translation id="1527263332363067270">കണക്ഷനുവേണ്ടി കാക്കുന്നു…</translation> <translation id="1532118530259321453">ഈ പേജ് പറയുന്നത്:</translation> -<translation id="153384715582417236">ഇപ്പോൾ ഇത്രമാത്രമേ ലഭ്യമായിട്ടുള്ളൂ</translation> +<translation id="153384715582417236">ഇപ്പോൾ ഇത്രമാത്രം ലഭ്യം</translation> <translation id="154408704832528245">ഡെലിവറി നൽകേണ്ട വിലാസം തിരഞ്ഞെടുക്കുക</translation> <translation id="1549470594296187301">ഈ ഫീച്ചർ ഉപയോഗിക്കാൻ JavaScript പ്രവർത്തനക്ഷമമാക്കിയിരിക്കണം.</translation> <translation id="1555130319947370107">നീല</translation> @@ -129,6 +129,7 @@ <translation id="1656489000284462475">പിക്കപ്പ്</translation> <translation id="1662550410081243962">പേയ്മെന്റ് രീതികൾ സംരക്ഷിച്ച് സ്വമേധയാ പൂരിപ്പിക്കുക</translation> <translation id="1663943134801823270">കാർഡുകളും വിലാസങ്ങളും Chrome-ൽ നിന്നുള്ളതാണ്. നിങ്ങൾക്ക് അവ <ph name="BEGIN_LINK" />ക്രമീകരണത്തിൽ<ph name="END_LINK" /> മാനേജുചെയ്യാം.</translation> +<translation id="1671391448414634642">ഇനിമുതൽ <ph name="SOURCE_LANGUAGE" /> ഭാഷയിലുള്ള പേജുകൾ <ph name="TARGET_LANGUAGE" /> ഭാഷയിലേക്ക് വിവർത്തനം ചെയ്യപ്പെടും.</translation> <translation id="1676269943528358898">നിങ്ങളുടെ വിവരങ്ങൾ പരിരക്ഷിക്കാൻ സാധാരണയായി <ph name="SITE" />, എൻക്രിപ്ഷൻ ഉപയോഗിക്കുന്നു. ഇപ്പോൾ <ph name="SITE" /> സൈറ്റിലേക്ക് കണക്റ്റ് ചെയ്യാൻ Google Chrome ശ്രമിച്ചപ്പോൾ, അസാധാരണമായതും തെറ്റായതുമായ ക്രെഡൻഷ്യലുകൾ വെബ്സൈറ്റ് തിരികെ അയച്ചു. ഒരു ആക്രമണകാരി, <ph name="SITE" /> എന്നതായി ഭാവിക്കാൻ ശ്രമിക്കുമ്പോഴോ Wi-Fi സൈൻ ഇൻ സ്ക്രീൻ, കണക്ഷനെ തടസ്സപ്പെടുത്തുമ്പോഴോ ആണ് ഇങ്ങനെ സംഭവിക്കാനിടയുള്ളത്. ഏതെങ്കിലും ഡാറ്റ കൈമാറുന്നതിനുമുമ്പ് Google Chrome കണക്ഷൻ അവസാനിപ്പിച്ചതിനാൽ, നിങ്ങളുടെ വിവരങ്ങൾ തുടർന്നും സുരക്ഷിതമായിരിക്കും.</translation> <translation id="168841957122794586">സെർവർ സർട്ടിഫിക്കറ്റിൽ ഒരു ദുർബലമായ ഗൂഢഭാഷ കീ ഉൾപ്പെടുന്നു.</translation> <translation id="1697532407822776718">എല്ലാം സജ്ജമായിക്കഴിഞ്ഞു!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">പ്രോക്സി സ്വയമേവ കോൺഫിഗർ ചെയ്യാൻ സജ്ജമാക്കി.</translation> <translation id="2030481566774242610">നിങ്ങൾ ഉദ്ദേശിച്ചത് <ph name="LINK" /> ആണോ?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />പ്രോക്സിയും ഫയർവാളും പരിശോധിക്കുന്നു<ph name="END_LINK" /></translation> +<translation id="2053111141626950936"><ph name="LANGUAGE" /> ഭാഷയിലുള്ള പേജുകൾ വിവർത്തനം ചെയ്യില്ല.</translation> <translation id="2053553514270667976">തപാൽ കോഡ്</translation> <translation id="2064691555167957331">{COUNT,plural, =1{ഒരു നിർദ്ദേശം}other{# നിർദ്ദേശങ്ങൾ}}</translation> <translation id="2068663545051464999">ക്രാഷ് റിപ്പോർട്ട് ഐഡി <ph name="CRASH_ID" /> അപ്ലോഡ് ചെയ്തു (പ്രാദേശിക സന്ദർഭം: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -565,6 +567,7 @@ <translation id="4434045419905280838">പോപ്-അപ്പുകളും റീഡയറക്റ്റുകളും</translation> <translation id="443673843213245140">പ്രോക്സി ഉപയോഗം അപ്രാപ്തമാക്കി പക്ഷെ ഒരു വ്യക്തമായ പ്രോക്സി കോൺഫിഗറേഷൻ നിർദ്ദേശിച്ചു.</translation> <translation id="445100540951337728">ഡെബിറ്റ് കാർഡുകൾ സ്വീകരിക്കുന്നു</translation> +<translation id="4482953324121162758">ഈ സൈറ്റ് വിവർത്തനം ചെയ്യപ്പെടില്ല.</translation> <translation id="4506176782989081258">മൂല്യനിർണ്ണയ പിശക്: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">സിസ്റ്റം അഡ്മിനെ ബന്ധപ്പെടുന്നു</translation> <translation id="450710068430902550">അഡ്മിനിസ്ട്രേറ്ററുമായി പങ്കിടുന്നു</translation> @@ -756,6 +759,7 @@ <translation id="5786044859038896871">നിങ്ങളുടെ കാർഡ് വിവരം പൂരിപ്പിക്കണോ?</translation> <translation id="5798683403665926540">Chrome ക്രമീകരണത്തിൽ ഹോം പേജ് മാറ്റുക</translation> <translation id="5803412860119678065">നിങ്ങളുടെ <ph name="CARD_DETAIL" /> പൂരിപ്പിക്കണോ?</translation> +<translation id="5804241973901381774">അനുമതികൾ</translation> <translation id="5810442152076338065"><ph name="DOMAIN" /> എന്നതിലേക്കുള്ള നിങ്ങളുടെ കണക്ഷൻ കാലഹരണപ്പെട്ട സൈഫർ സ്യൂട്ട് ഉപയോഗിച്ച് എൻക്രിപ്റ്റുചെയ്തിരിക്കുന്നു.</translation> <translation id="5813119285467412249">&ചേർത്തത് വീണ്ടും ചെയ്യുക</translation> <translation id="5838278095973806738">അക്രമകാരികൾ മോഷ്ടിക്കാൻ സാധ്യതയുള്ളതിനാൽ ഈ സൈറ്റിൽ നിങ്ങളുടെ രഹസ്യ വിവരങ്ങളൊന്നും (ഉദാഹരണത്തിന്, പാസ്വേഡുകളോ ക്രെഡിറ്റ് കാർഡുകളോ പോലുള്ളവ) നൽകരുത്.</translation> @@ -777,6 +781,7 @@ <translation id="5967592137238574583">കോൺടാക്റ്റ് വിവരം എഡിറ്റുചെയ്യുക</translation> <translation id="5967867314010545767">ചരിത്രത്തിൽ നിന്നും നീക്കംചെയ്യുക</translation> <translation id="5975083100439434680">സൂം ഔട്ട്</translation> +<translation id="5977976211062815271">ഈ ഉപകരണത്തിലേത്</translation> <translation id="598637245381783098">പേയ്മെന്റ് ആപ്പ് തുറക്കാനായില്ല</translation> <translation id="5989320800837274978">ഒരു സ്ഥിരമായ പ്രോക്സി സെർവർ അല്ലെങ്കിൽ ഒരു .pac സ്ക്രിപ്റ്റ് URL വ്യക്തമാക്കിയിട്ടില്ല.</translation> <translation id="5990559369517809815">സെർവറിലേക്കുള്ള അഭ്യർത്ഥനകൾ ഒരു വിപുലീകരണം തടഞ്ഞു.</translation> @@ -805,7 +810,7 @@ <translation id="614940544461990577">പരീക്ഷിച്ചുനോക്കൂ:</translation> <translation id="6151417162996330722">സെർവർ സർട്ടിഫിക്കറ്റിന് ദൈർഘ്യമേറിയ ഒരു കാലയളവ് ഉണ്ട്.</translation> <translation id="6157877588268064908">ഷിപ്പിംഗ് രീതികളും ആവശ്യകതകളും കാണാൻ ഒരു വിലാസം തിരഞ്ഞെടുക്കുക</translation> -<translation id="6165508094623778733">കൂടുതൽ മനസിലാക്കുക</translation> +<translation id="6165508094623778733">കൂടുതലറിയുക</translation> <translation id="6169916984152623906">നിങ്ങൾക്കിപ്പോൾ സ്വകാര്യമായി ബ്രൗസ് ചെയ്യാം, ഈ ഉപകരണം ഉപയോഗിക്കുന്ന മറ്റ് ആളുകൾക്ക് നിങ്ങളുടെ ആക്റ്റിവിറ്റി കാണാനാവില്ല. എന്നാൽ ഡൗൺലോഡുകളും ബുക്ക്മാർക്കുകളും സംരക്ഷിക്കപ്പെടും.</translation> <translation id="6177128806592000436">ഈ സൈറ്റിലേക്കുള്ള നിങ്ങളുടെ കണക്ഷൻ സുരക്ഷിതമല്ല</translation> <translation id="6203231073485539293">നിങ്ങളുടെ ഇന്റർനെറ്റ് കണക്ഷൻ പരിശോധിക്കുക</translation> @@ -873,6 +878,7 @@ <translation id="6710594484020273272"><തിരയൽ പദം നൽകുക></translation> <translation id="671076103358959139">എന്റോള്മെന്റ് ടോക്കണ്:</translation> <translation id="6711464428925977395">പ്രോക്സി സെർവറിൽ എന്തോ പ്രശ്നമുണ്ട്, അല്ലെങ്കിൽ വിലാസം തെറ്റാണ്.</translation> +<translation id="6723740634201835758">നിങ്ങളുടെ Google അക്കൗണ്ടിലേത്</translation> <translation id="674375294223700098">അറിയപ്പെടാത്ത സെര്വര് സര്ട്ടിഫിക്കറ്റ് പിശക്.</translation> <translation id="6744009308914054259">കണക്ഷനായി കാത്തിരിക്കുമ്പോൾ, ഓഫ്ലൈൻ ലേഖനങ്ങൾ വായിക്കാനായി നിങ്ങൾക്ക് ഡൗൺലോഡുകൾ സന്ദർശിക്കാം.</translation> <translation id="6753269504797312559">നയ മൂല്യം</translation> @@ -913,6 +919,7 @@ <translation id="6979440798594660689">മ്യൂട്ട് ചെയ്യുക (ഡിഫോൾട്ട്)</translation> <translation id="6984479912851154518">ഒരു എക്സ്റ്റേണൽ അപ്ലിക്കേഷൻ വഴി പണമടയ്ക്കുന്നതിന് വേണ്ടി സ്വകാര്യ മോഡ് വിടുന്നു. തുടരണോ?</translation> <translation id="6989763994942163495">വിപുലമായ ക്രമീകരണങ്ങൾ കാണിക്കുക...</translation> +<translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> എല്ലായ്പ്പോഴും വിവർത്തനം ചെയ്യുക</translation> <translation id="7012363358306927923">ചൈന UnionPay</translation> <translation id="7016992613359344582">ഈ നിരക്കുകൾ ഒറ്റത്തവണ അടയ്ക്കുന്നതോ അല്ലെങ്കിൽ ആവർത്തിക്കുന്നവയോ ആവാം, ഒപ്പം വ്യക്തമല്ലായിരിക്കാം.</translation> <translation id="7029809446516969842">പാസ്വേഡുകള്</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb index a5d3a4e4..2ce5f585 100644 --- a/components/strings/components_strings_mr.xtb +++ b/components/strings/components_strings_mr.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">घेणे</translation> <translation id="1662550410081243962">पेमेंट पद्धती सेव्ह करा आणि भरा</translation> <translation id="1663943134801823270">कार्ड आणि पत्ते Chrome कडील आहेत. तुम्ही त्यांना <ph name="BEGIN_LINK" />सेटिंग्ज<ph name="END_LINK" /> मधून व्यवस्थापित करू शकता.</translation> +<translation id="1671391448414634642">आतापासून <ph name="SOURCE_LANGUAGE" />मधील पेज <ph name="TARGET_LANGUAGE" />मध्ये भाषांतरित केली जातील.</translation> <translation id="1676269943528358898"><ph name="SITE" /> तुमची माहिती संरक्षित करण्यासाठी सामान्यतः एंक्रिप्शन वापरते. Google Chrome ने यावेळी <ph name="SITE" /> शी कनेक्ट करण्याचा प्रयत्न केला तेव्हा, वेबसाइटने असामान्य आणि अयोग्य क्रेडेंशियल परत पाठवले. एकतर आक्रमणकर्ता <ph name="SITE" /> असल्याची बतावणी करण्याचा प्रयत्न करतो तेव्हा किंवा वाय-फाय साइन इन स्क्रीनने कनेक्शनमध्ये व्यत्यय आणले तेव्हा हे घडू शकते. कोणत्याही डेटाची अदलाबदल करण्यापूर्वी Google Chrome ने कनेक्शन थांबवल्यामुळे तुमची माहिती अद्याप सुरक्षित आहे.</translation> <translation id="168841957122794586">सर्व्हर सर्टिफिकेटमध्ये एक कमकुवत क्रिप्टोग्राफिक की आहे.</translation> <translation id="1697532407822776718">तुम्ही पूर्णपणे तयार आहात!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">प्रॉक्सी स्वयंचलित कॉन्फिगरेशनवर सेट करण्यात आली.</translation> <translation id="2030481566774242610">तुम्हाला असे म्हणायचे होते <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />प्रॉक्सी आणि फायरवॉल तपासणे<ph name="END_LINK" /></translation> +<translation id="2053111141626950936"><ph name="LANGUAGE" />मधील पेज भाषांतरीत केले जाणार नाहीत.</translation> <translation id="2053553514270667976">पिनकोड</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 सूचना}one{# सूचना}other{# सूचना}}</translation> <translation id="2068663545051464999">क्रॅश अहवाल <ph name="CRASH_ID" /> आयडी अपलोड केला (स्थानिक संदर्भ: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -565,6 +567,7 @@ <translation id="4434045419905280838">पॉप-अप आणि रीडिरेक्ट</translation> <translation id="443673843213245140">प्रॉक्सीचा वापर अक्षम करण्यात आला आहे पण एक सुस्पष्ट प्रॉक्सी कॉन्फिगरेशन निर्दिष्ट करण्यात आले आहे.</translation> <translation id="445100540951337728">डेबिट कार्डे स्वीकारली जातात</translation> +<translation id="4482953324121162758">या साइटचे भाषांतर केले जाणार नाही.</translation> <translation id="4506176782989081258">प्रमाणीकरण एरर: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">सिस्टम प्रशासकाशी संपर्क साधणे</translation> <translation id="450710068430902550">प्रशासकासह शेअर करीत आहे</translation> @@ -756,6 +759,7 @@ <translation id="5786044859038896871">तुम्ही तुमची कार्ड माहिती भरू इच्छित आहात?</translation> <translation id="5798683403665926540">Chrome सेटिंग्जमध्ये होम पेज बदला</translation> <translation id="5803412860119678065">तुम्ही तुमचे <ph name="CARD_DETAIL" /> भरू इच्छित आहात?</translation> +<translation id="5804241973901381774">परवानग्या</translation> <translation id="5810442152076338065">तुमचे <ph name="DOMAIN" /> वरील कनेक्शन अॉब्सोलीट सायफर सूट वापरून एंक्रिप्ट केलेले आहे.</translation> <translation id="5813119285467412249">&जोडा पुन्हा करा</translation> <translation id="5838278095973806738">या साइटवर कोणतीही संवेदनशील माहिती (उदाहरणार्थ, पासवर्ड किंवा क्रेडिट कार्ड) एंटर करू नका, कारण आक्रमणकर्ते ती चोरू शकतात.</translation> @@ -777,6 +781,7 @@ <translation id="5967592137238574583">संपर्क माहिती संपादित करा</translation> <translation id="5967867314010545767">इतिहासातून काढून टाका</translation> <translation id="5975083100439434680">झूम कमी करा</translation> +<translation id="5977976211062815271">या डिव्हाइसवरील</translation> <translation id="598637245381783098">पेमेंट ॲप उघडू शकत नाही</translation> <translation id="5989320800837274978">निश्चित प्रॉक्सी सर्व्हर किंवा .pac स्क्रिप्ट URL देखील निर्दिष्ट केलेली नाही.</translation> <translation id="5990559369517809815">सर्व्हरला केल्या जाणार्या विनंत्या एका विस्ताराने अवरोधित केल्या गेल्या आहेत.</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><शोध संज्ञा एंटर करा></translation> <translation id="671076103358959139">नोंदणी टोकन:</translation> <translation id="6711464428925977395">प्रॉक्सी सर्व्हरमध्ये काहीतरी चुकीचे आहे किंवा पत्ता चुकीचा आहे.</translation> +<translation id="6723740634201835758">तुमच्या Google खात्यामध्ये</translation> <translation id="674375294223700098">अज्ञात सर्व्हर सर्टिफिकेट एरर.</translation> <translation id="6744009308914054259">कनेक्शनची वाट पाहत असताना, तुम्ही ऑफलाइन लेख वाचण्यासाठी डाउनलोडवर जाऊ शकता.</translation> <translation id="6753269504797312559">धोरण मूल्य</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">निःशब्द करा (डीफॉल्ट)</translation> <translation id="6984479912851154518">बाह्य अॅप्लिकेशनने पैसे भरण्यासाठी खाजगी मोड सोडत आहे. सुरू ठेवायचे का?</translation> <translation id="6989763994942163495">प्रगत सेटिंग्ज दर्शवा...</translation> +<translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" />चे नेहमी भाषांतर करा</translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">हे शुल्क एकाच वेळी द्यायचे किंवा आवर्ती असू शकतात आणि स्पष्ट नसू शकतात.</translation> <translation id="7029809446516969842">पासवर्ड</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb index 73d08739..29f59cc 100644 --- a/components/strings/components_strings_ms.xtb +++ b/components/strings/components_strings_ms.xtb
@@ -761,6 +761,7 @@ <translation id="5786044859038896871">Adakah anda ingin mengisi maklumat kad anda?</translation> <translation id="5798683403665926540">Tukar halaman utama dalam tetapan Chrome</translation> <translation id="5803412860119678065">Adakah anda ingin mengisi <ph name="CARD_DETAIL" /> anda?</translation> +<translation id="5804241973901381774">Kebenaran</translation> <translation id="5810442152076338065">Sambungan anda ke <ph name="DOMAIN" /> disulitkan menggunakan suit sifer yang sudah usang.</translation> <translation id="5813119285467412249">&Buat Semula Tambahkan</translation> <translation id="5838278095973806738">Anda tidak seharusnya memasukkan sebarang maklumat sensitif pada tapak ini (contohnya, kata laluan atau maklumat kad kredit) kerana maklumat ini boleh dicuri oleh penyerang.</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb index 234094d..f3d99a0 100644 --- a/components/strings/components_strings_nl.xtb +++ b/components/strings/components_strings_nl.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Ophaaltijd</translation> <translation id="1662550410081243962">Betaalmethoden toevoegen en invullen</translation> <translation id="1663943134801823270">Kaarten en adressen zijn afkomstig uit Chrome. Je kunt ze beheren in <ph name="BEGIN_LINK" />Instellingen<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Pagina's in het <ph name="SOURCE_LANGUAGE" /> worden vanaf nu vertaald naar het <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898"><ph name="SITE" /> gebruikt gewoonlijk versleuteling om je gegevens te beschermen. Toen Google Chrome deze keer probeerde verbinding te maken met <ph name="SITE" />, retourneerde de website ongewone en onjuiste inloggegevens. Dit kan gebeuren als een aanvaller probeert zich als <ph name="SITE" /> voor te doen of als een wifi-inlogscherm de verbinding heeft verbroken. Je gegevens zijn nog steeds beveiligd omdat Google Chrome de verbinding heeft beëindigd voordat er gegevens konden worden uitgewisseld.</translation> <translation id="168841957122794586">Het servercertificaat bevat een zwakke cryptografische sleutel.</translation> <translation id="1697532407822776718">Je bent nu klaar!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Proxy is ingesteld op automatische configuratie.</translation> <translation id="2030481566774242610">Bedoelde je <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Controleer de proxy en firewall<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Pagina's in het <ph name="LANGUAGE" /> worden niet vertaald.</translation> <translation id="2053553514270667976">Postcode</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 suggestie}other{# suggesties}}</translation> <translation id="2068663545051464999">Crashrapport-ID <ph name="CRASH_ID" /> geüpload (lokale context: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -561,6 +563,7 @@ <translation id="4434045419905280838">Pop-ups en omleidingen</translation> <translation id="443673843213245140">Het gebruik van een proxy is uitgeschakeld, maar er is wel een expliciete proxyconfiguratie opgegeven.</translation> <translation id="445100540951337728">Geaccepteerde betaalpassen</translation> +<translation id="4482953324121162758">Deze site wordt niet vertaald.</translation> <translation id="4506176782989081258">Validatiefout: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Neem contact op met de systeembeheerder</translation> <translation id="450710068430902550">Delen met beheerder</translation> @@ -752,6 +755,7 @@ <translation id="5786044859038896871">Wil je de gegevens van je creditcard laten invullen?</translation> <translation id="5798683403665926540">De homepage wijzigen in de Chrome-instellingen</translation> <translation id="5803412860119678065">Wil je de gegevens van je <ph name="CARD_DETAIL" /> laten invullen?</translation> +<translation id="5804241973901381774">Rechten</translation> <translation id="5810442152076338065">Je verbinding met <ph name="DOMAIN" /> is versleuteld via een verouderde Cipher Suite.</translation> <translation id="5813119285467412249">&Opnieuw toevoegen</translation> <translation id="5838278095973806738">Je moet geen gevoelige gegevens (zoals wachtwoorden of creditcards) opgeven op deze site omdat ze kunnen worden gestolen door aanvallers.</translation> @@ -773,6 +777,7 @@ <translation id="5967592137238574583">Contactgegevens bewerken</translation> <translation id="5967867314010545767">Verwijderen uit geschiedenis</translation> <translation id="5975083100439434680">Uitzoomen</translation> +<translation id="5977976211062815271">Op dit apparaat</translation> <translation id="598637245381783098">Kan betaal-app niet openen</translation> <translation id="5989320800837274978">Er worden geen vaste proxyservers en geen pac-script-URL gespecificeerd.</translation> <translation id="5990559369517809815">Verzoeken aan de server zijn door een extensie geblokkeerd.</translation> @@ -869,6 +874,7 @@ <translation id="6710594484020273272"><Typ een zoekterm></translation> <translation id="671076103358959139">Inschrijftoken:</translation> <translation id="6711464428925977395">Er is iets mis met de proxyserver of het adres is onjuist.</translation> +<translation id="6723740634201835758">In je Google-account</translation> <translation id="674375294223700098">Onbekende fout met servercertificaat.</translation> <translation id="6744009308914054259">Terwijl je op een verbinding wacht, kun je naar Downloads gaan om offline artikelen te lezen.</translation> <translation id="6753269504797312559">Beleidswaarde</translation> @@ -909,6 +915,7 @@ <translation id="6979440798594660689">Dempen (standaard)</translation> <translation id="6984479912851154518">Je verlaat de privémodus om te betalen via een externe app. Doorgaan?</translation> <translation id="6989763994942163495">Geavanceerde instellingen weergeven...</translation> +<translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> altijd vertalen</translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Deze kosten kunnen eenmalig of terugkerend zijn en zijn mogelijk niet duidelijk.</translation> <translation id="7029809446516969842">Wachtwoorden</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb index 9939fdf..bae2010 100644 --- a/components/strings/components_strings_no.xtb +++ b/components/strings/components_strings_no.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Henting</translation> <translation id="1662550410081243962">Lagre og fyll ut betalingsmåter</translation> <translation id="1663943134801823270">Kortene og adressene er fra Chrome. Du kan administrere dem i <ph name="BEGIN_LINK" />Innstillinger<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Fra nå av oversettes sider på <ph name="SOURCE_LANGUAGE" /> til <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898"><ph name="SITE" /> bruker vanligvis kryptering for å beskytte informasjonen din. Da Chrome prøvde å koble til <ph name="SITE" /> denne gangen, sendte nettstedet tilbake uvanlig og feil legitimasjon. Dette kan skje hvis en angriper prøver å utgi seg for å være <ph name="SITE" />, eller hvis en Wi-Fi-påloggingsskjerm har avbrutt tilkoblingen. Informasjonen din er likevel sikker fordi Chrome stoppet tilkoblingen før det ble utvekslet noen data.</translation> <translation id="168841957122794586">Tjenersertifikatet inneholder en svak kryptografisk nøkkel.</translation> <translation id="1697532407822776718">Da er alt klart!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Mellomtjeneren er innstilt på automatisk konfigurasjon.</translation> <translation id="2030481566774242610">Mener du <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Sjekk proxy-tjeneren og brannmuren<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Sider på <ph name="LANGUAGE" /> oversettes ikke.</translation> <translation id="2053553514270667976">Postnummer</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 forslag}other{# forslag}}</translation> <translation id="2068663545051464999">ID-en for den opplastede programstopprapporten <ph name="CRASH_ID" /> (lokal kontekst: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Forgrunnsvinduer/viderekoblinger</translation> <translation id="443673843213245140">Bruk av mellomtjener er deaktivert, men det er angitt en uttrykkelig mellomtjenerkonfigurasjon.</translation> <translation id="445100540951337728">Godkjente debetkort</translation> +<translation id="4482953324121162758">Dette nettstedet oversettes ikke.</translation> <translation id="4506176782989081258">Valideringsfeil: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Kontakt systemadministratoren</translation> <translation id="450710068430902550">Deling med administratoren</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">Vil du fylle ut kortinformasjonen?</translation> <translation id="5798683403665926540">Endre startsiden i Chrome-innstillingene</translation> <translation id="5803412860119678065">Vil du fylle ut informasjonen knyttet til <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Tillatelser</translation> <translation id="5810442152076338065">Tilkoblingen til <ph name="DOMAIN" /> er kryptert med en foreldet chifferserie.</translation> <translation id="5813119285467412249">&Legg til likevel</translation> <translation id="5838278095973806738">Du bør ikke oppgi sensitiv informasjon på dette nettstedet (for eksempel passord eller kredittkort) fordi den kan bli stjålet av angripere.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">Endre kontaktinformasjonen</translation> <translation id="5967867314010545767">Fjern fra loggen</translation> <translation id="5975083100439434680">Zoom ut</translation> +<translation id="5977976211062815271">På denne enheten</translation> <translation id="598637245381783098">Kan ikke åpne betalingsappen</translation> <translation id="5989320800837274978">Verken statiske proxytjenere eller en nettadresse med .pac-skript er angitt.</translation> <translation id="5990559369517809815">Forespørsler til tjeneren har blitt blokkert av en utvidelse.</translation> @@ -807,7 +812,7 @@ <translation id="614940544461990577">Prøv dette:</translation> <translation id="6151417162996330722">Tjenersertifikatet har en gyldighetsperiode som er for lang.</translation> <translation id="6157877588268064908">For å se fraktmetoder og -krav, velg en adresse</translation> -<translation id="6165508094623778733">Les mer</translation> +<translation id="6165508094623778733">Finn ut mer</translation> <translation id="6169916984152623906">Nå kan du surfe privat. Andre som bruker denne enheten, ser ikke aktiviteten din, men nedlastinger og bokmerker blir lagret.</translation> <translation id="6177128806592000436">Tilkoblingen til dette nettstedet er ikke sikker</translation> <translation id="6203231073485539293">Kontrollér Internett-tilkoblingen</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><Skriv inn en søketerm></translation> <translation id="671076103358959139">Registreringstoken:</translation> <translation id="6711464428925977395">Det er noe galt med proxy-tjeneren, eller adressen er feil.</translation> +<translation id="6723740634201835758">I Google-kontoen din</translation> <translation id="674375294223700098">Ukjent feil med tjenersertifikat.</translation> <translation id="6744009308914054259">Mens du venter på å koble til, kan du gå til Nedlastinger for å lese artikler uten nett.</translation> <translation id="6753269504797312559">Retningslinjeverdi</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">Kutt lyden (standard)</translation> <translation id="6984479912851154518">Går ut av privatmodus for å betale via en ekstern app. Vil du fortsette?</translation> <translation id="6989763994942163495">Vis avanserte innstillinger</translation> +<translation id="6996312675313362352">Oversett alltid <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Disse belastningene kan skje én gang eller være gjentakende, og det er ikke sikkert de er åpenbare.</translation> <translation id="7029809446516969842">Passord</translation>
diff --git a/components/strings/components_strings_pl.xtb b/components/strings/components_strings_pl.xtb index e51e943..52fbde1 100644 --- a/components/strings/components_strings_pl.xtb +++ b/components/strings/components_strings_pl.xtb
@@ -760,6 +760,7 @@ <translation id="5786044859038896871">Chcesz wpisać dane swojej karty?</translation> <translation id="5798683403665926540">Stronę główną możesz zmienić w ustawieniach Chrome</translation> <translation id="5803412860119678065">Chcesz wpisać dane swojej karty (<ph name="CARD_DETAIL" />)?</translation> +<translation id="5804241973901381774">Uprawnienia</translation> <translation id="5810442152076338065">Połączenie z <ph name="DOMAIN" /> jest szyfrowane przy użyciu przestarzałego zestawu szyfrów.</translation> <translation id="5813119285467412249">&Ponów dodanie</translation> <translation id="5838278095973806738">Nie podawaj żadnych informacji poufnych (takich jak hasła czy karty kredytowe) w tej witrynie, bo osoby atakujące będą mogły je wykraść.</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb index 8df2308..4bd2dce 100644 --- a/components/strings/components_strings_pt-BR.xtb +++ b/components/strings/components_strings_pt-BR.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Retirada</translation> <translation id="1662550410081243962">Salvar e preencher as formas de pagamento</translation> <translation id="1663943134801823270">Os cartões e os endereços vieram do Chrome. É possível gerenciar essas opções em <ph name="BEGIN_LINK" />Configurações<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Páginas em <ph name="SOURCE_LANGUAGE" /> serão traduzidas para <ph name="TARGET_LANGUAGE" /> de agora em diante.</translation> <translation id="1676269943528358898">O site <ph name="SITE" /> geralmente usa criptografia para proteger suas informações. Quando o Google Chrome tentou se conectar a <ph name="SITE" /> dessa vez, o website retornou credenciais incomuns e incorretas. Isso pode acontecer quando um invasor está fingindo ser <ph name="SITE" /> ou quando uma tela de login por Wi-Fi interrompeu a conexão. Suas informações ainda estão protegidas, porque o Google Chrome interrompeu a conexão antes que os dados fossem trocados.</translation> <translation id="168841957122794586">O certificado do servidor contém uma chave de criptografia fraca.</translation> <translation id="1697532407822776718">Pronto.</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">O proxy está configurado em configuração automática.</translation> <translation id="2030481566774242610">Você quis dizer <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Verificar o proxy e o firewall<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Páginas em <ph name="LANGUAGE" /> não serão traduzidas.</translation> <translation id="2053553514270667976">CEP</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 sugestão}one{# sugestão}other{# sugestões}}</translation> <translation id="2068663545051464999">Upload do relatório de erros <ph name="CRASH_ID" /> concluído (Contexto local: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Pop-ups e redirecionamentos</translation> <translation id="443673843213245140">O uso de um proxy está desativado, mas uma configuração explícita de proxy é especificada.</translation> <translation id="445100540951337728">Cartões de débito aceitos</translation> +<translation id="4482953324121162758">Este site não será traduzido.</translation> <translation id="4506176782989081258">Erro de validação: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Entrar em contato com o administrador do sistema</translation> <translation id="450710068430902550">Compartilhar com o administrador</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">Quer preencher as informações do cartão?</translation> <translation id="5798683403665926540">Altere a página inicial nas configurações do Chrome</translation> <translation id="5803412860119678065">Quer preencher as informações do seu cartão <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Permissões</translation> <translation id="5810442152076338065">Sua conexão com <ph name="DOMAIN" /> está criptografada com um pacote de criptografia obsoleto.</translation> <translation id="5813119285467412249">&Refazer adicionar</translation> <translation id="5838278095973806738">Você não deve fornecer nenhuma informação confidencial nesse site (por exemplo, senhas ou cartões de crédito), porque elas podem ser roubadas por invasores.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">Edite as Informações de Contato</translation> <translation id="5967867314010545767">Remover do histórico</translation> <translation id="5975083100439434680">Diminuir zoom</translation> +<translation id="5977976211062815271">Neste dispositivo</translation> <translation id="598637245381783098">Não foi possível abrir app de pagamento</translation> <translation id="5989320800837274978">Nem os servidores proxy fixos nem o URL de script .pac foram especificados.</translation> <translation id="5990559369517809815">Solicitações ao servidor foram bloqueadas por uma extensão.</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><Digitar termo de pesquisa></translation> <translation id="671076103358959139">Token de inscrição:</translation> <translation id="6711464428925977395">Há algo errado com o servidor proxy, ou o endereço está incorreto.</translation> +<translation id="6723740634201835758">Na Conta do Google</translation> <translation id="674375294223700098">Erro, certificado de servidor desconhecido.</translation> <translation id="6744009308914054259">Enquanto espera por uma conexão, acesse "Downloads" para ler artigos off-line.</translation> <translation id="6753269504797312559">Valor da política</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">Desativar som (padrão)</translation> <translation id="6984479912851154518">Saindo do modo privado para fazer um pagamento com um aplicativo externo. Continuar?</translation> <translation id="6989763994942163495">Mostrar configurações avançadas...</translation> +<translation id="6996312675313362352">Sempre traduzir <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Essas cobranças podem ser únicas ou recorrentes e talvez não sejam óbvias.</translation> <translation id="7029809446516969842">Senhas</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb index f73f7f7..70b2011 100644 --- a/components/strings/components_strings_pt-PT.xtb +++ b/components/strings/components_strings_pt-PT.xtb
@@ -760,6 +760,7 @@ <translation id="5786044859038896871">Pretende preencher as informações do cartão?</translation> <translation id="5798683403665926540">Alterar página inicial nas definições do Chrome</translation> <translation id="5803412860119678065">Pretende preencher o seu cartão <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Permissões</translation> <translation id="5810442152076338065">A sua ligação a <ph name="DOMAIN" /> está encriptada através de um conjunto de cifras obsoleto.</translation> <translation id="5813119285467412249">&Refazer adição</translation> <translation id="5838278095973806738">Não deve introduzir informações confidenciais neste site (por exemplo, palavras-passe ou números de cartões de crédito), porque podem ser roubadas por atacantes.</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb index 503b432..0cf53ae 100644 --- a/components/strings/components_strings_ro.xtb +++ b/components/strings/components_strings_ro.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Preluare</translation> <translation id="1662550410081243962">Salvează și completează metodele de plată</translation> <translation id="1663943134801823270">Cardurile și adresele sunt din Chrome. Le poți gestiona în <ph name="BEGIN_LINK" />Setări<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Paginile în <ph name="SOURCE_LANGUAGE" /> vor fi traduse în <ph name="TARGET_LANGUAGE" /> de acum înainte.</translation> <translation id="1676269943528358898">Site-ul <ph name="SITE" /> folosește în mod obișnuit criptarea pentru a-ți proteja informațiile. Când Google Chrome a încercat să se conecteze la <ph name="SITE" /> de această dată, site-ul a returnat date de conectare neobișnuite și incorecte. Acest lucru s-a întâmplat fie pentru că un atacator încearcă să falsifice site-ul <ph name="SITE" />, fie pentru că un ecran de conectare Wi-Fi a întrerupt conexiunea. Securitatea informațiilor tale nu a fost afectată, deoarece Google Chrome a oprit conexiunea înainte ca datele să fie transferate.</translation> <translation id="168841957122794586">Certificatul de server conține o cheie criptografică slabă.</translation> <translation id="1697532407822776718">Ești gata!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Proxy-ul este setat la Configurat automat.</translation> <translation id="2030481566774242610">Ați dorit să scrieți <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />să verifici proxy-ul și firewallul;<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Paginile în <ph name="LANGUAGE" /> nu vor fi traduse.</translation> <translation id="2053553514270667976">Cod zip</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 sugestie}few{# sugestii}other{# de sugestii}}</translation> <translation id="2068663545051464999">S-a încărcat Raportul de blocare cu ID-ul <ph name="CRASH_ID" /> (Context local: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Ferestre pop-up și redirecționări</translation> <translation id="443673843213245140">Utilizarea unui proxy este dezactivată, dar o configurare proxy este specificată în mod explicit.</translation> <translation id="445100540951337728">Carduri de debit acceptate</translation> +<translation id="4482953324121162758">Acest site nu va fi tradus.</translation> <translation id="4506176782989081258">Eroare de validare: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">să contactezi administratorul sistemului;</translation> <translation id="450710068430902550">Permiterea accesului pentru administrator</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">Dorești să completezi datele cardului de credit?</translation> <translation id="5798683403665926540">Schimbă Pagina principală în setările Chrome</translation> <translation id="5803412860119678065">Dorești să completezi datele <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Permisiuni</translation> <translation id="5810442152076338065">Conexiunea la <ph name="DOMAIN" /> este criptată folosind o suită de codificare învechită.</translation> <translation id="5813119285467412249">&Repetați adăugarea</translation> <translation id="5838278095973806738">Nu ar trebui să introduci informații sensibile pe acest site (de exemplu, parole sau carduri de credit), deoarece ar putea fi furate de atacatori.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">Editează informațiile de contact</translation> <translation id="5967867314010545767">Eliminați din istoric</translation> <translation id="5975083100439434680">Micșorează</translation> +<translation id="5977976211062815271">Pe acest dispozitiv</translation> <translation id="598637245381783098">Nu se poate deschide aplicația de plată</translation> <translation id="5989320800837274978">Nu sunt specificate nici servere proxy fixe și nici o adresă URL pentru scripturi .pac.</translation> <translation id="5990559369517809815">Solicitările trimise la server au fost blocate de o extensie.</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><Introdu termenul de căutare></translation> <translation id="671076103358959139">Indicativ de înregistrare:</translation> <translation id="6711464428925977395">A apărut o problemă la serverul proxy sau adresa nu este corectă.</translation> +<translation id="6723740634201835758">În Contul Google</translation> <translation id="674375294223700098">Eroare de certificat de server necunoscută.</translation> <translation id="6744009308914054259">În timp ce aștepți o conexiune, poți accesa Descărcările pentru a citi articole offline.</translation> <translation id="6753269504797312559">Valoarea politicii</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">Dezactivează sunetul (prestabilit)</translation> <translation id="6984479912851154518">Vei părăsi modul privat pentru a plăti folosind o aplicație externă. Continui?</translation> <translation id="6989763994942163495">Afișează setările avansate...</translation> +<translation id="6996312675313362352">Tradu întotdeauna din <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Aceste costuri pot fi unice sau recurente și ascunse.</translation> <translation id="7029809446516969842">Parole</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb index 47f198d5..2e5cf82 100644 --- a/components/strings/components_strings_ru.xtb +++ b/components/strings/components_strings_ru.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Получение</translation> <translation id="1662550410081243962">Сохранять и автоматически подставлять платежные данные</translation> <translation id="1663943134801823270">Карты и адреса, указанные в Chrome. Вы можете изменить их на странице <ph name="BEGIN_LINK" />Настройки<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Страницы на этом языке (<ph name="SOURCE_LANGUAGE" />) будут автоматически переводиться на <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898">На сайте <ph name="SITE" /> для защиты ваших данных обычно используется шифрование. Однако учетные данные, которые мы получили от сайта <ph name="SITE" /> сейчас, отличаются от тех, которые он отправляет обычно. Вероятно, вредоносный сайт пытается выдать себя за <ph name="SITE" />, либо страница подключения к сети Wi-Fi прервала соединение. Ваша информация по-прежнему в безопасности, так как браузер Google Chrome разорвал соединение до того, как произошел обмен данными.</translation> <translation id="168841957122794586">Сертификат сервера содержит ненадежный криптографический ключ.</translation> <translation id="1697532407822776718">Готово!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Прокси-сервер настраивается автоматически.</translation> <translation id="2030481566774242610">Возможно, вы имели в виду <ph name="LINK" />.</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Проверьте настройки прокси-сервера и брандмауэра<ph name="END_LINK" />.</translation> +<translation id="2053111141626950936">Страницы на этом языке (<ph name="LANGUAGE" />) не будут переводиться автоматически.</translation> <translation id="2053553514270667976">Почтовый индекс</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 вариант}one{# вариант}few{# варианта}many{# вариантов}other{# варианта}}</translation> <translation id="2068663545051464999">Идентификатор загруженного отчета о сбоях: <ph name="CRASH_ID" />. Локальный идентификатор сбоя: <ph name="CRASH_LOCAL_ID" />.</translation> @@ -565,6 +567,7 @@ <translation id="4434045419905280838">Всплывающие окна и переадресация</translation> <translation id="443673843213245140">Прокси-сервер отключен, но при этом его конфигурация задана явным образом.</translation> <translation id="445100540951337728">Дебетовые карты, которые принимаются к оплате</translation> +<translation id="4482953324121162758">Этот сайт не будет переводиться автоматически.</translation> <translation id="4506176782989081258">Ошибка проверки: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Обратитесь за помощью к системному администратору.</translation> <translation id="450710068430902550">Доступ администратора</translation> @@ -756,6 +759,7 @@ <translation id="5786044859038896871">Заполнить данные банковской карты?</translation> <translation id="5798683403665926540">Изменить главную страницу в настройках Chrome</translation> <translation id="5803412860119678065">Заполнить данные банковской карты <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Разрешения</translation> <translation id="5810442152076338065">Соединение с <ph name="DOMAIN" /> зашифровано с помощью устаревшего набора шифров.</translation> <translation id="5813119285467412249">&Повторить добавление</translation> <translation id="5838278095973806738">Не сообщайте этому сайту конфиденциальную информацию (например, пароли и номера банковских карт). К ней могут получить доступ злоумышленники.</translation> @@ -777,6 +781,7 @@ <translation id="5967592137238574583">Измените контактную информацию</translation> <translation id="5967867314010545767">Удалить из истории</translation> <translation id="5975083100439434680">Уменьшить</translation> +<translation id="5977976211062815271">На этом устройстве</translation> <translation id="598637245381783098">Не удалось открыть Payments</translation> <translation id="5989320800837274978">Ни фиксированные прокси-серверы, ни URL PAC-скриптов не указаны.</translation> <translation id="5990559369517809815">Расширение заблокировало отправку запроса на сервер.</translation> @@ -874,6 +879,7 @@ <translation id="6710594484020273272"><Введите поисковый запрос></translation> <translation id="671076103358959139">Токен регистрации:</translation> <translation id="6711464428925977395">На прокси-сервере возникла проблема или адрес указан неверно.</translation> +<translation id="6723740634201835758">В аккаунте Google</translation> <translation id="674375294223700098">Неизвестная ошибка сертификата сервера.</translation> <translation id="6744009308914054259">В ожидании подключения вы можете открыть скачанные файлы и почитать статьи офлайн.</translation> <translation id="6753269504797312559">Значение правила</translation> @@ -914,6 +920,7 @@ <translation id="6979440798594660689">Без звука (по умолчанию)</translation> <translation id="6984479912851154518">Вы выйдете из режима инкогнито, чтобы произвести оплату во внешнем приложении. Продолжить?</translation> <translation id="6989763994942163495">Показать дополнительные настройки</translation> +<translation id="6996312675313362352">Всегда переводить <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Списание может быть разовым или повторяющимся без каких-либо уведомлений.</translation> <translation id="7029809446516969842">Пароли</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb index 4ef9b2c..67f5da26 100644 --- a/components/strings/components_strings_sk.xtb +++ b/components/strings/components_strings_sk.xtb
@@ -756,6 +756,7 @@ <translation id="5786044859038896871">Chcete vyplniť informácie o karte?</translation> <translation id="5798683403665926540">Zmeniť domovskú stránku v nastaveniach Chromu</translation> <translation id="5803412860119678065">Chcete vyplniť informácie o karte <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Povolenia</translation> <translation id="5810442152076338065">Vaše pripojenie k doméne <ph name="DOMAIN" /> je šifrované pomocou zastaranej šifrovacej súpravy.</translation> <translation id="5813119285467412249">&Znova pridať</translation> <translation id="5838278095973806738">Na tomto webe by ste nemali zadávať citlivé informácie (napríklad heslá alebo kreditné karty), pretože by ich mohli ukradnúť útočníci.</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb index f6f3ee8..1b856af 100644 --- a/components/strings/components_strings_sl.xtb +++ b/components/strings/components_strings_sl.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Prevzem</translation> <translation id="1662550410081243962">Shranjevanje in izpolnjevanje plačilnih sredstev</translation> <translation id="1663943134801823270">Kartice in naslovi so iz Chroma. Upravljate jih lahko v <ph name="BEGIN_LINK" />nastavitvah<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Strani v jeziku <ph name="SOURCE_LANGUAGE" /> bodo odslej prevedene v jezik <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898">Spletno mesto <ph name="SITE" /> za zaščito vaših podatkov običajno uporablja šifriranje. Ko se je Google Chrome tokrat poskusil povezati s spletnim mestom <ph name="SITE" />, je to vrnilo nenavadne in nepravilne poverilnice. Do tega lahko pride, če se napadalec lažno predstavlja za spletno mesto <ph name="SITE" /> ali če je povezavo prekinil zaslon za prijavo v omrežje Wi-Fi. Vaši podatki so še vedno varni, saj je Google Chrome pred izmenjavo podatkov prekinil povezavo.</translation> <translation id="168841957122794586">Potrdilo strežnika vsebuje šibek šifrirni ključ.</translation> <translation id="1697532407822776718">Pripravljeni ste.</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Strežnik proxy je nastavljen na samodejno konfiguriranje.</translation> <translation id="2030481566774242610">Ali ste mislili <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />preveriti strežnik proxy in požarni zid<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Strani v jeziku <ph name="LANGUAGE" /> ne bodo prevedene.</translation> <translation id="2053553514270667976">Poštna številka</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 predlog}one{# predlog}two{# predloga}few{# predlogi}other{# predlogov}}</translation> <translation id="2068663545051464999">ID naloženega poročila o zrušitvah <ph name="CRASH_ID" /> (lokalni kontekst: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Pojavna okna in preusmeritve</translation> <translation id="443673843213245140">Uporaba strežnika proxy je onemogočena, vendar je njegova konfiguracija izrecno določena.</translation> <translation id="445100540951337728">Sprejete debetne kartice</translation> +<translation id="4482953324121162758">To spletno mesto ne bo prevedeno.</translation> <translation id="4506176782989081258">Napaka pri preverjanju veljavnosti: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">se obrniti na skrbnika sistema</translation> <translation id="450710068430902550">Deljenje s skrbnikom</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">Ali želite izpolniti podatke kreditne kartice?</translation> <translation id="5798683403665926540">Spremenite domačo stran v Chromovih nastavitvah</translation> <translation id="5803412860119678065">Ali želite izpolniti podatke za kartico <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Dovoljenja</translation> <translation id="5810442152076338065">Povezava z domeno <ph name="DOMAIN" /> je šifrirana z zastarelo šifrirno zbirko.</translation> <translation id="5813119285467412249">&Uveljavi dodajanje</translation> <translation id="5838278095973806738">Na tem spletnem mestu ne vnašajte občutljivih informacij (npr. gesel ali številk kreditnih kartic), ker jih lahko ukradejo napadalci.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">Urejanje podatkov o stiku</translation> <translation id="5967867314010545767">Odstrani iz zgodovine</translation> <translation id="5975083100439434680">Pomanjšaj</translation> +<translation id="5977976211062815271">V tej napravi</translation> <translation id="598637245381783098">Plačilne aplikacije ni mogoče odpreti</translation> <translation id="5989320800837274978">Določeni niso ne stalni strežniki proxy ne URL skripta .pac.</translation> <translation id="5990559369517809815">Zahteve za strežnik je blokirala razširitev.</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><Vnesite iskalno poizvedbo></translation> <translation id="671076103358959139">Žeton za včlanitev:</translation> <translation id="6711464428925977395">Nekaj je narobe s strežnikom proxy ali pa naslov ni pravilen.</translation> +<translation id="6723740634201835758">V računu za Google</translation> <translation id="674375294223700098">Neznana napaka potrdila strežnika.</translation> <translation id="6744009308914054259">Med čakanjem na povezavo lahko berete članke za branje brez povezave med prenosi.</translation> <translation id="6753269504797312559">Vrednost pravilnika</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">Izklop zvoka (privzeto)</translation> <translation id="6984479912851154518">Zaradi plačila v zunanji aplikaciji boste zapustili zasebni način. Želite nadaljevati?</translation> <translation id="6989763994942163495">Prikaži dodatne nastavitve ...</translation> +<translation id="6996312675313362352">Vedno prevedi ta jezik: <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Te bremenitve so lahko enkratne ali ponavljajoče se in morda niso očitne.</translation> <translation id="7029809446516969842">Gesla</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb index 1f1ea679..8f98b5f9 100644 --- a/components/strings/components_strings_sr.xtb +++ b/components/strings/components_strings_sr.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Преузимање</translation> <translation id="1662550410081243962">Чувај и уноси начине плаћања</translation> <translation id="1663943134801823270">Картице и адресе су из Chrome-а. Њима можете да управљате у <ph name="BEGIN_LINK" />подешавањима<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Странице на језику <ph name="SOURCE_LANGUAGE" /> се од сада преводе на <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898"><ph name="SITE" /> обично користи шифровање да би заштитио информације. Када је Google Chrome овог пута покушао да се повеже са <ph name="SITE" />, веб-сајт је вратио необичне и нетачне акредитиве. Или нападач покушава да се представи као <ph name="SITE" /> или је екран за Wi-Fi пријављивање прекинуо везу. Информације су и даље безбедне зато што је Google Chrome прекинуо везу пре него што су размењени било какви подаци.</translation> <translation id="168841957122794586">Сертификат сервера садржи слаб криптографски кључ.</translation> <translation id="1697532407822776718">Спремни сте!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Прокси је подешен да буде аутоматски конфигурисан.</translation> <translation id="2030481566774242610">Да ли сте мислили <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />да проверите прокси и заштитни зид<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Странице на језику <ph name="LANGUAGE" /> неће бити преведене.</translation> <translation id="2053553514270667976">Поштански број</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 предлог}one{# предлог}few{# предлога}other{# предлога}}</translation> <translation id="2068663545051464999">Отпремљен је ИД извештаја о отказивању <ph name="CRASH_ID" /> (локални контекст: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Искачући прозори и преусмеравања</translation> <translation id="443673843213245140">Коришћење проксија је онемогућено, али је наведена експлицитна конфигурација проксија.</translation> <translation id="445100540951337728">Дебитне картице које се прихватају</translation> +<translation id="4482953324121162758">Овај сајт неће бити преведен.</translation> <translation id="4506176782989081258">Грешка при потврди ваљаности: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">да контактирате администратора система</translation> <translation id="450710068430902550">Дељење са администратором</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">Желите ли да попуните информације о картици?</translation> <translation id="5798683403665926540">Промените почетну страницу у подешавањима Chrome-а</translation> <translation id="5803412860119678065">Желите ли да попуните подацима <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Дозволе</translation> <translation id="5810442152076338065">Веза са доменом <ph name="DOMAIN" /> је шифрована помоћу застарелог пакета за шифровање.</translation> <translation id="5813119285467412249">&Понови додавање</translation> <translation id="5838278095973806738">Немојте да уносите осетљиве информације на овом сајту (на пример, лозинке или кредитне картице) јер нападачи могу да их украду.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">Измените контакт информације</translation> <translation id="5967867314010545767">Уклони из историје</translation> <translation id="5975083100439434680">Умањивање</translation> +<translation id="5977976211062815271">На овом уређају</translation> <translation id="598637245381783098">Отварање апликације за плаћање није успело</translation> <translation id="5989320800837274978">Нису наведени ни фиксни прокси сервери нити URL адреса .pac скрипте.</translation> <translation id="5990559369517809815">Додатак је блокирао захтеве упућене серверу.</translation> @@ -874,6 +879,7 @@ <translation id="6710594484020273272"><Унесите термин за претрагу></translation> <translation id="671076103358959139">Токен за регистрацију:</translation> <translation id="6711464428925977395">Нешто није у реду са прокси сервером или је адреса нетачна.</translation> +<translation id="6723740634201835758">На Google налогу</translation> <translation id="674375294223700098">Непозната грешка сертификата сервера.</translation> <translation id="6744009308914054259">Док чекате на везу, посетите Преузимања и читајте офлајн чланке.</translation> <translation id="6753269504797312559">Вредност смерница</translation> @@ -914,6 +920,7 @@ <translation id="6979440798594660689">Искључен (подразумевано)</translation> <translation id="6984479912851154518">Напустићете режим приватног прегледања да бисте платили у спољној апликацији. Желите ли да наставите?</translation> <translation id="6989763994942163495">Прикажи напредна подешавања...</translation> +<translation id="6996312675313362352">Увек преводи <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Те наплате могу да буду једнократне или периодичне и можда нису одмах видљиве.</translation> <translation id="7029809446516969842">Лозинке</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb index 9c2b604..adfac1c 100644 --- a/components/strings/components_strings_sv.xtb +++ b/components/strings/components_strings_sv.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Upphämtning</translation> <translation id="1662550410081243962">Spara och fyll i betalningsmetoder</translation> <translation id="1663943134801823270">Kort och adresser har hämtats från Chrome. Du hanterar dessa under <ph name="BEGIN_LINK" />Inställningar<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Sidor på <ph name="SOURCE_LANGUAGE" /> översätts till <ph name="TARGET_LANGUAGE" /> från och med nu.</translation> <translation id="1676269943528358898">På <ph name="SITE" /> används vanligtvis kryptering (SSL) för att skydda din information. När Chrome försökte ansluta till <ph name="SITE" /> den här gången skickade webbplatsen tillbaka ovanliga och felaktiga uppgifter. Sådant kan hända när en angripare utger sig för att vara <ph name="SITE" /> eller när anslutningen har avbrutits av en Wi-Fi-inloggningsskärm. Din information är fortfarande säker eftersom Chrome avbröt anslutningen innan någon data utbyttes.</translation> <translation id="168841957122794586">Servercertifikatet innehåller en svag kryptografisk nyckel.</translation> <translation id="1697532407822776718">Färdigt!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Proxyn är inställd på automatisk konfiguration.</translation> <translation id="2030481566774242610">Menade du <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />kontrollera proxyn och brandväggen<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Sidor på <ph name="LANGUAGE" /> översätts inte.</translation> <translation id="2053553514270667976">ZIP</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 förslag}other{# förslag}}</translation> <translation id="2068663545051464999">Id för den uppladdade felrapporten <ph name="CRASH_ID" /> (Lokala: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Popup-fönster och omdirigeringar</translation> <translation id="443673843213245140">Användning av proxy är inaktiverad men en explicit proxykonfiguration har angetts.</translation> <translation id="445100540951337728">Godkända betalkort</translation> +<translation id="4482953324121162758">Den här webbplatsen översätts inte.</translation> <translation id="4506176782989081258">Valideringsfel: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">kontakta systemadministratören</translation> <translation id="450710068430902550">Delad med en administratör</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">Vill du att kortuppgifterna ska fyllas i?</translation> <translation id="5798683403665926540">Ändra startsida i Chrome-inställningarna</translation> <translation id="5803412860119678065">Vill du att uppgifterna om <ph name="CARD_DETAIL" /> ska fyllas i?</translation> +<translation id="5804241973901381774">Behörigheter</translation> <translation id="5810442152076338065">Anslutningen till <ph name="DOMAIN" /> är krypterad med en gammal krypteringssvit.</translation> <translation id="5813119285467412249">&Gör om Lägg till</translation> <translation id="5838278095973806738">Du bör inte ange några känsliga uppgifter på den här webbplatsen (till exempel lösenord eller kreditkortsuppgifter) eftersom hackare kan stjäla dem.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">Redigera kontaktuppgifter</translation> <translation id="5967867314010545767">Ta bort från historiken</translation> <translation id="5975083100439434680">Zooma ut</translation> +<translation id="5977976211062815271">På den här enheten</translation> <translation id="598637245381783098">Det gick inte att öppna betalningsappen</translation> <translation id="5989320800837274978">Varken fasta proxyservrar eller en webbadress med PAC-skript har angetts.</translation> <translation id="5990559369517809815">Förfrågningar till servern har blockerats av ett tillägg.</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><Ange sökterm></translation> <translation id="671076103358959139">Registreringstoken:</translation> <translation id="6711464428925977395">Något är fel med proxyservern eller så är adressen felaktig.</translation> +<translation id="6723740634201835758">I Google-kontot</translation> <translation id="674375294223700098">Fel - okänt servercertifikat.</translation> <translation id="6744009308914054259">Du kan öppna Nedladdningar och läsa artiklar offline medan du väntar på anslutningen.</translation> <translation id="6753269504797312559">Policyvärde</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">Ljud av (standard)</translation> <translation id="6984479912851154518">Om du betalar i en extern app sker inte det i privat läge. Vill du fortsätta?</translation> <translation id="6989763994942163495">Visa avancerade inställningar ...</translation> +<translation id="6996312675313362352">Översätt alltid <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Debiteringen kan göras en gång eller återkommande och det behöver inte framgå tydligt att detta händer.</translation> <translation id="7029809446516969842">Lösenord</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb index 50ad6be..d404921 100644 --- a/components/strings/components_strings_sw.xtb +++ b/components/strings/components_strings_sw.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Muda wa kuabiri gari</translation> <translation id="1662550410081243962">Hifadhi na ujaze njia za kulipa</translation> <translation id="1663943134801823270">Kadi na anwani zinatoka Chrome. Unaweza kuzidhibiti kwenye <ph name="BEGIN_LINK" />Mipangilio<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Itatafsiri kurasa za <ph name="SOURCE_LANGUAGE" /> katika <ph name="TARGET_LANGUAGE" /> kuanzia sasa.</translation> <translation id="1676269943528358898">Kwa kawaida <ph name="SITE" /> hutumia usimbaji fiche ili kulinda maelezo yako. Google Chrome ilipojaribu kuunganisha kwenye <ph name="SITE" /> wakati huu, tovuti ilituma kitambulisho kisicho cha kawaida na kisicho sahihi. Hili linaweza kutokea mvamizi anapojaribu kujifanya kuwa <ph name="SITE" />, au uchanganuzi wa kuingia katika Wi-Fi umeingilia muunganisho. Maelezo yako yangali salama kwa sababu Google Chrome ilisimamisha muunganisho kabla data yoyote itumwe.</translation> <translation id="168841957122794586">Cheti cha seva kina kitufe dhaifu cha kifichua msimbo.</translation> <translation id="1697532407822776718">Mko tayari nyote!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Proksi imewekwa katika usanidi otomatiki.</translation> <translation id="2030481566774242610">Je, ulimaanisha <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Kuangalia seva mbadala na kinga mtandao<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Haitatafsiri kurasa za <ph name="LANGUAGE" />.</translation> <translation id="2053553514270667976">Msimbo wa eneo</translation> <translation id="2064691555167957331">{COUNT,plural, =1{Pendekezo 1}other{Mapendekezo #}}</translation> <translation id="2068663545051464999">Kitambulisho cha Ripoti Iliyopakiwa ya Kuacha Kufanya Kazi <ph name="CRASH_ID" /> (Maudhui ya Ndani: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Madirisha ibukizi/kuelekeza kwingine</translation> <translation id="443673843213245140">Matumizi ya proksi yamelemazwa lakini usanidi wa proksi wazi umebainishwa.</translation> <translation id="445100540951337728">Kadi za malipo zinazokubaliwa</translation> +<translation id="4482953324121162758">Haitatafsiri tovuti hii.</translation> <translation id="4506176782989081258">Hitilafu ya uthibitishaji: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Kuwasiliana na msimamizi wa mfumo</translation> <translation id="450710068430902550">Kushiriki na Msimamizi</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">Ungependa kujaza maelezo ya kadi yako?</translation> <translation id="5798683403665926540">Badilisha ukurasa wa kwanza katika mipangilio ya Chrome</translation> <translation id="5803412860119678065">Ungependa kujaza maelezo ya <ph name="CARD_DETAIL" /> yako?</translation> +<translation id="5804241973901381774">Idhini</translation> <translation id="5810442152076338065">Muunganisho wako kwenye <ph name="DOMAIN" /> umesimbwa kwa njia fiche kwa kutumia mipangilio ya kriptografia ya zamani.</translation> <translation id="5813119285467412249">Rudia Kuongeza</translation> <translation id="5838278095973806738">Hupaswi kuweka maelezo nyeti kwenye tovuti hii (kwa mfano, manenosiri au kadi za mikopo), kwa sababu wavamizi wanaweza kuyaiba.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">Badilisha Maelezo ya Mawasiliano</translation> <translation id="5967867314010545767">Ondoa kwenye historia</translation> <translation id="5975083100439434680">Fifiza</translation> +<translation id="5977976211062815271">Kwenye kifaa hiki</translation> <translation id="598637245381783098">Imeshindwa kufungua programu ya kulipa</translation> <translation id="5989320800837274978">Siyo seva proksi za kudumu wala URL ya hati ya .pac zimebainishwa.</translation> <translation id="5990559369517809815">Maombi katika seva yamezuiwa kwa kiendelezi.</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><Andika neno unalotaka kutafuta></translation> <translation id="671076103358959139">Tokeni ya Kujiandikisha:</translation> <translation id="6711464428925977395">Kuna hitilafu katika seva mbadala, au anwani siyo sahihi.</translation> +<translation id="6723740634201835758">Katika Akaunti yako ya Google</translation> <translation id="674375294223700098">Hitilafu isiyojulikana ya cheti cha seva.</translation> <translation id="6744009308914054259">Wakati unasubiri muunganisho, unaweza kutembelea Vipakuliwa ili usome makala yaliyo nje ya mtandao.</translation> <translation id="6753269504797312559">Thamani ya sera</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">Zima (chaguomsingi)</translation> <translation id="6984479912851154518">Unafunga hali ya faragha ili ulipe kupitia programu ya nje. Ungependa kuendelea?</translation> <translation id="6989763994942163495">Onyesha mipangilio ya kina...</translation> +<translation id="6996312675313362352">Tafsiri <ph name="ORIGINAL_LANGUAGE" /> kila wakati</translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Gharama hizi zinaweza kuwa za mara moja au za kujirudia na huenda zisiwe za moja kwa moja.</translation> <translation id="7029809446516969842">Manenosiri</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb index 67d715c4..847a593 100644 --- a/components/strings/components_strings_ta.xtb +++ b/components/strings/components_strings_ta.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">பிக்கப்</translation> <translation id="1662550410081243962">கட்டண முறைகளைச் சேமித்துத் தானாக நிரப்பு</translation> <translation id="1663943134801823270">கார்டுகளும் முகவரிகளும் Chrome இலிருந்து பெறப்பட்டவையாகும். <ph name="BEGIN_LINK" />அமைப்புகளில்<ph name="END_LINK" /> அவற்றை நிர்வகிக்கலாம்.</translation> +<translation id="1671391448414634642"><ph name="SOURCE_LANGUAGE" /> மொழியிலுள்ள பக்கங்கள் இப்போது முதல் <ph name="TARGET_LANGUAGE" /> மொழியில் மொழிபெயர்க்கப்படும்.</translation> <translation id="1676269943528358898">வழக்கமாக, <ph name="SITE" /> உங்கள் தகவலைப் பாதுகாப்பதற்காக முறைமையாக்கத்தைப் பயன்படுத்துகிறது. இந்த முறை <ph name="SITE" /> உடன் இணைவதற்கு Google Chrome முயற்சித்தபோது வழக்கத்திற்கு மாறான மற்றும் தவறான நற்சான்றிதழ்களை இணையதளம் வழங்கியது. தாக்குபவர் தன்னை <ph name="SITE" /> ஆகக் காட்ட முயற்சிக்கும் போது அல்லது இணைப்பை வைஃபை உள்நுழைவுத் திரை குறுக்கிடும் போது இது ஏற்படலாம். இருப்பினும், தரவு எதுவும் பரிமாற்றப்படுவதற்கு முன் Google Chrome இணைப்பை நிறுத்தியதால் உங்கள் தகவல் பாதுகாப்பாகவே இருக்கிறது.</translation> <translation id="168841957122794586">சேவையக சான்றிதழில் வலுவற்ற குறியீட்டாக்க விசை இருக்கிறது.</translation> <translation id="1697532407822776718">எல்லாவற்றையும் அமைத்துவிட்டீர்கள்!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">ப்ராக்ஸி, தானியங்கி உள்ளமைவுக்கு அமைக்கப்பட்டுள்ளது</translation> <translation id="2030481566774242610"><ph name="LINK" /> ஐக் குறிப்பிடுகிறீர்களா?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />ப்ராக்ஸி மற்றும் ஃபயர்வாலைச் சரிபார்த்தல்<ph name="END_LINK" /></translation> +<translation id="2053111141626950936"><ph name="LANGUAGE" /> மொழியில் உள்ள பக்கங்கள் மொழிபெயர்க்கப்படாது.</translation> <translation id="2053553514270667976">ஜிப் குறியீடு</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 பரிந்துரை}other{# பரிந்துரைகள்}}</translation> <translation id="2068663545051464999">பதிவேற்றப்பட்ட சிதைவு அறிக்கை ஐடி <ph name="CRASH_ID" /> (அகச் சூழல்: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -562,6 +564,7 @@ <translation id="4434045419905280838">பாப் அப்கள் & திசைதிருப்புதல்கள்</translation> <translation id="443673843213245140">ப்ராக்ஸி பயன்பாடு முடக்கப்பட்டுள்ளது. ஆனால் வெளிப்படையான ப்ராக்ஸி உள்ளமைவு குறிப்பிடப்பட்டுள்ளது.</translation> <translation id="445100540951337728">ஏற்கப்படும் டெபிட் கார்டுகள்</translation> +<translation id="4482953324121162758">இந்தத் தளம் மொழிபெயர்க்கப்படாது.</translation> <translation id="4506176782989081258">சரிபார்ப்புப் பிழை: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">கணினி நிர்வாகியைத் தொடர்புகொள்ளுதல்</translation> <translation id="450710068430902550">நிர்வாகியுடன் பகிர்பவை</translation> @@ -753,6 +756,7 @@ <translation id="5786044859038896871">கார்டு தகவலை நிரப்ப விரும்புகிறீர்களா?</translation> <translation id="5798683403665926540">Chrome அமைப்புகளில் முகப்புப் பக்கத்தை மாற்றவும்</translation> <translation id="5803412860119678065"><ph name="CARD_DETAIL" />ஐ நிரப்ப விரும்புகிறீர்களா?</translation> +<translation id="5804241973901381774">அனுமதிகள்</translation> <translation id="5810442152076338065"><ph name="DOMAIN" />க்கான உங்கள் இணைப்பு, நடைமுறையில் இல்லாத சைபர் சூட்டைப் பயன்படுத்தி என்க்ரிப்ட் செய்யப்பட்டது.</translation> <translation id="5813119285467412249">&சேர்த்தலை மீண்டும் செய்</translation> <translation id="5838278095973806738">தீங்கிழைப்பவர்கள் திருடிவிடலாம் என்பதால், இந்தத் தளத்தில் முக்கியத் தகவலை (எடுத்துக்காட்டு: கடவுச்சொற்கள் அல்லது கிரெடிட் கார்டுகள்) உள்ளிட வேண்டாம்.</translation> @@ -774,6 +778,7 @@ <translation id="5967592137238574583">தொடர்புத் தகவலைத் திருத்தவும்</translation> <translation id="5967867314010545767">வரலாற்றிலிருந்து அகற்று</translation> <translation id="5975083100439434680">சிறிதாக்கு</translation> +<translation id="5977976211062815271">இந்தச் சாதனத்தில்</translation> <translation id="598637245381783098">பேமெண்ட் பயன்பாட்டைத் திறக்க முடியவில்லை</translation> <translation id="5989320800837274978">ப்ராக்ஸி சேவையகம் சரிசெய்யப்படவும் இல்லை .pac ஸ்கிரிப்ட் URL குறிப்பிடப்படவுமில்லை.</translation> <translation id="5990559369517809815">சேவையகத்திற்கான கோரிக்கைகள் நீட்டிப்பினால் தடுக்கப்பட்டது.</translation> @@ -870,6 +875,7 @@ <translation id="6710594484020273272"><தேடல் வார்த்தையை உள்ளிடுக></translation> <translation id="671076103358959139">பதிவு டோக்கன்:</translation> <translation id="6711464428925977395">ப்ராக்ஸி சர்வரில் ஏதோ தவறு உள்ளது அல்லது முகவரி தவறாக உள்ளது.</translation> +<translation id="6723740634201835758">உங்கள் Google கணக்கில்</translation> <translation id="674375294223700098">தெரியாத சேவையகச் சான்றிதழ் பிழை.</translation> <translation id="6744009308914054259">இணைப்புக்காகக் காத்திருக்கும்போது ஆஃப்லைன் கட்டுரைகளைப் படிக்க, ‘பதிவிறக்கங்கள்’ என்பதைப் பார்க்கவும்.</translation> <translation id="6753269504797312559">கொள்கை மதிப்பு</translation> @@ -910,6 +916,7 @@ <translation id="6979440798594660689">முடக்கு (இயல்பு)</translation> <translation id="6984479912851154518">மூன்றாம் தரப்பு ஆப்ஸின் மூலம் பணத்தைச் செலுத்த, மறைநிலையிலிருந்து வெளியேறுகிறது. தொடரவா?</translation> <translation id="6989763994942163495">மேம்பட்ட அமைப்புகளைக் காண்பி...</translation> +<translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> மொழியிலிருந்து எப்போதும் மொழிபெயர்</translation> <translation id="7012363358306927923">சீனா UnionPay</translation> <translation id="7016992613359344582">இந்தக் கட்டணங்கள் ஒருமுறை அல்லது தொடர்ந்து வசூலிக்கப்படலாம், அவை வெளிப்படையாகத் தெரிவிக்கப்படாமல் இருக்கலாம்.</translation> <translation id="7029809446516969842">கடவுச்சொற்கள்</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb index 5ac8a6a..a17e8d6 100644 --- a/components/strings/components_strings_te.xtb +++ b/components/strings/components_strings_te.xtb
@@ -128,6 +128,7 @@ <translation id="1656489000284462475">పికప్</translation> <translation id="1662550410081243962">చెల్లింపు పద్ధతులను సేవ్ చేసి, పూరించండి</translation> <translation id="1663943134801823270">కార్డ్లు మరియు చిరునామాలు Chrome నుండి పొందినవి. మీరు <ph name="BEGIN_LINK" />సెట్టింగ్లు<ph name="END_LINK" />లో వాటిని నిర్వహించవచ్చు.</translation> +<translation id="1671391448414634642">ఇప్పటి నుండి <ph name="SOURCE_LANGUAGE" /> భాషలో ఉన్న పేజీలు <ph name="TARGET_LANGUAGE" /> భాషలోకి అనువదించబడతాయి.</translation> <translation id="1676269943528358898"><ph name="SITE" /> సాధారణంగా మీ సమాచారాన్ని రక్షించడానికి ఎన్క్రిప్షన్ను ఉపయోగిస్తుంది. Google Chrome ఈసారి <ph name="SITE" />కు కనెక్ట్ చేయడానికి ప్రయత్నించినప్పుడు, వెబ్సైట్ అసాధారణ మరియు తప్పు ఆధారాలు అని ప్రతిస్పందించింది. దాడి చేసే వ్యక్తి <ph name="SITE" />గా వ్యవహరించి మోసగించడానికి ప్రయత్నిస్తున్నప్పుడు లేదా Wi-Fi సైన్-ఇన్ స్క్రీన్ కనెక్షన్కు అంతరాయం కలిగించినప్పుడు ఇలా జరగవచ్చు. Google Chrome, డేటా వినిమయం జరగక ముందే కనెక్షన్ను ఆపివేసినందున మీ సమాచారం ఇప్పటికీ సురక్షితంగానే ఉంది.</translation> <translation id="168841957122794586">సర్వర్ ప్రమాణపత్రం బలహీన క్రిప్టోగ్రాఫిక్ కీని కలిగి ఉంది.</translation> <translation id="1697532407822776718">మీరు సిద్ధంగా ఉన్నారు!</translation> @@ -181,6 +182,7 @@ <translation id="2025186561304664664">ప్రాక్సీ స్వయంచాలకంగా కాన్ఫిగర్ చేయబడేలా సెట్ చేయబడింది.</translation> <translation id="2030481566774242610">మీ ఉద్దేశ్యం <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />ప్రాక్సీ మరియు ఫైర్వాల్ను తనిఖీ చేయడం<ph name="END_LINK" /></translation> +<translation id="2053111141626950936"><ph name="LANGUAGE" /> భాషలో ఉన్న పేజీలు అనువదించబడవు.</translation> <translation id="2053553514270667976">జిప్ కోడ్</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 సూచన}other{# సూచనలు}}</translation> <translation id="2068663545051464999">అప్లోడ్ చేసిన క్రాష్ నివేదిక ID <ph name="CRASH_ID" /> (స్థానిక సందర్భం: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -246,7 +248,7 @@ <translation id="2465655957518002998">బట్వాడా పద్ధతిని ఎంచుకోండి</translation> <translation id="2467694685043708798"><ph name="BEGIN_LINK" />నెట్వర్క్ సమస్య విశ్లేషణలను అమలు చేయడం<ph name="END_LINK" /></translation> <translation id="2473195200299095979">ఈ పేజీని అనువదించండి</translation> -<translation id="2479410451996844060">చెల్లని శోధన URL.</translation> +<translation id="2479410451996844060">శోధన URL చెల్లదు.</translation> <translation id="2482878487686419369">ప్రకటనలు</translation> <translation id="248348093745724435">మెషీన్ విధానాలు</translation> <translation id="2491120439723279231">సర్వర్ యొక్క ప్రమాణపత్రంలో లోపాలు ఉన్నాయి.</translation> @@ -349,7 +351,7 @@ <translation id="3154506275960390542">ఈ పేజీలో ఉన్న ఫారమ్ని సురక్షితంగా సమర్పించలేకపోవచ్చు. బదిలీ చేయబడే సమయంలో మీరు పంపే డేటాని ఇతరులు వీక్షించవచ్చు లేదా సర్వర్ స్వీకరించే డేటాని మార్చడం కోసం హ్యాకర్లు దీనిని సవరించవచ్చు.</translation> <translation id="3157931365184549694">పునరుద్ధరించు</translation> <translation id="3162559335345991374">మీరు ఉపయోగిస్తున్న Wi-Fiకి మీరు దాని లాగిన్ పేజీని సందర్శించడం అవసరం.</translation> -<translation id="3167968892399408617">మీరు అజ్ఞాత ట్యాబ్ల్లో వీక్షించిన పేజీలు మీ అన్ని అజ్ఞాత ట్యాబ్లను మూసివేసిన అనంతరం మీ బ్రౌజర్ చరిత్ర, కుక్కీ స్టోర్ లేదా శోధన చరిత్రలో ఉంచబడవు. మీరు డౌన్లోడ్ చేసే ఏవైనా ఫైల్లు లేదా మీరు సృష్టించే ఏవైనా బుక్మార్క్లు అలాగే ఉంచబడతాయి.</translation> +<translation id="3167968892399408617">మీరు అజ్ఞాత ట్యాబ్లలో వీక్షించిన పేజీలు మీ అన్ని అజ్ఞాత ట్యాబ్లను మూసివేసిన తర్వాత, మీ బ్రౌజర్ చరిత్ర, కుక్కీ స్టోర్ లేదా శోధన చరిత్రలో ఉంచబడవు. మీరు డౌన్లోడ్ చేసే ఏవైనా ఫైల్లు లేదా మీరు సృష్టించే ఏవైనా బుక్మార్క్లు అలాగే ఉంచబడతాయి.</translation> <translation id="3169472444629675720">కనుగొను</translation> <translation id="3174168572213147020">దీవి</translation> <translation id="3176929007561373547">ప్రాక్సీ సర్వర్ పని చేస్తున్నట్లు నిర్ధారించుకోవడానికి మీ ప్రాక్సీ సెట్టింగ్లను తనిఖీ చేయండి లేదా @@ -565,6 +567,7 @@ <translation id="4434045419905280838">పాప్-అప్లు మరియు మళ్లింపులు</translation> <translation id="443673843213245140">ప్రాక్సీని ఉపయోగించడం ఆపివేయబడింది కానీ స్పష్టమైన ప్రాక్సీ కాన్ఫిగరేషన్ పేర్కొనబడింది.</translation> <translation id="445100540951337728">ఆమోదించబడిన డెబిట్ కార్డ్లు</translation> +<translation id="4482953324121162758">ఈ సైట్ అనువదించబడదు.</translation> <translation id="4506176782989081258">ధృవీకరణ లోపం: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">సిస్టమ్ నిర్వాహకుడిని సంప్రదించడం</translation> <translation id="450710068430902550">నిర్వాహకుడితో భాగస్వామ్యం</translation> @@ -756,6 +759,7 @@ <translation id="5786044859038896871">మీరు మీ కార్డ్ సమాచారం పూరించాలనుకుంటున్నారా?</translation> <translation id="5798683403665926540">Chrome సెట్టింగ్లలో హోమ్ పేజీని మార్చండి</translation> <translation id="5803412860119678065">మీరు మీ <ph name="CARD_DETAIL" /> కార్డ్ సమాచారం పూరించాలనుకుంటున్నారా?</translation> +<translation id="5804241973901381774">అనుమతులు</translation> <translation id="5810442152076338065"><ph name="DOMAIN" />కు గల మీ కనెక్షన్ వాడుకలో లేని సైఫర్ సూట్ ఉపయోగించి ఎన్క్రిప్ట్ చేయబడింది.</translation> <translation id="5813119285467412249">&జోడించడాన్ని పునరావృతం చేయి</translation> <translation id="5838278095973806738">మీరు ఈ సైట్లో ఎలాంటి గోప్యమైన సమాచారాన్ని నమోదు చేయకూడదు (ఉదాహరణకు, పాస్వర్డ్లు లేదా క్రెడిట్ కార్డ్లు), దాడికి పాల్పడే వారు ఆ సమాచారం దొంగిలించే అవకాశం ఉంటుంది.</translation> @@ -777,6 +781,7 @@ <translation id="5967592137238574583">సంప్రదింపు సమాచారాన్ని సవరించండి</translation> <translation id="5967867314010545767">చరిత్ర నుండి తీసివేయి</translation> <translation id="5975083100439434680">దూరంగా జూమ్ చెయ్యి</translation> +<translation id="5977976211062815271">ఈ పరికరంలో</translation> <translation id="598637245381783098">చెల్లింపు యాప్ను తెరవడం సాధ్యం కాదు</translation> <translation id="5989320800837274978">స్థిర ప్రాక్సీ సర్వర్లు లేదా ఒక .pac స్క్రిప్ట్ URL పేర్కొనబడలేదు.</translation> <translation id="5990559369517809815">సర్వర్కు అభ్యర్థనలను ఒక పొడిగింపు బ్లాక్ చేయబడ్డాయి.</translation> @@ -874,13 +879,14 @@ <translation id="6710594484020273272"><శోధన పదాన్ని టైప్ చేయండి></translation> <translation id="671076103358959139">నమోదు టోకెన్:</translation> <translation id="6711464428925977395">ప్రాక్సీ సర్వర్లో ఏదో తప్పు ఉంది లేదా చిరునామా సరైనది కాదు.</translation> +<translation id="6723740634201835758">మీ Google ఖాతాలో</translation> <translation id="674375294223700098">తెలియని సర్వర్ ప్రమాణపత్రం లోపం.</translation> <translation id="6744009308914054259">కనెక్షన్ కోసం వేచి ఉన్నప్పుడు, మీరు ఆఫ్లైన్ కథనాలను చదవడానికి డౌన్లోడ్లను సందర్శించవచ్చు.</translation> <translation id="6753269504797312559">విధానం విలువ</translation> <translation id="6757797048963528358">మీ పరికరం నిద్రావస్థకి వెళ్లింది.</translation> <translation id="6778737459546443941">మీ తల్లి/తండ్రి దీన్ని ఇంకా ఆమోదించలేదు</translation> <translation id="67862343314499040">నీలి ఊదా రంగు</translation> -<translation id="679355240208270552">విధానం ద్వారా డిఫాల్ట్ శోధన ప్రారంభం కానందున విస్మరించబడింది.</translation> +<translation id="679355240208270552">విధానం ప్రకారం, డిఫాల్ట్ శోధనను ప్రారంభించలేదు కాబట్టి, విస్మరించబడింది.</translation> <translation id="681021252041861472">అవసరమైన ఫీల్డ్</translation> <translation id="6810899417690483278">అనుకూలీకరణ ID</translation> <translation id="6824266427216888781">ప్రాంతాల డేటాను లోడ్ చేయడం విఫలమైంది</translation> @@ -914,6 +920,7 @@ <translation id="6979440798594660689">మ్యూట్ (డిఫాల్ట్)</translation> <translation id="6984479912851154518">బాహ్య అప్లికేషన్ ద్వారా చెల్లించడానికి ప్రైవేట్ మోడ్ నుండి నిష్క్రమిస్తోంది. కొనసాగించాలా?</translation> <translation id="6989763994942163495">అధునాతన సెట్టింగ్లను చూపించు...</translation> +<translation id="6996312675313362352">ఎల్లప్పుడూ <ph name="ORIGINAL_LANGUAGE" /> భాషలోది అనువదించు</translation> <translation id="7012363358306927923">చైనా యూనియన్ పే</translation> <translation id="7016992613359344582">ఈ ఛార్జ్లు ఒకే సారి చెల్లించేవి లేదా పునరావృతంగా చెల్లించాల్సినవి కావచ్చు మరియు స్పష్టంగా పేర్కొనబడకపోవచ్చు.</translation> <translation id="7029809446516969842">పాస్వర్డ్లు</translation> @@ -924,7 +931,7 @@ <translation id="7064851114919012435">సంప్రదింపు సమాచారం</translation> <translation id="7079718277001814089">ఈ సైట్లో మాల్వేర్ ఉంది</translation> <translation id="7087282848513945231">కౌంటి</translation> -<translation id="7090678807593890770"><ph name="LINK" /> కోసం Googleలో శోధించండి</translation> +<translation id="7090678807593890770"><ph name="LINK" /> కోసం Googleలో వెతకండి</translation> <translation id="7108338896283013870">దాచిపెట్టు</translation> <translation id="7108819624672055576">పొడిగింపు ద్వారా అనుమతించబడింది</translation> <translation id="7111012039238467737">(చెల్లుతుంది)</translation> @@ -975,7 +982,7 @@ <translation id="7390545607259442187">కార్డ్ని నిర్ధారించండి</translation> <translation id="7400418766976504921">URL</translation> <translation id="7407424307057130981"><p>మీ Windows కంప్యూటర్లో Superfish సాఫ్ట్వేర్ ఉన్నట్లయితే మీకు ఈ ఎర్రర్ కనిపిస్తుంది.</p> - <p>మీరు వెబ్లోకి వెళ్లడం కోసం, సాఫ్ట్వేర్ని తాత్కాలికంగా నిలిపివేయడానికి ఈ దశలను అనుసరించండి. మీ వద్ద నిర్వాహకుడి స్థాయి అధికారాలు ఉండాలి.</p> + <p>మీరు వెబ్లోకి వెళ్లడం కోసం, సాఫ్ట్వేర్ను తాత్కాలికంగా నిలిపివేయడానికి ఈ దశలను అనుసరించండి. మీ వద్ద నిర్వాహకుడి స్థాయి అధికారాలు ఉండాలి.</p> <ol> <li><strong>ప్రారంభించు</strong>ని క్లిక్ చేసి, ఆపై <strong>"స్థానిక సేవలను వీక్షించండి"</strong> కోసం వెతికి, దానిని ఎంచుకోండి <li><strong>VisualDiscovery</strong>ని ఎంచుకోండి
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb index 7052d4b4..7696533 100644 --- a/components/strings/components_strings_th.xtb +++ b/components/strings/components_strings_th.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">การรับ</translation> <translation id="1662550410081243962">บันทึกและกรอกวิธีการชำระเงิน</translation> <translation id="1663943134801823270">ข้อมูลบัตรและที่อยู่มาจาก Chrome คุณสามารถจัดการข้อมูลเหล่านี้ใน<ph name="BEGIN_LINK" />การตั้งค่า<ph name="END_LINK" /></translation> +<translation id="1671391448414634642">จากนี้ไประบบจะแปลหน้าภาษา<ph name="SOURCE_LANGUAGE" />เป็นภาษา<ph name="TARGET_LANGUAGE" /></translation> <translation id="1676269943528358898">โดยทั่วไป <ph name="SITE" /> จะใช้การเข้ารหัสเพื่อปกป้องข้อมูลของคุณ เมื่อ Google Chrome พยายามเชื่อมต่อกับ <ph name="SITE" /> ในครั้งนี้ เว็บไซต์ดังกล่าวส่งข้อมูลรับรองที่ผิดปกติและไม่ถูกต้องกลับมา เหตุการณ์นี้อาจเกิดขึ้นเมื่อผู้บุกรุกพยายามปลอมเป็น <ph name="SITE" /> หรือหน้าจอการลงชื่อเข้าใช้ Wi-Fi รบกวนการเชื่อมต่อ ข้อมูลของคุณยังปลอดภัยอยู่เนื่องจาก Google Chrome หยุดการเชื่อมต่อก่อนมีการแลกเปลี่ยนข้อมูล</translation> <translation id="168841957122794586">ใบรับรองของเซิร์ฟเวอร์มีคีย์การเข้ารหัสที่ไม่รัดกุม</translation> <translation id="1697532407822776718">คุณพร้อมแล้ว!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">พร็อกซีถูกตั้งค่าให้ทำการกำหนดค่าโดยอัตโนมัติ</translation> <translation id="2030481566774242610">หรือคุณหมายถึง <ph name="LINK" /></translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />ตรวจสอบพร็อกซีและไฟร์วอลล์<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">ระบบจะไม่แปลหน้าเว็บภาษา<ph name="LANGUAGE" /></translation> <translation id="2053553514270667976">รหัสไปรษณีย์</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 คำแนะนำ}other{# คำแนะนำ}}</translation> <translation id="2068663545051464999">อัปโหลดรหัสรายงานข้อขัดข้อง <ph name="CRASH_ID" /> แล้ว (บริบทเฉพาะรายการ: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -565,6 +567,7 @@ <translation id="4434045419905280838">ป๊อปอัปและการเปลี่ยนเส้นทาง</translation> <translation id="443673843213245140">การใช้พร็อกซีถูกปิดใช้งาน แต่มีการระบุการกำหนดค่าพร็อกซีอย่างชัดเจน</translation> <translation id="445100540951337728">บัตรเดบิตที่ยอมรับ</translation> +<translation id="4482953324121162758">ระบบจะไม่แปลเว็บไซต์นี้</translation> <translation id="4506176782989081258">ข้อผิดพลาดในการตรวจสอบ: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">ติดต่อผู้ดูแลระบบ</translation> <translation id="450710068430902550">การแชร์กับผู้ดูแลระบบ</translation> @@ -756,6 +759,7 @@ <translation id="5786044859038896871">คุณต้องการกรอกข้อมูลบัตรไหม</translation> <translation id="5798683403665926540">เปลี่ยนหน้าแรกในการตั้งค่า Chrome</translation> <translation id="5803412860119678065">คุณต้องการกรอกข้อมูล <ph name="CARD_DETAIL" /> ไหม</translation> +<translation id="5804241973901381774">การอนุญาต</translation> <translation id="5810442152076338065">มีการเข้ารหัสการเชื่อมต่อของคุณกับ <ph name="DOMAIN" /> ด้วยชุดการเข้ารหัสที่ล้าสมัยแล้ว</translation> <translation id="5813119285467412249">&ทำซ้ำการเพิ่ม</translation> <translation id="5838278095973806738">คุณไม่ควรป้อนข้อมูลที่ละเอียดอ่อนบนเว็บไซต์นี้ (ตัวอย่างเช่น รหัสผ่านหรือบัตรเครดิต) เนื่องจากผู้โจมตีอาจขโมยข้อมูลดังกล่าวไปได้</translation> @@ -777,6 +781,7 @@ <translation id="5967592137238574583">แก้ไขข้อมูลติดต่อ</translation> <translation id="5967867314010545767">ลบจากประวัติการเข้าชม</translation> <translation id="5975083100439434680">ย่อ</translation> +<translation id="5977976211062815271">ในอุปกรณ์นี้</translation> <translation id="598637245381783098">ไม่สามารถเปิดแอปการชำระเงิน</translation> <translation id="5989320800837274978">ไม่มีการระบุทั้งพร็อกซีเซิร์ฟเวอร์แบบคงที่หรือ URL สคริปต์ .pac</translation> <translation id="5990559369517809815">คำขอไปยังเซิร์ฟเวอร์ถูกบล็อกโดยส่วนขยาย</translation> @@ -874,6 +879,7 @@ <translation id="6710594484020273272"><พิมพ์ข้อความค้นหา></translation> <translation id="671076103358959139">โทเค็นการลงทะเบียน:</translation> <translation id="6711464428925977395">พร็อกซีเซิร์ฟเวอร์ผิดปกติหรือที่อยู่ไม่ถูกต้อง</translation> +<translation id="6723740634201835758">ในบัญชี Google</translation> <translation id="674375294223700098">ข้อผิดพลาดใบรับรองของเซิร์ฟเวอร์ที่ไม่รู้จัก</translation> <translation id="6744009308914054259">ระหว่างที่รอการเชื่อมต่อ คุณไปที่หน้า "ดาวน์โหลด" เพื่ออ่านบทความออฟไลน์ได้</translation> <translation id="6753269504797312559">ค่านโยบาย</translation> @@ -914,6 +920,7 @@ <translation id="6979440798594660689">ปิดเสียง (ค่าเริ่มต้น)</translation> <translation id="6984479912851154518">ออกจากโหมดส่วนตัวเพื่อชำระเงินผ่านแอปพลิเคชันภายนอก ดำเนินการต่อไหม</translation> <translation id="6989763994942163495">แสดงการตั้งค่าขั้นสูง...</translation> +<translation id="6996312675313362352">แปลภาษา<ph name="ORIGINAL_LANGUAGE" />เสมอ</translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">การเรียกเก็บเงินเหล่านี้อาจเกิดขึ้นครั้งเดียวหรือเป็นเกิดขึ้นซ้ำๆ และอาจไม่แสดงอย่างชัดแจ้ง</translation> <translation id="7029809446516969842">รหัสผ่าน</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb index 3664d73..8827435 100644 --- a/components/strings/components_strings_tr.xtb +++ b/components/strings/components_strings_tr.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Alma</translation> <translation id="1662550410081243962">Ödeme yöntemlerini kaydet ve doldur</translation> <translation id="1663943134801823270">Kartlar ve adresler Chrome'dan alınmaktadır. Bu bilgileri <ph name="BEGIN_LINK" />Ayarlar<ph name="END_LINK" />'dan yönetebilirsiniz.</translation> +<translation id="1671391448414634642"><ph name="SOURCE_LANGUAGE" /> dilindeki sayfalar artık <ph name="TARGET_LANGUAGE" /> diline çevrilecek</translation> <translation id="1676269943528358898"><ph name="SITE" /> normalde bilgilerinizi korumak için şifreleme kullanmaktadır. Google Chrome bu sefer <ph name="SITE" /> sitesine bağlanmayı denediğinde, web sitesi sıra dışı ve yanlış kimlik bilgileri döndürdü. Bir saldırgan <ph name="SITE" /> gibi davranmaya çalışıyor olabilir ya da bir Kablosuz oturum açma ekranı bağlantıyı kesmiştir. Google Chrome herhangi bir veri alışverişinden önce bağlantıyı durdurduğu için bilgileriniz hâlâ güvendedir.</translation> <translation id="168841957122794586">Sunucu sertifikasında zayıf bir şifreleme anahtarı var.</translation> <translation id="1697532407822776718">Artık hazırsınız!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Proxy, otomatik yapılandırıldı değerine ayarlandı.</translation> <translation id="2030481566774242610">Şunu mu demek istediniz?: <ph name="LINK" /></translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Proxy'yi ve güvenlik duvarını kontrol etme<ph name="END_LINK" /></translation> +<translation id="2053111141626950936"><ph name="LANGUAGE" /> dilindeki sayfalar çevrilmeyecek.</translation> <translation id="2053553514270667976">Posta kodu</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 öneri}other{# öneri}}</translation> <translation id="2068663545051464999">Yüklenen Kilitlenme Raporu Kimliği <ph name="CRASH_ID" /> (Yerel Bağlam: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Pop-up'lar ve yönlendirmeler</translation> <translation id="443673843213245140">Proxy kullanımı devre dışı, ancak açık bir proxy yapılandırması belirtildi.</translation> <translation id="445100540951337728">Kabul edilen banka kartları</translation> +<translation id="4482953324121162758">Bu site çevrilmeyecek.</translation> <translation id="4506176782989081258">Doğrulama hatası: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">Sistem yöneticisiyle iletişime geçme</translation> <translation id="450710068430902550">Yöneticiyle Paylaşma</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">Kart bilgilerinizin doldurulmasını istiyor musunuz?</translation> <translation id="5798683403665926540">Ana sayfayı Chrome ayarlarından değiştirin</translation> <translation id="5803412860119678065"><ph name="CARD_DETAIL" /> kartınıza ait bilgilerin doldurulmasını istiyor musunuz?</translation> +<translation id="5804241973901381774">İzinler</translation> <translation id="5810442152076338065"><ph name="DOMAIN" /> ile olan bağlantınız eski bir şifre seti kullanılarak şifrelendi.</translation> <translation id="5813119285467412249">Eklemeyi &Yeniden Yap</translation> <translation id="5838278095973806738">Bu sitede hiçbir hassas bilginizi (örneğin şifrelerinizi veya kredi kartı bilgilerinizi) girmemelisiniz. Aksi takdirde bu bilgiler saldırganlar tarafından çalınabilir.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">İletişim Bilgilerini Düzenleyin</translation> <translation id="5967867314010545767">Geçmişten kaldır.</translation> <translation id="5975083100439434680">Uzaklaştır</translation> +<translation id="5977976211062815271">Bu cihazda</translation> <translation id="598637245381783098">Ödeme uygulaması açılamıyor</translation> <translation id="5989320800837274978">Sabit proxy sunucular veya bir .pac komut dosyası URL'si belirtilmedi.</translation> <translation id="5990559369517809815">Sunucuya gönderilen istekler bir uzantı tarafından engellendi.</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><Arama terimini yazın></translation> <translation id="671076103358959139">Kayıt Jetonu:</translation> <translation id="6711464428925977395">Proxy sunucusunda bir sorun var veya adres yanlış.</translation> +<translation id="6723740634201835758">Google Hesabınızda</translation> <translation id="674375294223700098">Bilinmeyen sunucu sertifikası hatası.</translation> <translation id="6744009308914054259">Bağlantı kurulmasını beklerken çevrimdışı makaleleri okumak için İndirilenler bölümünü ziyaret edebilirsiniz.</translation> <translation id="6753269504797312559">Politika değeri</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">Sesi kapat (varsayılan)</translation> <translation id="6984479912851154518">Harici bir uygulama üzerinden ödeme gerçekleştirmek için gizli moddan çıkılacak. Devam edilsin mi?</translation> <translation id="6989763994942163495">Gelişmiş ayarları göster...</translation> +<translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> dilini daima çevir</translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Bu ödemeler bir defalık alınabileceği gibi yinelenen ödemeler de olabilir ve bu durum açıkça belli olmayabilir.</translation> <translation id="7029809446516969842">Şifreler</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb index 81c5b05..556398b0 100644 --- a/components/strings/components_strings_uk.xtb +++ b/components/strings/components_strings_uk.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">Отримання</translation> <translation id="1662550410081243962">Зберігати й заповнювати способи оплати</translation> <translation id="1663943134801823270">Дані картки та список адрес містяться в Chrome. Ними можна керувати в <ph name="BEGIN_LINK" />Налаштуваннях<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Надалі сторінки цією мовою (<ph name="SOURCE_LANGUAGE" />) перекладатимуться такою мовою: <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898">Веб-сайт <ph name="SITE" /> зазвичай використовує шифрування для захисту вашої інформації. Під час цієї спроби Chrome під’єднатися до сторінки <ph name="SITE" /> з неї отримано незвичні й неправильні облікові дані. Це може статися, коли зловмисник намагається видавати себе за веб-сайт <ph name="SITE" /> або з’єднання перервано екраном входу Wi-Fi. Ваша інформація залишається захищеною, оскільки Chrome припинив з’єднання до того, як почався обмін будь-якими даними.</translation> <translation id="168841957122794586">Сертифікат сервера містить слабкий криптографічний ключ.</translation> <translation id="1697532407822776718">Готово!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Проксі-сервер установлено на автоматичне налаштування.</translation> <translation id="2030481566774242610">Можливо, ви мали на увазі <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />перевірити проксі-сервер і брандмауер<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Сторінки цією мовою (<ph name="LANGUAGE" />) не перекладатимуться.</translation> <translation id="2053553514270667976">Поштовий індекс</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 пропозиція}one{# пропозиція}few{# пропозиції}many{# пропозицій}other{# пропозиції}}</translation> <translation id="2068663545051464999">Ідентифікатор завантаженого звіту про аварійне завершення роботи – <ph name="CRASH_ID" /> (Локальний контекст: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Спливаючі вікна й переадресація</translation> <translation id="443673843213245140">Використання проксі-сервера вимкнено, але чітко вказано налаштування проксі-сервера.</translation> <translation id="445100540951337728">Прийнятні дебетові картки</translation> +<translation id="4482953324121162758">Цей сайт не перекладатиметься.</translation> <translation id="4506176782989081258">Помилка перевірки: <ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">зв’язатися із системним адміністратором</translation> <translation id="450710068430902550">Надання інформації адміністратору</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">Ввести дані кредитної картки?</translation> <translation id="5798683403665926540">Змініть домашню сторінку в налаштуваннях Chrome</translation> <translation id="5803412860119678065">Ввести дані кредитної картки <ph name="CARD_DETAIL" />?</translation> +<translation id="5804241973901381774">Дозволи</translation> <translation id="5810442152076338065">З’єднання з доменом <ph name="DOMAIN" /> шифрується за допомогою застарілого набору шифрів.</translation> <translation id="5813119285467412249">&Повторити додавання</translation> <translation id="5838278095973806738">Не вводьте конфіденційну інформацію на цьому сайті (як-от паролі й дані кредитних карток). Зловмисники можуть викрасти її.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">Змініть контактну інформацію</translation> <translation id="5967867314010545767">Видалити з історії</translation> <translation id="5975083100439434680">Зменшити масштаб</translation> +<translation id="5977976211062815271">На цьому пристрої</translation> <translation id="598637245381783098">Неможливо відкрити додаток для платежів</translation> <translation id="5989320800837274978">Не вказано ні фіксованих проксі-серверів, ні URL-адрес сценарію .pac.</translation> <translation id="5990559369517809815">Надсилання запитів на сервер заблоковано розширенням.</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><Введіть пошуковий термін></translation> <translation id="671076103358959139">Маркер реєстрації:</translation> <translation id="6711464428925977395">Помилка проксі-сервера або неправильна адреса.</translation> +<translation id="6723740634201835758">В обліковому записі Google</translation> <translation id="674375294223700098">Помилка "Невідомий сертифікат сервера".</translation> <translation id="6744009308914054259">Очікуючи на з’єднання, можете перейти в папку "Завантаження" й переглянути статті, доступні в режимі офлайн.</translation> <translation id="6753269504797312559">Значення правила</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">Без звуку (за умовчанням)</translation> <translation id="6984479912851154518">Щоб оплатити в зовнішньому додатку, ви вийдете з приватного режиму. Продовжити?</translation> <translation id="6989763994942163495">Показати розширені налаштування...</translation> +<translation id="6996312675313362352">Завжди перекладати з такої мови: <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Такі стягнення можуть бути одноразовими чи регулярними й неочевидними.</translation> <translation id="7029809446516969842">Паролі</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb index 99b7ca3..f0ccb7f 100644 --- a/components/strings/components_strings_vi.xtb +++ b/components/strings/components_strings_vi.xtb
@@ -103,7 +103,7 @@ <translation id="1521655867290435174">Google Trang tính</translation> <translation id="1527263332363067270">Đang chờ kết nối…</translation> <translation id="1532118530259321453">Trang này cho biết</translation> -<translation id="153384715582417236">Hiện đã hoàn tất</translation> +<translation id="153384715582417236">Hiện chưa có nội dung</translation> <translation id="154408704832528245">Chọn địa chỉ giao hàng</translation> <translation id="1549470594296187301">Bạn phải bật JavaScript để sử dụng tính năng này.</translation> <translation id="1555130319947370107">Xanh lam</translation> @@ -129,6 +129,7 @@ <translation id="1656489000284462475">Nhận hàng</translation> <translation id="1662550410081243962">Lưu và điền phương thức thanh toán</translation> <translation id="1663943134801823270">Thẻ và địa chỉ từ Chrome. Bạn có thể quản lý thẻ và địa chỉ trong <ph name="BEGIN_LINK" />Cài đặt<ph name="END_LINK" />.</translation> +<translation id="1671391448414634642">Kể từ bây giờ trở đi, Trang viết bằng <ph name="SOURCE_LANGUAGE" /> sẽ được dịch sang <ph name="TARGET_LANGUAGE" />.</translation> <translation id="1676269943528358898"><ph name="SITE" /> thường sử dụng mã hóa để bảo vệ thông tin của bạn. Khi Google Chrome tìm cách kết nối với <ph name="SITE" /> tại thời điểm này, trang web đã gửi lại thông tin đăng nhập không chính xác và bất thường. Điều này có thể xảy ra khi kẻ tấn công đang cố gắng giả mạo là <ph name="SITE" /> hoặc màn hình đăng nhập Wi-Fi đã làm gián đoạn kết nối. Thông tin của bạn vẫn an toàn do Google Chrome đã ngừng kết nối trước khi bất kỳ dữ liệu nào được trao đổi.</translation> <translation id="168841957122794586">Chứng chỉ máy chủ chứa khóa mật mã yếu.</translation> <translation id="1697532407822776718">Bạn đã hoàn tất!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Proxy được đặt thành định cấu hình tự động.</translation> <translation id="2030481566774242610">Ý của bạn là <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Kiểm tra proxy và tường lửa<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">Các trang viết bằng <ph name="LANGUAGE" /> sẽ không được dịch.</translation> <translation id="2053553514270667976">Mã zip</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 đề xuất}other{# đề xuất}}</translation> <translation id="2068663545051464999">ID báo cáo sự cố đã tải lên <ph name="CRASH_ID" /> (Ngữ cảnh cục bộ: <ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">Cửa sổ bật lên và liên kết chuyển hướng</translation> <translation id="443673843213245140">Đã tắt sử dụng proxy nhưng cấu hình proxy rõ ràng được chỉ định.</translation> <translation id="445100540951337728">Thẻ ghi nợ được chấp nhận</translation> +<translation id="4482953324121162758">Trang web này sẽ không được dịch.</translation> <translation id="4506176782989081258">Lỗi xác thực: <ph name="VALIDATION_ERROR" />.</translation> <translation id="4506599922270137252">Liên hệ với quản trị viên hệ thống</translation> <translation id="450710068430902550">Chia sẻ với quản trị viên</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">Bạn có muốn điền thông tin thẻ của mình không?</translation> <translation id="5798683403665926540">Thay đổi trang chủ trong mục cài đặt của Chrome</translation> <translation id="5803412860119678065">Bạn có muốn điền <ph name="CARD_DETAIL" /> của mình không?</translation> +<translation id="5804241973901381774">Quyền</translation> <translation id="5810442152076338065">Kết nối của bạn tới <ph name="DOMAIN" /> được mã hóa bằng bộ số 0 đã lỗi thời.</translation> <translation id="5813119285467412249">&Làm lại thêm</translation> <translation id="5838278095973806738">Bạn không nên nhập bất kỳ thông tin nhạy cảm nào trên trang web này (ví dụ: mật khẩu hoặc thẻ tín dụng), vì những kẻ tấn công có thể đánh cắp thông tin đó.</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">Chỉnh sửa thông tin liên hệ</translation> <translation id="5967867314010545767">Xóa khỏi lịch sử</translation> <translation id="5975083100439434680">Thu nhỏ</translation> +<translation id="5977976211062815271">Trên thiết bị này</translation> <translation id="598637245381783098">Không thể mở ứng dụng thanh toán</translation> <translation id="5989320800837274978">Cả máy chủ proxy cố định và URL tập lệnh .pac đều chưa được chỉ định.</translation> <translation id="5990559369517809815">Tiện ích đã chặn yêu cầu tới máy chủ.</translation> @@ -825,7 +830,7 @@ <translation id="627746635834430766">Để thanh toán nhanh hơn vào lần tiếp theo, hãy lưu địa chỉ thanh toán và thẻ vào Tài khoản Google của bạn.</translation> <translation id="6280223929691119688">Không thể phân phối đến địa chỉ này. Chọn một địa chỉ khác.</translation> <translation id="6282194474023008486">Mã bưu chính</translation> -<translation id="6290238015253830360">Bài viết được đề xuất của bạn sẽ xuất hiện ở đây</translation> +<translation id="6290238015253830360">Bài viết đề xuất cho bạn sẽ xuất hiện ở đây</translation> <translation id="6302269476990306341">Trợ lý Google trong Chrome đang dừng</translation> <translation id="6305205051461490394">Không thể truy cập <ph name="URL" />.</translation> <translation id="6321917430147971392">Kiểm tra cài đặt DNS của bạn</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><Nhập cụm từ tìm kiếm></translation> <translation id="671076103358959139">Mã đăng ký:</translation> <translation id="6711464428925977395">Đã xảy ra sự cố với máy chủ proxy hoặc địa chỉ không chính xác.</translation> +<translation id="6723740634201835758">Trong Tài khoản Google của bạn</translation> <translation id="674375294223700098">Lỗi chứng chỉ máy chủ không xác định.</translation> <translation id="6744009308914054259">Trong khi chờ kết nối, bạn có thể chuyển đến phần Tài nguyên đã tải xuống để đọc các bài viết ngoại tuyến.</translation> <translation id="6753269504797312559">Giá trị chính sách</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">Tắt tiếng (mặc định)</translation> <translation id="6984479912851154518">Đang rời khỏi chế độ riêng tư để thanh toán qua một ứng dụng bên ngoài. Bạn có muốn tiếp tục không?</translation> <translation id="6989763994942163495">Hiển thị cài đặt nâng cao...</translation> +<translation id="6996312675313362352">Luôn dịch <ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">China UnionPay</translation> <translation id="7016992613359344582">Các khoản phí này có thể là khoản thu một lần hoặc định kỳ và có thể không rõ ràng.</translation> <translation id="7029809446516969842">Mật khẩu</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb index 2bf0ba49..b21bcc2 100644 --- a/components/strings/components_strings_zh-CN.xtb +++ b/components/strings/components_strings_zh-CN.xtb
@@ -36,7 +36,7 @@ <translation id="1165039591588034296">错误</translation> <translation id="1173894706177603556">重命名</translation> <translation id="1175364870820465910">打印(&P)...</translation> -<translation id="1181037720776840403">删除</translation> +<translation id="1181037720776840403">移除</translation> <translation id="1197088940767939838">橙色</translation> <translation id="1201402288615127009">下一页</translation> <translation id="1201895884277373915">来自该网站的更多内容</translation> @@ -129,6 +129,7 @@ <translation id="1656489000284462475">取货</translation> <translation id="1662550410081243962">保存并填写付款方式</translation> <translation id="1663943134801823270">信用卡选项和地址选项均来自 Chrome。您可在<ph name="BEGIN_LINK" />设置<ph name="END_LINK" />中管理这些选项。</translation> +<translation id="1671391448414634642">从现在开始,<ph name="SOURCE_LANGUAGE" />网页一律会被翻译成<ph name="TARGET_LANGUAGE" />。</translation> <translation id="1676269943528358898"><ph name="SITE" /> 通常会使用加密技术来保护您的信息。Google Chrome 此次尝试连接到 <ph name="SITE" /> 时,此网站发回了异常的错误凭据。这可能是因为有攻击者在试图冒充 <ph name="SITE" />,或 Wi-Fi 登录屏幕中断了此次连接。请放心,您的信息仍然是安全的,因为 Google Chrome 尚未进行任何数据交换便停止了连接。</translation> <translation id="168841957122794586">服务器证书包含弱加密密钥。</translation> <translation id="1697532407822776718">搞定了!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">代理已设为自动配置。</translation> <translation id="2030481566774242610">您是想访问<ph name="LINK" />吗?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />检查代理服务器和防火墙<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">系统不会翻译<ph name="LANGUAGE" />网页。</translation> <translation id="2053553514270667976">邮编</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 条建议}other{# 条建议}}</translation> <translation id="2068663545051464999">已上传的崩溃报告的 ID:<ph name="CRASH_ID" />(本地上下文:<ph name="CRASH_LOCAL_ID" />)</translation> @@ -562,6 +564,7 @@ <translation id="4434045419905280838">弹出式窗口和重定向</translation> <translation id="443673843213245140">已停用代理,但是指定了明确的代理配置。</translation> <translation id="445100540951337728">接受的借记卡</translation> +<translation id="4482953324121162758">系统不会翻译此网站。</translation> <translation id="4506176782989081258">验证错误:<ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">联系系统管理员</translation> <translation id="450710068430902550">与管理员分享</translation> @@ -753,6 +756,7 @@ <translation id="5786044859038896871">要填充您的信用卡信息吗?</translation> <translation id="5798683403665926540">在 Chrome 设置中更改主页</translation> <translation id="5803412860119678065">要填充您的“<ph name="CARD_DETAIL" />”吗?</translation> +<translation id="5804241973901381774">权限</translation> <translation id="5810442152076338065">您与 <ph name="DOMAIN" /> 之间的连接采用过时的加密套件进行了加密。</translation> <translation id="5813119285467412249">恢复添加(&R)</translation> <translation id="5838278095973806738">请勿在此网站上输入任何敏感信息(例如密码或信用卡信息),因为攻击者可能会盗取这些信息。</translation> @@ -774,6 +778,7 @@ <translation id="5967592137238574583">修改联系信息</translation> <translation id="5967867314010545767">从历史记录中移除</translation> <translation id="5975083100439434680">缩小</translation> +<translation id="5977976211062815271">在这部设备上</translation> <translation id="598637245381783098">无法打开付款应用</translation> <translation id="5989320800837274978">固定代理服务器和 .pac 脚本网址均未指定。</translation> <translation id="5990559369517809815">对服务器的请求已遭到某个扩展程序的阻止。</translation> @@ -870,6 +875,7 @@ <translation id="6710594484020273272"><输入搜索字词></translation> <translation id="671076103358959139">注册令牌:</translation> <translation id="6711464428925977395">代理服务器出现问题,或者地址有误。</translation> +<translation id="6723740634201835758">在您的 Google 帐号中</translation> <translation id="674375294223700098">未知的服务器证书错误。</translation> <translation id="6744009308914054259">在等待连接时,您可以前往“下载内容”页面阅读离线文章。</translation> <translation id="6753269504797312559">政策值</translation> @@ -910,6 +916,7 @@ <translation id="6979440798594660689">静音(默认)</translation> <translation id="6984479912851154518">即将退出无痕模式,以便通过外部应用付款。要继续吗?</translation> <translation id="6989763994942163495">显示高级设置...</translation> +<translation id="6996312675313362352">始终翻译<ph name="ORIGINAL_LANGUAGE" />内容</translation> <translation id="7012363358306927923">中国银联</translation> <translation id="7016992613359344582">这些费用可能只收取一次,也可能会周期性收取,而且可能不易察觉。</translation> <translation id="7029809446516969842">密码</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb index 6f0687a..f2ba1e5 100644 --- a/components/strings/components_strings_zh-TW.xtb +++ b/components/strings/components_strings_zh-TW.xtb
@@ -129,6 +129,7 @@ <translation id="1656489000284462475">取件</translation> <translation id="1662550410081243962">儲存及填入付款方式</translation> <translation id="1663943134801823270">信用卡和地址資訊皆來自 Chrome。你可以在<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />頁面管理這些資訊。</translation> +<translation id="1671391448414634642">從現在起,系統會將<ph name="SOURCE_LANGUAGE" />網頁翻譯成<ph name="TARGET_LANGUAGE" />。</translation> <translation id="1676269943528358898"><ph name="SITE" /> 通常使用加密方式保護您的資訊。但 Google Chrome 這次嘗試連線到 <ph name="SITE" /> 時,該網站傳回了異常且錯誤的憑證。這可能是因為有攻擊者企圖偽裝成 <ph name="SITE" />,或是受到 Wi-Fi 登入畫面影響而造成連線中斷。不過請放心,Google Chrome 已及時停止連線,並未傳輸任何資料,因此您的資訊仍然安全無虞。</translation> <translation id="168841957122794586">伺服器憑證含有防護力薄弱的加密編譯金鑰。</translation> <translation id="1697532407822776718">大功告成!</translation> @@ -182,6 +183,7 @@ <translation id="2025186561304664664">Proxy 已設為自動設定。</translation> <translation id="2030481566774242610">你要找的是 <ph name="LINK" /> 嗎?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />檢查 Proxy 和防火牆<ph name="END_LINK" /></translation> +<translation id="2053111141626950936">系統不會翻譯<ph name="LANGUAGE" />網頁。</translation> <translation id="2053553514270667976">郵遞區號</translation> <translation id="2064691555167957331">{COUNT,plural, =1{1 個建議項目}other{# 個建議項目}}</translation> <translation id="2068663545051464999">已上傳的當機報告 ID <ph name="CRASH_ID" /> (本機當機 ID:<ph name="CRASH_LOCAL_ID" />)</translation> @@ -566,6 +568,7 @@ <translation id="4434045419905280838">彈出式視窗與重新導向</translation> <translation id="443673843213245140">雖然已停用 Proxy,不過已指定明確 Proxy 設定。</translation> <translation id="445100540951337728">接受的簽帳金融卡</translation> +<translation id="4482953324121162758">系統不會翻譯這個網站。</translation> <translation id="4506176782989081258">驗證錯誤:<ph name="VALIDATION_ERROR" /></translation> <translation id="4506599922270137252">與系統管理員聯絡</translation> <translation id="450710068430902550">與管理員分享</translation> @@ -757,6 +760,7 @@ <translation id="5786044859038896871">要填入你的信用卡資訊嗎?</translation> <translation id="5798683403665926540">在 Chrome 設定中變更首頁</translation> <translation id="5803412860119678065">要填入你的 <ph name="CARD_DETAIL" /> 資訊嗎?</translation> +<translation id="5804241973901381774">權限</translation> <translation id="5810442152076338065">您的 <ph name="DOMAIN" /> 連線使用過舊的加密套件進行加密。</translation> <translation id="5813119285467412249">重做新增(&R)</translation> <translation id="5838278095973806738">請勿在這個網站上輸入任何機密資訊 (例如密碼或信用卡號碼),以免遭到攻擊者竊取。</translation> @@ -778,6 +782,7 @@ <translation id="5967592137238574583">編輯聯絡資訊</translation> <translation id="5967867314010545767">從記錄中移除</translation> <translation id="5975083100439434680">縮小</translation> +<translation id="5977976211062815271">在這部裝置上</translation> <translation id="598637245381783098">無法開啟付款應用程式</translation> <translation id="5989320800837274978">沒有指定固定的 Proxy 伺服器和 .pac 指令碼網址。</translation> <translation id="5990559369517809815">擴充功能已封鎖要傳送至伺服器的要求。</translation> @@ -875,6 +880,7 @@ <translation id="6710594484020273272"><輸入搜尋字詞></translation> <translation id="671076103358959139">註冊憑證:</translation> <translation id="6711464428925977395">Proxy 伺服器發生錯誤,或是位址不正確。</translation> +<translation id="6723740634201835758">在你的 Google 帳戶中</translation> <translation id="674375294223700098">不明的伺服器憑證錯誤。</translation> <translation id="6744009308914054259">等待連線的同時,你可以前往「下載」頁面閱讀離線文章。</translation> <translation id="6753269504797312559">政策值</translation> @@ -915,6 +921,7 @@ <translation id="6979440798594660689">靜音 (預設)</translation> <translation id="6984479912851154518">即將離開私密模式,改為使用外部應用程式付款,要繼續嗎?</translation> <translation id="6989763994942163495">顯示進階設定...</translation> +<translation id="6996312675313362352">一律翻譯<ph name="ORIGINAL_LANGUAGE" /></translation> <translation id="7012363358306927923">中國銀聯</translation> <translation id="7016992613359344582">這些費用可能只收取一次,也可能週期性收取,而且您可能不會注意到這筆費用。</translation> <translation id="7029809446516969842">密碼</translation>
diff --git a/components/sync/base/data_type_histogram.cc b/components/sync/base/data_type_histogram.cc index 0d75794..55743d7c 100644 --- a/components/sync/base/data_type_histogram.cc +++ b/components/sync/base/data_type_histogram.cc
@@ -26,3 +26,7 @@ kModelTypeCountHistogramPrefix + type_string; base::UmaHistogramCounts1M(full_histogram_name, count); } + +void SyncWalletDataRecordClearedEntitiesCount(size_t count) { + UMA_HISTOGRAM_COUNTS_100("Sync.Wallet.EntitiesClearedWhenDisabled", count); +}
diff --git a/components/sync/base/data_type_histogram.h b/components/sync/base/data_type_histogram.h index a341889..b87ac3c4 100644 --- a/components/sync/base/data_type_histogram.h +++ b/components/sync/base/data_type_histogram.h
@@ -21,6 +21,9 @@ void SyncRecordModelTypeCountHistogram(syncer::ModelType model_type, size_t count); +// Records that |count| entities have been cleared when disabling sync. +void SyncWalletDataRecordClearedEntitiesCount(size_t count); + // Helper macro for datatype specific histograms. For each datatype, invokes // a pre-defined PER_DATA_TYPE_MACRO(type_str), where |type_str| is the string // version of the datatype.
diff --git a/components/sync/base/sync_prefs.cc b/components/sync/base/sync_prefs.cc index daf2e5e..2b1eec11 100644 --- a/components/sync/base/sync_prefs.cc +++ b/components/sync/base/sync_prefs.cc
@@ -283,7 +283,10 @@ preferred_types.Put(type); } } - return ResolvePrefGroups(registered_types, preferred_types); + + preferred_types = ResolvePrefGroups(preferred_types); + preferred_types.RetainAll(registered_types); + return preferred_types; } void SyncPrefs::SetDataTypesConfiguration(bool keep_everything_synced, @@ -292,9 +295,10 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); pref_service_->SetBoolean(prefs::kSyncKeepEverythingSynced, keep_everything_synced); - ModelTypeSet preferred_types = - ResolvePrefGroups(registered_types, chosen_types); - DCHECK(registered_types.HasAll(preferred_types)); + + ModelTypeSet preferred_types = ResolvePrefGroups(chosen_types); + preferred_types.RetainAll(registered_types); + for (ModelType type : registered_types) { SetDataTypePreferred(type, preferred_types.Has(type)); } @@ -492,15 +496,13 @@ } // static -ModelTypeSet SyncPrefs::ResolvePrefGroups(ModelTypeSet registered_types, - ModelTypeSet types) { +ModelTypeSet SyncPrefs::ResolvePrefGroups(ModelTypeSet types) { ModelTypeSet types_with_groups = types; for (const auto& pref_group : ComputePrefGroups()) { if (types.Has(pref_group.first)) { types_with_groups.PutAll(pref_group.second); } } - types_with_groups.RetainAll(registered_types); return types_with_groups; }
diff --git a/components/sync/base/sync_prefs.h b/components/sync/base/sync_prefs.h index 50cf724..ab3a4599 100644 --- a/components/sync/base/sync_prefs.h +++ b/components/sync/base/sync_prefs.h
@@ -225,10 +225,9 @@ bool IsLocalSyncEnabled() const; // Returns a ModelTypeSet based on |types| expanded to include pref groups - // (see |pref_groups_|), but as a subset of |registered_types|. + // (see |pref_groups_|). // Exposed for testing. - static ModelTypeSet ResolvePrefGroups(ModelTypeSet registered_types, - ModelTypeSet types); + static ModelTypeSet ResolvePrefGroups(ModelTypeSet types); private: static void RegisterDataTypePreferredPref(
diff --git a/components/sync/driver/fake_generic_change_processor.cc b/components/sync/driver/fake_generic_change_processor.cc index 0694f0117..4492558 100644 --- a/components/sync/driver/fake_generic_change_processor.cc +++ b/components/sync/driver/fake_generic_change_processor.cc
@@ -12,14 +12,12 @@ namespace syncer { -FakeGenericChangeProcessor::FakeGenericChangeProcessor(ModelType type, - SyncClient* sync_client) +FakeGenericChangeProcessor::FakeGenericChangeProcessor(ModelType type) : GenericChangeProcessor(type, nullptr, base::WeakPtr<SyncableService>(), base::WeakPtr<SyncMergeResult>(), - nullptr, - sync_client), + nullptr), sync_model_has_user_created_nodes_(true), sync_model_has_user_created_nodes_success_(true) {} @@ -75,8 +73,7 @@ UserShare* user_share, std::unique_ptr<DataTypeErrorHandler> error_handler, const base::WeakPtr<SyncableService>& local_service, - const base::WeakPtr<SyncMergeResult>& merge_result, - SyncClient* sync_client) { + const base::WeakPtr<SyncMergeResult>& merge_result) { return std::move(processor_); }
diff --git a/components/sync/driver/fake_generic_change_processor.h b/components/sync/driver/fake_generic_change_processor.h index 0633e188..d72d66c1 100644 --- a/components/sync/driver/fake_generic_change_processor.h +++ b/components/sync/driver/fake_generic_change_processor.h
@@ -20,7 +20,7 @@ // A fake GenericChangeProcessor that can return arbitrary values. class FakeGenericChangeProcessor : public GenericChangeProcessor { public: - FakeGenericChangeProcessor(ModelType type, SyncClient* sync_client); + explicit FakeGenericChangeProcessor(ModelType type); ~FakeGenericChangeProcessor() override; // Setters for GenericChangeProcessor implementation results. @@ -52,8 +52,7 @@ UserShare* user_share, std::unique_ptr<DataTypeErrorHandler> error_handler, const base::WeakPtr<SyncableService>& local_service, - const base::WeakPtr<SyncMergeResult>& merge_result, - SyncClient* sync_client) override; + const base::WeakPtr<SyncMergeResult>& merge_result) override; private: std::unique_ptr<FakeGenericChangeProcessor> processor_;
diff --git a/components/sync/driver/generic_change_processor.cc b/components/sync/driver/generic_change_processor.cc index e349bd0..6b8acbb 100644 --- a/components/sync/driver/generic_change_processor.cc +++ b/components/sync/driver/generic_change_processor.cc
@@ -15,7 +15,6 @@ #include "base/threading/sequenced_task_runner_handle.h" #include "components/sync/base/unrecoverable_error_handler.h" #include "components/sync/driver/sync_api_component_factory.h" -#include "components/sync/driver/sync_client.h" #include "components/sync/model/local_change_observer.h" #include "components/sync/model/sync_change.h" #include "components/sync/model/sync_error.h" @@ -80,8 +79,7 @@ std::unique_ptr<DataTypeErrorHandler> error_handler, const base::WeakPtr<SyncableService>& local_service, const base::WeakPtr<SyncMergeResult>& merge_result, - UserShare* user_share, - SyncClient* sync_client) + UserShare* user_share) : ChangeProcessor(std::move(error_handler)), type_(type), local_service_(local_service),
diff --git a/components/sync/driver/generic_change_processor.h b/components/sync/driver/generic_change_processor.h index 6bebd9d..04e17608 100644 --- a/components/sync/driver/generic_change_processor.h +++ b/components/sync/driver/generic_change_processor.h
@@ -23,7 +23,6 @@ namespace syncer { -class SyncClient; class SyncData; class SyncableService; class WriteNode; @@ -51,8 +50,7 @@ std::unique_ptr<DataTypeErrorHandler> error_handler, const base::WeakPtr<SyncableService>& local_service, const base::WeakPtr<SyncMergeResult>& merge_result, - UserShare* user_share, - SyncClient* sync_client); + UserShare* user_share); ~GenericChangeProcessor() override; // ChangeProcessor interface.
diff --git a/components/sync/driver/generic_change_processor_factory.cc b/components/sync/driver/generic_change_processor_factory.cc index f08f2ca..acf7f40 100644 --- a/components/sync/driver/generic_change_processor_factory.cc +++ b/components/sync/driver/generic_change_processor_factory.cc
@@ -21,12 +21,10 @@ UserShare* user_share, std::unique_ptr<DataTypeErrorHandler> error_handler, const base::WeakPtr<SyncableService>& local_service, - const base::WeakPtr<SyncMergeResult>& merge_result, - SyncClient* sync_client) { + const base::WeakPtr<SyncMergeResult>& merge_result) { DCHECK(user_share); return std::make_unique<GenericChangeProcessor>( - type, std::move(error_handler), local_service, merge_result, user_share, - sync_client); + type, std::move(error_handler), local_service, merge_result, user_share); } } // namespace syncer
diff --git a/components/sync/driver/generic_change_processor_factory.h b/components/sync/driver/generic_change_processor_factory.h index be032d0..7196514 100644 --- a/components/sync/driver/generic_change_processor_factory.h +++ b/components/sync/driver/generic_change_processor_factory.h
@@ -15,7 +15,6 @@ namespace syncer { class GenericChangeProcessor; -class SyncClient; class SyncMergeResult; class SyncableService; struct UserShare; @@ -36,8 +35,7 @@ UserShare* user_share, std::unique_ptr<DataTypeErrorHandler> error_handler, const base::WeakPtr<SyncableService>& local_service, - const base::WeakPtr<SyncMergeResult>& merge_result, - SyncClient* sync_client); + const base::WeakPtr<SyncMergeResult>& merge_result); private: DISALLOW_COPY_AND_ASSIGN(GenericChangeProcessorFactory);
diff --git a/components/sync/driver/generic_change_processor_unittest.cc b/components/sync/driver/generic_change_processor_unittest.cc index 88896f3f..605a592 100644 --- a/components/sync/driver/generic_change_processor_unittest.cc +++ b/components/sync/driver/generic_change_processor_unittest.cc
@@ -14,7 +14,6 @@ #include "components/sync/base/model_type.h" #include "components/sync/device_info/local_device_info_provider.h" #include "components/sync/driver/data_type_manager.h" -#include "components/sync/driver/fake_sync_client.h" #include "components/sync/driver/sync_api_component_factory_mock.h" #include "components/sync/engine/sync_encryption_handler.h" #include "components/sync/engine/sync_engine.h" @@ -43,8 +42,7 @@ SyncGenericChangeProcessorTest() : scoped_task_environment_( base::test::ScopedTaskEnvironment::MainThreadType::UI), - syncable_service_ptr_factory_(&fake_syncable_service_), - sync_client_(&sync_factory_) {} + syncable_service_ptr_factory_(&fake_syncable_service_) {} void SetUp() override { // Use kType by default, but allow test cases to re-initialize with whatever @@ -82,8 +80,8 @@ change_processor_ = std::make_unique<GenericChangeProcessor>( type, std::make_unique<DataTypeErrorHandlerMock>(), syncable_service_ptr_factory_.GetWeakPtr(), - merge_result_ptr_factory_->GetWeakPtr(), test_user_share_->user_share(), - &sync_client_); + merge_result_ptr_factory_->GetWeakPtr(), + test_user_share_->user_share()); } void BuildChildNodes(ModelType type, int n) { @@ -114,7 +112,6 @@ base::WeakPtrFactory<FakeSyncableService> syncable_service_ptr_factory_; std::unique_ptr<TestUserShare> test_user_share_; - FakeSyncClient sync_client_; testing::NiceMock<SyncApiComponentFactoryMock> sync_factory_; std::unique_ptr<GenericChangeProcessor> change_processor_;
diff --git a/components/sync/driver/glue/sync_engine_impl.cc b/components/sync/driver/glue/sync_engine_impl.cc index 1f1d311c..d5f2d1cb8 100644 --- a/components/sync/driver/glue/sync_engine_impl.cc +++ b/components/sync/driver/glue/sync_engine_impl.cc
@@ -20,7 +20,6 @@ #include "components/sync/base/invalidation_helper.h" #include "components/sync/base/sync_prefs.h" #include "components/sync/driver/glue/sync_backend_host_core.h" -#include "components/sync/driver/sync_client.h" #include "components/sync/driver/sync_driver_switches.h" #include "components/sync/engine/data_type_activation_response.h" #include "components/sync/engine/engine_components_factory.h" @@ -33,22 +32,13 @@ #include "components/sync/engine/sync_string_conversions.h" #include "components/sync/syncable/base_transaction.h" -// Helper macros to log with the syncer thread name; useful when there -// are multiple syncers involved. - -#define SLOG(severity) LOG(severity) << name_ << ": " - -#define SDVLOG(verbose_level) DVLOG(verbose_level) << name_ << ": " - namespace syncer { SyncEngineImpl::SyncEngineImpl(const std::string& name, - SyncClient* sync_client, invalidation::InvalidationService* invalidator, const base::WeakPtr<SyncPrefs>& sync_prefs, const base::FilePath& sync_data_folder) - : sync_client_(sync_client), - name_(name), + : name_(name), sync_prefs_(sync_prefs), invalidator_(invalidator), weak_ptr_factory_(this) { @@ -101,7 +91,7 @@ } void SyncEngineImpl::StartSyncingWithServer() { - SDVLOG(1) << "SyncEngineImpl::StartSyncingWithServer called."; + DVLOG(1) << name_ << ": SyncEngineImpl::StartSyncingWithServer called."; base::Time last_poll_time = sync_prefs_->GetLastPollTime(); // If there's no known last poll time (e.g. on initial start-up), we treat // this as if a poll just happened. @@ -496,7 +486,3 @@ } } // namespace syncer - -#undef SDVLOG - -#undef SLOG
diff --git a/components/sync/driver/glue/sync_engine_impl.h b/components/sync/driver/glue/sync_engine_impl.h index fda0ace..f1515eac7 100644 --- a/components/sync/driver/glue/sync_engine_impl.h +++ b/components/sync/driver/glue/sync_engine_impl.h
@@ -40,7 +40,6 @@ class ChangeProcessor; class SyncBackendHostCore; class SyncBackendRegistrar; -class SyncClient; class SyncPrefs; // The only real implementation of the SyncEngine. See that interface's @@ -50,7 +49,6 @@ using Status = SyncStatus; SyncEngineImpl(const std::string& name, - SyncClient* sync_client, invalidation::InvalidationService* invalidator, const base::WeakPtr<SyncPrefs>& sync_prefs, const base::FilePath& sync_data_folder); @@ -196,8 +194,6 @@ void OnCookieJarChangedDoneOnFrontendLoop(const base::Closure& callback); - SyncClient* const sync_client_; - // The task runner where all the sync engine operations happen. scoped_refptr<base::SequencedTaskRunner> sync_task_runner_;
diff --git a/components/sync/driver/glue/sync_engine_impl_unittest.cc b/components/sync/driver/glue/sync_engine_impl_unittest.cc index 6a2afa6..5d1ed13 100644 --- a/components/sync/driver/glue/sync_engine_impl_unittest.cc +++ b/components/sync/driver/glue/sync_engine_impl_unittest.cc
@@ -33,7 +33,6 @@ #include "components/sync/base/sync_prefs.h" #include "components/sync/base/test_unrecoverable_error_handler.h" #include "components/sync/device_info/device_info.h" -#include "components/sync/driver/fake_sync_client.h" #include "components/sync/engine/cycle/commit_counters.h" #include "components/sync/engine/cycle/status_counters.h" #include "components/sync/engine/cycle/update_counters.h" @@ -65,6 +64,15 @@ static const base::FilePath::CharType kTestSyncDir[] = FILE_PATH_LITERAL("sync-test"); +scoped_refptr<ModelSafeWorker> CreateModelWorkerForGroup(ModelSafeGroup group) { + switch (group) { + case GROUP_PASSIVE: + return new PassiveModelWorker(); + default: + return nullptr; + } +} + class TestSyncEngineHost : public SyncEngineHostStub { public: explicit TestSyncEngineHost( @@ -137,19 +145,6 @@ FakeSyncManager** fake_manager_; }; -class BackendSyncClient : public FakeSyncClient { - public: - scoped_refptr<ModelSafeWorker> CreateModelWorkerForGroup( - ModelSafeGroup group) override { - switch (group) { - case GROUP_PASSIVE: - return new PassiveModelWorker(); - default: - return nullptr; - } - } -}; - class NullEncryptionObserver : public SyncEncryptionHandler::Observer { public: void OnPassphraseRequired( @@ -211,8 +206,7 @@ UpdateRegisteredInvalidationIds(testing::_, testing::_)) .WillByDefault(testing::Return(true)); backend_ = std::make_unique<SyncEngineImpl>( - "dummyDebugName", &sync_client_, &invalidator_, - sync_prefs_->AsWeakPtr(), + "dummyDebugName", &invalidator_, sync_prefs_->AsWeakPtr(), temp_dir_.GetPath().Append(base::FilePath(kTestSyncDir))); credentials_.account_id = "user@example.com"; credentials_.email = "user@example.com"; @@ -259,8 +253,7 @@ params.sync_task_runner = sync_thread_.task_runner(); params.host = &host_; params.registrar = std::make_unique<SyncBackendRegistrar>( - std::string(), base::Bind(&SyncClient::CreateModelWorkerForGroup, - base::Unretained(&sync_client_))); + std::string(), base::Bind(&CreateModelWorkerForGroup)); params.encryption_observer_proxies.push_back( std::make_unique<NullEncryptionObserver>()); params.http_factory_getter = std::move(http_post_provider_factory_getter); @@ -336,7 +329,6 @@ base::Thread sync_thread_; TestSyncEngineHost host_; SyncCredentials credentials_; - BackendSyncClient sync_client_; TestUnrecoverableErrorHandler test_unrecoverable_error_handler_; std::unique_ptr<SyncPrefs> sync_prefs_; std::unique_ptr<SyncEngineImpl> backend_;
diff --git a/components/sync/driver/shared_change_processor.cc b/components/sync/driver/shared_change_processor.cc index bb9080a..01e3269 100644 --- a/components/sync/driver/shared_change_processor.cc +++ b/components/sync/driver/shared_change_processor.cc
@@ -153,7 +153,7 @@ generic_change_processor_ = processor_factory ->CreateGenericChangeProcessor( type_, user_share, error_handler_->Copy(), - local_service, merge_result, sync_client) + local_service, merge_result) .release(); return local_service; }
diff --git a/components/sync/driver/test_sync_user_settings.cc b/components/sync/driver/test_sync_user_settings.cc index 70fed1c..ea11007 100644 --- a/components/sync/driver/test_sync_user_settings.cc +++ b/components/sync/driver/test_sync_user_settings.cc
@@ -70,8 +70,7 @@ if (sync_everything_enabled_) { preferred_types = syncer::ModelTypeSet::All(); } else { - preferred_types = syncer::SyncPrefs::ResolvePrefGroups( - /*registered_types=*/syncer::ModelTypeSet::All(), types); + preferred_types = syncer::SyncPrefs::ResolvePrefGroups(types); } service_->SetPreferredDataTypes(preferred_types); }
diff --git a/components/sync/engine_impl/syncer_proto_util.cc b/components/sync/engine_impl/syncer_proto_util.cc index 2809159..cac498d 100644 --- a/components/sync/engine_impl/syncer_proto_util.cc +++ b/components/sync/engine_impl/syncer_proto_util.cc
@@ -44,6 +44,24 @@ // Time to backoff syncing after receiving a throttled response. const int kSyncDelayAfterThrottled = 2 * 60 * 60; // 2 hours +const char kGetUpdatesTokenHistogramPrefix[] = + "Sync.ReceivedDataTypeGetUpdatesResponseWithToken."; + +enum class GetUpdatesToken { + kNew = 0, + kSame = 1, + kDifferent = 2, + kMaxValue = kDifferent, +}; + +void RecordGetUpdatesToken(syncer::ModelType model_type, + GetUpdatesToken token) { + std::string type_string = ModelTypeToHistogramSuffix(model_type); + std::string full_histogram_name = + kGetUpdatesTokenHistogramPrefix + type_string; + base::UmaHistogramEnumeration(full_histogram_name, token); +} + void LogResponseProfilingData(const ClientToServerResponse& response) { if (response.has_profiling_data()) { stringstream response_trace; @@ -339,8 +357,11 @@ msg.message_contents(), ClientToServerMessage::Contents_MAX + 1); + std::map<int, std::string> progress_marker_token_per_data_type; for (const sync_pb::DataTypeProgressMarker& progress_marker : msg.get_updates().from_progress_marker()) { + progress_marker_token_per_data_type[progress_marker.data_type_id()] = + progress_marker.token(); UMA_HISTOGRAM_ENUMERATION( "Sync.PostedDataTypeGetUpdatesRequest", ModelTypeToHistogramInt(GetModelTypeFromSpecificsFieldNumber( @@ -369,6 +390,21 @@ response->error_code()); } + for (const sync_pb::DataTypeProgressMarker& progress_marker : + response->get_updates().new_progress_marker()) { + ModelType type = + GetModelTypeFromSpecificsFieldNumber(progress_marker.data_type_id()); + const std::string& old_token = + progress_marker_token_per_data_type[progress_marker.data_type_id()]; + if (old_token.empty()) { + RecordGetUpdatesToken(type, GetUpdatesToken::kNew); + } else if (old_token == progress_marker.token()) { + RecordGetUpdatesToken(type, GetUpdatesToken::kSame); + } else { + RecordGetUpdatesToken(type, GetUpdatesToken::kDifferent); + } + } + return true; }
diff --git a/components/tracing/BUILD.gn b/components/tracing/BUILD.gn index 42d878a..c80e46e 100644 --- a/components/tracing/BUILD.gn +++ b/components/tracing/BUILD.gn
@@ -2,8 +2,8 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//testing/test.gni") import("//build/config/compiler/compiler.gni") +import("//testing/test.gni") if (is_android) { import("//build/config/android/rules.gni") @@ -50,8 +50,6 @@ component("startup_tracing") { sources = [ - "common/trace_startup.cc", - "common/trace_startup.h", "common/trace_startup_config.cc", "common/trace_startup_config.h", "common/trace_to_console.cc",
diff --git a/components/tracing/common/trace_startup.h b/components/tracing/common/trace_startup.h deleted file mode 100644 index 4cb5683..0000000 --- a/components/tracing/common/trace_startup.h +++ /dev/null
@@ -1,17 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef COMPONENTS_TRACING_COMMON_TRACE_STARTUP_H -#define COMPONENTS_TRACING_COMMON_TRACE_STARTUP_H - -#include "components/tracing/tracing_export.h" - -namespace tracing { - -// Enables TraceLog with config based on the command line flags of the process. -void TRACING_EXPORT EnableStartupTracingIfNeeded(); - -} // namespace tracing - -#endif // COMPONENTS_TRACING_COMMON_TRACE_STARTUP_H
diff --git a/components/tracing/common/tracing_switches.cc b/components/tracing/common/tracing_switches.cc index 533ad021..1ca3c39 100644 --- a/components/tracing/common/tracing_switches.cc +++ b/components/tracing/common/tracing_switches.cc
@@ -54,6 +54,13 @@ // "record-until-full" mode will be used. const char kTraceStartupRecordMode[] = "trace-startup-record-mode"; +// Enables the perfetto tracing backend. We need a separate command line +// argument from the kTracingPerfettoBackend feature, because feature flags are +// parsed too late during startup for early startup tracing support. +// TODO(eseckler): When perfetto becomes the default, replace this with +// --disable-perfetto for legacy startup tracing support. +const char kEnablePerfetto[] = "enable-perfetto"; + // If supplied, will enable Perfetto startup tracing and stream the // output to the given file. // TODO(oysteine): Remove once Perfetto starts early enough after
diff --git a/components/tracing/common/tracing_switches.h b/components/tracing/common/tracing_switches.h index 6304a24..873d0a5 100644 --- a/components/tracing/common/tracing_switches.h +++ b/components/tracing/common/tracing_switches.h
@@ -17,6 +17,7 @@ TRACING_EXPORT extern const char kTraceStartupDuration[]; TRACING_EXPORT extern const char kTraceStartupFile[]; TRACING_EXPORT extern const char kTraceStartupRecordMode[]; +TRACING_EXPORT extern const char kEnablePerfetto[]; TRACING_EXPORT extern const char kPerfettoOutputFile[]; TRACING_EXPORT extern const char kTraceToConsole[]; TRACING_EXPORT extern const char kTraceUploadURL[];
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl.cc b/components/viz/service/display_embedder/skia_output_surface_impl.cc index a51adc2..0086e8a 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl.cc +++ b/components/viz/service/display_embedder/skia_output_surface_impl.cc
@@ -4,6 +4,9 @@ #include "components/viz/service/display_embedder/skia_output_surface_impl.h" +#include <utility> +#include <vector> + #include "base/bind.h" #include "base/callback_helpers.h" #include "base/synchronization/waitable_event.h" @@ -112,7 +115,7 @@ SkColorType color_type = ResourceFormatToClosestSkColorType( true /* gpu_compositing */, resource_format_); GrBackendFormat backend_format; - if (!impl->gpu_service_->is_using_vulkan()) { + if (!impl->is_using_vulkan_) { // Convert internal format from GLES2 to platform GL. const auto* version_info = impl->impl_on_gpu_->gl_version_info(); unsigned int texture_storage_format = @@ -273,6 +276,7 @@ SyntheticBeginFrameSource* synthetic_begin_frame_source, bool show_overdraw_feedback) : gpu_service_(gpu_service), + is_using_vulkan_(gpu_service->is_using_vulkan()), surface_handle_(surface_handle), synthetic_begin_frame_source_(synthetic_begin_frame_source), show_overdraw_feedback_(show_overdraw_feedback), @@ -287,12 +291,10 @@ // scheduled tasks for the impl_on_gpu_ will be executed, before releasing // it. The GPU thread is the main thread of the viz process. It outlives the // compositor thread. We don't need worry about it for now. - auto sequence_id = gpu_service_->skia_output_surface_sequence_id(); auto callback = base::BindOnce([](std::unique_ptr<SkiaOutputSurfaceImplOnGpu>) {}, std::move(impl_on_gpu_)); - gpu_service_->scheduler()->ScheduleTask(gpu::Scheduler::Task( - sequence_id, std::move(callback), std::vector<gpu::SyncToken>())); + ScheduleGpuTask(std::move(callback), std::vector<gpu::SyncToken>()); } void SkiaOutputSurfaceImpl::BindToClient(OutputSurfaceClient* client) { @@ -306,11 +308,9 @@ base::WaitableEvent event(base::WaitableEvent::ResetPolicy::MANUAL, base::WaitableEvent::InitialState::NOT_SIGNALED); - auto sequence_id = gpu_service_->skia_output_surface_sequence_id(); auto callback = base::BindOnce(&SkiaOutputSurfaceImpl::InitializeOnGpuThread, base::Unretained(this), &event); - gpu_service_->scheduler()->ScheduleTask(gpu::Scheduler::Task( - sequence_id, std::move(callback), std::vector<gpu::SyncToken>())); + ScheduleGpuTask(std::move(callback), std::vector<gpu::SyncToken>()); event.Wait(); } @@ -356,7 +356,6 @@ base::WaitableEvent::InitialState::NOT_SIGNALED); } - auto sequence_id = gpu_service_->skia_output_surface_sequence_id(); // impl_on_gpu_ is released on the GPU thread by a posted task from // SkiaOutputSurfaceImpl::dtor. So it is safe to use base::Unretained. auto callback = base::BindOnce(&SkiaOutputSurfaceImplOnGpu::Reshape, @@ -364,8 +363,7 @@ device_scale_factor, std::move(color_space), has_alpha, use_stencil, characterization, initialize_waitable_event_.get()); - gpu_service_->scheduler()->ScheduleTask(gpu::Scheduler::Task( - sequence_id, std::move(callback), std::vector<gpu::SyncToken>())); + ScheduleGpuTask(std::move(callback), std::vector<gpu::SyncToken>()); } void SkiaOutputSurfaceImpl::SwapBuffers(OutputSurfaceFrame frame) { @@ -420,6 +418,11 @@ return 0; } +void SkiaOutputSurfaceImpl::SetNeedsSwapSizeNotifications( + bool needs_swap_size_notifications) { + needs_swap_size_notifications_ = needs_swap_size_notifications; +} + SkCanvas* SkiaOutputSurfaceImpl::BeginPaintCurrentFrame() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); // Make sure there is no unsubmitted PaintFrame or PaintRenderPass. @@ -489,7 +492,6 @@ if (images_pending_release_.empty()) return; - auto sequence_id = gpu_service_->skia_output_surface_sequence_id(); // impl_on_gpu_ is released on the GPU thread by a posted task from // SkiaOutputSurfaceImpl::dtor. So it is safe to use base::Unretained. auto callback = @@ -497,21 +499,18 @@ base::Unretained(impl_on_gpu_.get()), std::move(images_pending_release_), sync_fence_release_); images_pending_release_.clear(); - gpu_service_->scheduler()->ScheduleTask(gpu::Scheduler::Task( - sequence_id, std::move(callback), std::vector<gpu::SyncToken>())); + ScheduleGpuTask(std::move(callback), std::vector<gpu::SyncToken>()); } void SkiaOutputSurfaceImpl::SkiaSwapBuffers(OutputSurfaceFrame frame) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK(!recorder_); - auto sequence_id = gpu_service_->skia_output_surface_sequence_id(); // impl_on_gpu_ is released on the GPU thread by a posted task from // SkiaOutputSurfaceImpl::dtor. So it is safe to use base::Unretained. auto callback = base::BindOnce(&SkiaOutputSurfaceImplOnGpu::SwapBuffers, base::Unretained(impl_on_gpu_.get()), std::move(frame)); - gpu_service_->scheduler()->ScheduleTask(gpu::Scheduler::Task( - sequence_id, std::move(callback), std::vector<gpu::SyncToken>())); + ScheduleGpuTask(std::move(callback), std::vector<gpu::SyncToken>()); } SkCanvas* SkiaOutputSurfaceImpl::BeginPaintRenderPass( @@ -559,7 +558,6 @@ overdraw_surface_recorder_.reset(); } - auto sequence_id = gpu_service_->skia_output_surface_sequence_id(); // impl_on_gpu_ is released on the GPU thread by a posted task from // SkiaOutputSurfaceImpl::dtor. So it is safe to use base::Unretained. base::OnceCallback<void()> callback; @@ -574,8 +572,7 @@ base::Unretained(impl_on_gpu_.get()), std::move(ddl), std::move(overdraw_ddl), sync_fence_release_); } - gpu_service_->scheduler()->ScheduleTask(gpu::Scheduler::Task( - sequence_id, std::move(callback), std::move(resource_sync_tokens_))); + ScheduleGpuTask(std::move(callback), std::move(resource_sync_tokens_)); current_render_pass_id_ = 0; return sync_token; } @@ -597,14 +594,12 @@ std::vector<RenderPassId> ids) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK(!ids.empty()); - auto sequence_id = gpu_service_->skia_output_surface_sequence_id(); // impl_on_gpu_ is released on the GPU thread by a posted task from // SkiaOutputSurfaceImpl::dtor. So it is safe to use base::Unretained. auto callback = base::BindOnce(&SkiaOutputSurfaceImplOnGpu::RemoveRenderPassResource, base::Unretained(impl_on_gpu_.get()), std::move(ids)); - gpu_service_->scheduler()->ScheduleTask(gpu::Scheduler::Task( - sequence_id, std::move(callback), std::vector<gpu::SyncToken>())); + ScheduleGpuTask(std::move(callback), std::vector<gpu::SyncToken>()); } void SkiaOutputSurfaceImpl::CopyOutput( @@ -616,13 +611,12 @@ DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); if (!request->has_result_task_runner()) request->set_result_task_runner(base::ThreadTaskRunnerHandle::Get()); - auto sequence_id = gpu_service_->skia_output_surface_sequence_id(); + auto callback = base::BindOnce(&SkiaOutputSurfaceImplOnGpu::CopyOutput, base::Unretained(impl_on_gpu_.get()), id, copy_rect, color_space, result_rect, std::move(request)); - gpu_service_->scheduler()->ScheduleTask(gpu::Scheduler::Task( - sequence_id, std::move(callback), std::vector<gpu::SyncToken>())); + ScheduleGpuTask(std::move(callback), std::vector<gpu::SyncToken>()); } void SkiaOutputSurfaceImpl::AddContextLostObserver( @@ -674,7 +668,7 @@ constexpr size_t kCacheMaxResourceBytes = 90 * 1024 * 1024; GrBackendFormat backend_format; - if (!gpu_service_->is_using_vulkan()) { + if (!is_using_vulkan_) { const auto* version_info = impl_on_gpu_->gl_version_info(); unsigned int texture_storage_format = TextureStorageFormat(format); backend_format = GrBackendFormat::MakeGL( @@ -730,9 +724,12 @@ observer.OnContextLost(); } -void SkiaOutputSurfaceImpl::SetNeedsSwapSizeNotifications( - bool needs_swap_size_notifications) { - needs_swap_size_notifications_ = needs_swap_size_notifications; +void SkiaOutputSurfaceImpl::ScheduleGpuTask( + base::OnceClosure callback, + std::vector<gpu::SyncToken> sync_tokens) { + auto sequence_id = gpu_service_->skia_output_surface_sequence_id(); + gpu_service_->scheduler()->ScheduleTask(gpu::Scheduler::Task( + sequence_id, std::move(callback), std::move(sync_tokens))); } } // namespace viz
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl.h b/components/viz/service/display_embedder/skia_output_surface_impl.h index f72c8494..cd7a199f 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl.h +++ b/components/viz/service/display_embedder/skia_output_surface_impl.h
@@ -117,9 +117,12 @@ const gfx::Size& pixel_size); void BufferPresented(const gfx::PresentationFeedback& feedback); void ContextLost(); + void ScheduleGpuTask(base::OnceClosure callback, + std::vector<gpu::SyncToken> sync_tokens); uint64_t sync_fence_release_ = 0; GpuServiceImpl* const gpu_service_; + const bool is_using_vulkan_; const gpu::SurfaceHandle surface_handle_; SyntheticBeginFrameSource* const synthetic_begin_frame_source_; OutputSurfaceClient* client_ = nullptr;
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc index bab983f..7083ee6a 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc +++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
@@ -21,7 +21,6 @@ #include "gpu/command_buffer/service/shared_image_factory.h" #include "gpu/command_buffer/service/shared_image_representation.h" #include "gpu/command_buffer/service/skia_utils.h" -#include "gpu/command_buffer/service/sync_point_manager.h" #include "gpu/command_buffer/service/texture_base.h" #include "gpu/command_buffer/service/texture_manager.h" #include "gpu/config/gpu_preferences.h" @@ -69,6 +68,30 @@ ~FakeOnScreenSurface() override = default; }; +scoped_refptr<gpu::gles2::FeatureInfo> CreateFeatureInfo( + GpuServiceImpl* gpu_service) { + auto* channel_manager = gpu_service->gpu_channel_manager(); + return base::MakeRefCounted<gpu::gles2::FeatureInfo>( + channel_manager->gpu_driver_bug_workarounds(), + channel_manager->gpu_feature_info()); +} + +scoped_refptr<gpu::SyncPointClientState> CreateSyncPointClientState( + GpuServiceImpl* gpu_service) { + auto command_buffer_id = gpu::CommandBufferId::FromUnsafeValue( + g_next_command_buffer_id.GetNext() + 1); + return gpu_service->sync_point_manager()->CreateSyncPointClientState( + gpu::CommandBufferNamespace::VIZ_OUTPUT_SURFACE, command_buffer_id, + gpu_service->skia_output_surface_sequence_id()); +} + +std::unique_ptr<gpu::SharedImageRepresentationFactory> +CreateSharedImageRepresentationFactory(GpuServiceImpl* gpu_service) { + // TODO(https://crbug.com/899905): Use a real MemoryTracker, not nullptr. + return std::make_unique<gpu::SharedImageRepresentationFactory>( + gpu_service->shared_image_manager(), nullptr); +} + } // namespace SkiaOutputSurfaceImplOnGpu::OffscreenSurface::OffscreenSurface() = default; @@ -90,47 +113,58 @@ OffscreenSurface&& offscreen_surface) = default; SkiaOutputSurfaceImplOnGpu::SkiaOutputSurfaceImplOnGpu( - GpuServiceImpl* gpu_service, gpu::SurfaceHandle surface_handle, + scoped_refptr<gpu::gles2::FeatureInfo> feature_info, + gpu::MailboxManager* mailbox_manager, + scoped_refptr<gpu::SyncPointClientState> sync_point_client_state, + std::unique_ptr<gpu::SharedImageRepresentationFactory> sir_factory, + gpu::raster::GrShaderCache* gr_shader_cache, + VulkanContextProvider* vulkan_context_provider, const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback, const BufferPresentedCallback& buffer_presented_callback, const ContextLostCallback& context_lost_callback) - : command_buffer_id_(gpu::CommandBufferId::FromUnsafeValue( - g_next_command_buffer_id.GetNext() + 1)), - gpu_service_(gpu_service), - surface_handle_(surface_handle), + : surface_handle_(surface_handle), + feature_info_(std::move(feature_info)), + mailbox_manager_(mailbox_manager), + sync_point_client_state_(std::move(sync_point_client_state)), + shared_image_representation_factory_(std::move(sir_factory)), + gr_shader_cache_(gr_shader_cache), + vulkan_context_provider_(vulkan_context_provider), did_swap_buffer_complete_callback_(did_swap_buffer_complete_callback), buffer_presented_callback_(buffer_presented_callback), context_lost_callback_(context_lost_callback), - // TODO(https://crbug.com/899905): Use a real MemoryTracker, not nullptr. - shared_image_representation_factory_( - std::make_unique<gpu::SharedImageRepresentationFactory>( - gpu_service_->shared_image_manager(), - nullptr)), weak_ptr_factory_(this) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); weak_ptr_ = weak_ptr_factory_.GetWeakPtr(); - sync_point_client_state_ = - gpu_service_->sync_point_manager()->CreateSyncPointClientState( - gpu::CommandBufferNamespace::VIZ_OUTPUT_SURFACE, command_buffer_id_, - gpu_service_->skia_output_surface_sequence_id()); - - gpu::GpuChannelManager* channel_manager = gpu_service_->gpu_channel_manager(); - feature_info_ = base::MakeRefCounted<gpu::gles2::FeatureInfo>( - channel_manager->gpu_driver_bug_workarounds(), - channel_manager->gpu_feature_info()); - #if defined(USE_OZONE) window_surface_ = ui::OzonePlatform::GetInstance() ->GetSurfaceFactoryOzone() ->CreatePlatformWindowSurface(surface_handle); #endif +} - if (gpu_service_->is_using_vulkan()) - InitializeForVulkan(); +SkiaOutputSurfaceImplOnGpu::SkiaOutputSurfaceImplOnGpu( + GpuServiceImpl* gpu_service, + gpu::SurfaceHandle surface_handle, + const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback, + const BufferPresentedCallback& buffer_presented_callback, + const ContextLostCallback& context_lost_callback) + : SkiaOutputSurfaceImplOnGpu( + surface_handle, + CreateFeatureInfo(gpu_service), + gpu_service->mailbox_manager(), + CreateSyncPointClientState(gpu_service), + CreateSharedImageRepresentationFactory(gpu_service), + gpu_service->gr_shader_cache(), + gpu_service->vulkan_context_provider(), + did_swap_buffer_complete_callback, + buffer_presented_callback, + context_lost_callback) { + if (is_using_vulkan()) + InitializeForVulkan(gpu_service); else - InitializeForGL(); + InitializeForGL(gpu_service); } SkiaOutputSurfaceImplOnGpu::~SkiaOutputSurfaceImplOnGpu() { @@ -160,7 +194,7 @@ base::BindOnce(&base::WaitableEvent::Signal, base::Unretained(event))); } - if (!gpu_service_->is_using_vulkan()) { + if (!is_using_vulkan()) { if (!MakeCurrent()) return; // Conversion to GLSurface's color space follows the same logic as in @@ -201,13 +235,12 @@ accelerated_widget = surface_handle_; #endif if (!vulkan_surface_) { - auto vulkan_surface = gpu_service_->vulkan_context_provider() - ->GetVulkanImplementation() + auto vulkan_surface = vulkan_context_provider_->GetVulkanImplementation() ->CreateViewSurface(accelerated_widget); if (!vulkan_surface) LOG(FATAL) << "Failed to create vulkan surface."; if (!vulkan_surface->Initialize( - gpu_service_->vulkan_context_provider()->GetDeviceQueue(), + vulkan_context_provider_->GetDeviceQueue(), gpu::VulkanSurface::DEFAULT_SURFACE_FORMAT)) { LOG(FATAL) << "Failed to initialize vulkan surface."; } @@ -246,9 +279,8 @@ { base::Optional<gpu::raster::GrShaderCache::ScopedCacheUse> cache_use; - if (gpu_service_->gr_shader_cache()) { - cache_use.emplace(gpu_service_->gr_shader_cache(), - gpu::kInProcessCommandBufferClientId); + if (gr_shader_cache_) { + cache_use.emplace(gr_shader_cache_, gpu::kInProcessCommandBufferClientId); } sk_surface_->draw(ddl.get()); gr_context()->flush(); @@ -261,9 +293,8 @@ if (overdraw_ddl) { base::Optional<gpu::raster::GrShaderCache::ScopedCacheUse> cache_use; - if (gpu_service_->gr_shader_cache()) { - cache_use.emplace(gpu_service_->gr_shader_cache(), - gpu::kInProcessCommandBufferClientId); + if (gr_shader_cache_) { + cache_use.emplace(gr_shader_cache_, gpu::kInProcessCommandBufferClientId); } sk_sp<SkSurface> overdraw_surface = SkSurface::MakeRenderTarget( @@ -285,7 +316,7 @@ DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK(sk_surface_); base::TimeTicks swap_start, swap_end; - if (!gpu_service_->is_using_vulkan()) { + if (!is_using_vulkan()) { if (!MakeCurrent()) return; swap_start = base::TimeTicks::Now(); @@ -351,9 +382,8 @@ } { base::Optional<gpu::raster::GrShaderCache::ScopedCacheUse> cache_use; - if (gpu_service_->gr_shader_cache()) - cache_use.emplace(gpu_service_->gr_shader_cache(), - gpu::kInProcessCommandBufferClientId); + if (gr_shader_cache_) + cache_use.emplace(gr_shader_cache_, gpu::kInProcessCommandBufferClientId); surface->draw(ddl.get()); gr_context()->flush(); } @@ -463,15 +493,14 @@ return promise_texture; } - if (gpu_service_->is_using_vulkan()) { + if (is_using_vulkan()) { // Probably this texture is created with wrong inteface (GLES2Interface). DLOG(ERROR) << "Failed to fulfill the promise texture whose backend is not " "compitable with vulkan."; return nullptr; } - auto* mailbox_manager = gpu_service_->mailbox_manager(); - auto* texture_base = mailbox_manager->ConsumeTexture(mailbox_holder.mailbox); + auto* texture_base = mailbox_manager_->ConsumeTexture(mailbox_holder.mailbox); if (!texture_base) { DLOG(ERROR) << "Failed to fulfill the promise texture."; return nullptr; @@ -571,7 +600,7 @@ return 0; } -void SkiaOutputSurfaceImplOnGpu::InitializeForGL() { +void SkiaOutputSurfaceImplOnGpu::InitializeForGL(GpuServiceImpl* gpu_service) { if (surface_handle_) { gl_surface_ = gpu::ImageTransportSurface::CreateNativeSurface( weak_ptr_factory_.GetWeakPtr(), surface_handle_, gl::GLSurfaceFormat()); @@ -585,7 +614,7 @@ } DCHECK(gl_surface_); - context_state_ = gpu_service_->GetContextStateForGLSurface(gl_surface_.get()); + context_state_ = gpu_service->GetContextStateForGLSurface(gl_surface_.get()); if (!context_state_) { LOG(FATAL) << "Failed to create GrContext"; // TODO(penghuang): handle the failure. @@ -617,8 +646,9 @@ capabilities_.supports_stencil = stencil_bits > 0; } -void SkiaOutputSurfaceImplOnGpu::InitializeForVulkan() { - context_state_ = gpu_service_->GetContextStateForVulkan(); +void SkiaOutputSurfaceImplOnGpu::InitializeForVulkan( + GpuServiceImpl* gpu_service) { + context_state_ = gpu_service->GetContextStateForVulkan(); DCHECK(context_state_); } @@ -688,7 +718,7 @@ } bool SkiaOutputSurfaceImplOnGpu::MakeCurrent() { - if (!gpu_service_->is_using_vulkan()) { + if (!is_using_vulkan()) { if (!context_state_->MakeCurrent(gl_surface_.get())) { LOG(ERROR) << "Failed to make current."; context_lost_callback_.Run();
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h index 672a4c6..92f1560 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h +++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h
@@ -19,6 +19,7 @@ #include "components/viz/service/display/resource_metadata.h" #include "gpu/command_buffer/common/sync_token.h" #include "gpu/command_buffer/service/shared_context_state.h" +#include "gpu/command_buffer/service/sync_point_manager.h" #include "gpu/ipc/common/surface_handle.h" #include "gpu/ipc/in_process_command_buffer.h" #include "gpu/ipc/service/image_transport_surface_delegate.h" @@ -69,6 +70,18 @@ using BufferPresentedCallback = base::RepeatingCallback<void(const gfx::PresentationFeedback& feedback)>; using ContextLostCallback = base::RepeatingCallback<void()>; + + SkiaOutputSurfaceImplOnGpu( + gpu::SurfaceHandle surface_handle, + scoped_refptr<gpu::gles2::FeatureInfo> feature_info, + gpu::MailboxManager* mailbox_manager, + scoped_refptr<gpu::SyncPointClientState> sync_point_client_data, + std::unique_ptr<gpu::SharedImageRepresentationFactory> sir_factory, + gpu::raster::GrShaderCache* gr_shader_cache, + VulkanContextProvider* vulkan_context_provider, + const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback, + const BufferPresentedCallback& buffer_presented_callback, + const ContextLostCallback& context_lost_callback); SkiaOutputSurfaceImplOnGpu( GpuServiceImpl* gpu_service, gpu::SurfaceHandle surface_handle, @@ -77,7 +90,9 @@ const ContextLostCallback& context_lost_callback); ~SkiaOutputSurfaceImplOnGpu() override; - gpu::CommandBufferId command_buffer_id() const { return command_buffer_id_; } + gpu::CommandBufferId command_buffer_id() const { + return sync_point_client_state_->command_buffer_id(); + } const OutputSurface::Capabilities capabilities() const { return capabilities_; } @@ -141,8 +156,8 @@ void AddFilter(IPC::MessageFilter* message_filter) override; int32_t GetRouteID() const override; - void InitializeForGL(); - void InitializeForVulkan(); + void InitializeForGL(GpuServiceImpl* gpu_service); + void InitializeForVulkan(GpuServiceImpl* gpu_service); void BindOrCopyTextureIfNecessary(gpu::TextureBase* texture_base); @@ -157,9 +172,16 @@ GrContext* gr_context() { return context_state_->gr_context(); } - const gpu::CommandBufferId command_buffer_id_; - GpuServiceImpl* const gpu_service_; + bool is_using_vulkan() const { return !!vulkan_context_provider_; } + const gpu::SurfaceHandle surface_handle_; + scoped_refptr<gpu::gles2::FeatureInfo> feature_info_; + gpu::MailboxManager* const mailbox_manager_; + scoped_refptr<gpu::SyncPointClientState> sync_point_client_state_; + std::unique_ptr<gpu::SharedImageRepresentationFactory> + shared_image_representation_factory_; + gpu::raster::GrShaderCache* const gr_shader_cache_; + VulkanContextProvider* const vulkan_context_provider_; DidSwapBufferCompleteCallback did_swap_buffer_complete_callback_; BufferPresentedCallback buffer_presented_callback_; ContextLostCallback context_lost_callback_; @@ -169,16 +191,12 @@ std::unique_ptr<ui::PlatformWindowSurface> window_surface_; #endif - scoped_refptr<gpu::SyncPointClientState> sync_point_client_state_; gpu::GpuPreferences gpu_preferences_; scoped_refptr<gl::GLSurface> gl_surface_; sk_sp<SkSurface> sk_surface_; scoped_refptr<gpu::SharedContextState> context_state_; const gl::GLVersionInfo* gl_version_info_ = nullptr; OutputSurface::Capabilities capabilities_; - std::unique_ptr<gpu::SharedImageRepresentationFactory> - shared_image_representation_factory_; - scoped_refptr<gpu::gles2::FeatureInfo> feature_info_; #if BUILDFLAG(ENABLE_VULKAN) std::unique_ptr<gpu::VulkanSurface> vulkan_surface_;
diff --git a/components/web_resource/resource_request_allowed_notifier_unittest.cc b/components/web_resource/resource_request_allowed_notifier_unittest.cc index ec0c78d..58578123 100644 --- a/components/web_resource/resource_request_allowed_notifier_unittest.cc +++ b/components/web_resource/resource_request_allowed_notifier_unittest.cc
@@ -296,7 +296,7 @@ EXPECT_FALSE(was_notified()); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( , ResourceRequestAllowedNotifierTest, testing::Values(ConnectionTrackerResponseMode::kSynchronous,
diff --git a/content/app/BUILD.gn b/content/app/BUILD.gn index a603f4f..14123c2 100644 --- a/content/app/BUILD.gn +++ b/content/app/BUILD.gn
@@ -23,7 +23,6 @@ content_app_deps = [ "//base", "//base:i18n", - "//components/tracing:startup_tracing", "//content:export", "//content:sandbox_helper_win", "//content/public/common:common_sources", @@ -32,6 +31,7 @@ "//services/service_manager/embedder", "//services/service_manager/public/mojom", "//services/service_manager/runner/common", + "//services/tracing/public/cpp", "//mojo/core/embedder", "//ppapi/buildflags", "//ui/base",
diff --git a/content/app/DEPS b/content/app/DEPS index 1bcd820..5e3c905 100644 --- a/content/app/DEPS +++ b/content/app/DEPS
@@ -1,6 +1,5 @@ include_rules = [ "+components/download", - "+components/tracing", "+content", "+device/bluetooth", "+device/gamepad", @@ -10,6 +9,7 @@ "+gin/public/snapshot_fd_data.h", "+gin/v8_initializer.h", "+services/network/public/cpp/features.h", + "+services/tracing/public/cpp", "+services/service_manager/embedder", "+services/service_manager/runner/common", "+services/service_manager/sandbox/sandbox_type.h",
diff --git a/content/app/android/library_loader_hooks.cc b/content/app/android/library_loader_hooks.cc index 4713c3d..393a41c 100644 --- a/content/app/android/library_loader_hooks.cc +++ b/content/app/android/library_loader_hooks.cc
@@ -7,8 +7,8 @@ #include "base/android/reached_code_profiler.h" #include "base/logging.h" #include "base/trace_event/trace_event.h" -#include "components/tracing/common/trace_startup.h" #include "content/common/content_constants_internal.h" +#include "services/tracing/public/cpp/trace_startup.h" namespace content {
diff --git a/content/app/content_main_runner_impl.cc b/content/app/content_main_runner_impl.cc index b0ce067..3855b1a 100644 --- a/content/app/content_main_runner_impl.cc +++ b/content/app/content_main_runner_impl.cc
@@ -41,7 +41,6 @@ #include "base/strings/stringprintf.h" #include "base/trace_event/trace_event.h" #include "components/download/public/common/download_task_runner.h" -#include "components/tracing/common/trace_startup.h" #include "content/app/mojo/mojo_init.h" #include "content/browser/browser_process_sub_thread.h" #include "content/browser/browser_thread_impl.h" @@ -68,6 +67,7 @@ #include "services/service_manager/sandbox/sandbox_type.h" #include "services/service_manager/sandbox/switches.h" #include "services/service_manager/zygote/common/zygote_buildflags.h" +#include "services/tracing/public/cpp/trace_startup.h" #include "third_party/blink/public/common/origin_trials/trial_token_validator.h" #include "ui/base/ui_base_paths.h" #include "ui/base/ui_base_switches.h"
diff --git a/content/app/strings/translations/content_strings_ml.xtb b/content/app/strings/translations/content_strings_ml.xtb index d3659ba..66a7cf9 100644 --- a/content/app/strings/translations/content_strings_ml.xtb +++ b/content/app/strings/translations/content_strings_ml.xtb
@@ -19,7 +19,7 @@ <translation id="1591562245178063882">ഈ മാസം</translation> <translation id="1637811476055996098">ഫയലുകൾ തിരഞ്ഞെടുക്കുക</translation> <translation id="1650423536718072820">പുൾക്വോട്ട്</translation> -<translation id="1727886345390570319">സബ്ടൈറ്റിലുകൾ മെനു മറയ്ക്കുക</translation> +<translation id="1727886345390570319">സബ്ടൈറ്റിൽ മെനു മറയ്ക്കുക</translation> <translation id="1729654308190250600">ശൂന്യമായിടാതെ, ഇമെയിൽ വിലാസം നൽകുക.</translation> <translation id="1758486001363313524">മറ്റുള്ളവ...</translation> <translation id="1806710327868736751">അലേർട്ട്_ഡയലോഗ്</translation> @@ -148,7 +148,7 @@ <translation id="6213469881011901533">പദസഞ്ചയം</translation> <translation id="6398862346408813489">മാസം തിരഞ്ഞെടുക്കുന്ന പാനൽ കാണിക്കുക</translation> <translation id="6404546809543547843">ഓഡിയോ സമയ സ്ക്രബർ</translation> -<translation id="6443871981718447451">സബ്ടൈറ്റിലുകൾ മെനു കാണിക്കുക</translation> +<translation id="6443871981718447451">സബ്ടൈറ്റിൽ മെനു കാണിക്കുക</translation> <translation id="6453774872122745852">കടപ്പാട്</translation> <translation id="648732519525291180">സമയ പിക്കർ</translation> <translation id="6550675742724504774">ഓപ്ഷനുകൾ</translation>
diff --git a/content/browser/background_fetch/background_fetch_job_controller.cc b/content/browser/background_fetch/background_fetch_job_controller.cc index d3176d7a..d01d733 100644 --- a/content/browser/background_fetch/background_fetch_job_controller.cc +++ b/content/browser/background_fetch/background_fetch_job_controller.cc
@@ -107,6 +107,7 @@ completed_downloads_ = completed_downloads; total_downloads_ = total_downloads; + pending_downloads_ = active_fetch_requests.size(); std::vector<std::string> active_guids; active_guids.reserve(active_fetch_requests.size()); @@ -120,7 +121,8 @@ complete_requests_uploaded_bytes_cache_, options_->download_total, upload_total_, std::move(active_guids), start_paused); - delegate_proxy_->CreateDownloadJob(GetWeakPtr(), std::move(fetch_description), + delegate_proxy_->CreateDownloadJob(weak_ptr_factory_.GetWeakPtr(), + std::move(fetch_description), std::move(active_fetch_requests)); } @@ -129,7 +131,7 @@ } bool BackgroundFetchJobController::HasMoreRequests() { - return completed_downloads_ < total_downloads_; + return completed_downloads_ + pending_downloads_ < total_downloads_; } void BackgroundFetchJobController::StartRequest( @@ -141,15 +143,15 @@ DCHECK(request); active_request_downloaded_bytes_ = 0; - active_request_finished_callback_ = std::move(request_finished_callback); + active_request_finished_callbacks_.emplace( + request->download_guid(), std::move(request_finished_callback)); if (IsMixedContent(*request.get()) || RequiresCorsPreflight(*request.get(), registration_id_.origin())) { request->SetEmptyResultWithFailureReason( BackgroundFetchResult::FailureReason::FETCH_ERROR); - ++completed_downloads_; - std::move(active_request_finished_callback_).Run(request); + NotifyDownloadComplete(std::move(request)); return; } @@ -194,22 +196,14 @@ const scoped_refptr<BackgroundFetchRequestInfo>& request) { DCHECK_CURRENTLY_ON(BrowserThread::IO); - // It's possible for the DidCompleteRequest() callback to have been in-flight - // while this Job Controller was being aborted, in which case the - // |active_request_finished_callback_| will have been reset. - if (!active_request_finished_callback_) - return; - - ++completed_downloads_; - if (request->can_populate_body()) complete_requests_downloaded_bytes_cache_ += request->GetFileSize(); - complete_requests_uploaded_bytes_cache_ += active_request_uploaded_bytes_; + active_request_downloaded_bytes_ -= request->GetFileSize(); - active_request_downloaded_bytes_ = 0u; - active_request_uploaded_bytes_ = 0u; + complete_requests_uploaded_bytes_cache_ += request->request_body_size(); + active_request_uploaded_bytes_ -= request->request_body_size(); - std::move(active_request_finished_callback_).Run(request); + NotifyDownloadComplete(request); } blink::mojom::BackgroundFetchRegistrationPtr @@ -233,9 +227,6 @@ BackgroundFetchFailureReason failure_reason) { failure_reason_ = failure_reason; - // Stop propagating any in-flight events to the scheduler. - active_request_finished_callback_.Reset(); - Finish(failure_reason_, base::DoNothing()); } @@ -244,9 +235,6 @@ ErrorCallback callback) { failure_reason_ = failure_reason; - // Stop propagating any in-flight events to the scheduler. - active_request_finished_callback_.Reset(); - // Cancel any in-flight downloads and UI through the BGFetchDelegate. delegate_proxy_->Abort(registration_id().unique_id()); @@ -270,7 +258,20 @@ .Run(registration_id_, reason_to_abort, std::move(callback)); } +void BackgroundFetchJobController::PopNextRequest( + RequestFinishedCallback request_finished_callback) { + DCHECK(HasMoreRequests()); + + ++pending_downloads_; + data_manager_->PopNextRequest( + registration_id(), + base::BindOnce(&BackgroundFetchJobController::DidPopNextRequest, + weak_ptr_factory_.GetWeakPtr(), + std::move(request_finished_callback))); +} + void BackgroundFetchJobController::DidPopNextRequest( + RequestFinishedCallback request_finished_callback, BackgroundFetchError error, scoped_refptr<BackgroundFetchRequestInfo> request_info) { if (error != BackgroundFetchError::NONE) { @@ -279,10 +280,7 @@ return; } - StartRequest( - std::move(request_info), - base::BindOnce(&BackgroundFetchJobController::MarkRequestAsComplete, - GetWeakPtr())); + StartRequest(std::move(request_info), std::move(request_finished_callback)); } void BackgroundFetchJobController::MarkRequestAsComplete( @@ -290,7 +288,7 @@ data_manager_->MarkRequestAsComplete( registration_id(), std::move(request_info), base::BindOnce(&BackgroundFetchJobController::DidMarkRequestAsComplete, - GetWeakPtr())); + weak_ptr_factory_.GetWeakPtr())); } void BackgroundFetchJobController::DidMarkRequestAsComplete( @@ -309,14 +307,20 @@ NOTREACHED(); } - if (HasMoreRequests()) { - data_manager_->PopNextRequest( - registration_id(), - base::BindOnce(&BackgroundFetchJobController::DidPopNextRequest, - GetWeakPtr())); + if (completed_downloads_ == total_downloads_) { + Finish(BackgroundFetchFailureReason::NONE, base::DoNothing()); return; } - Finish(BackgroundFetchFailureReason::NONE, base::DoNothing()); +} + +void BackgroundFetchJobController::NotifyDownloadComplete( + scoped_refptr<BackgroundFetchRequestInfo> request) { + --pending_downloads_; + ++completed_downloads_; + auto it = active_request_finished_callbacks_.find(request->download_guid()); + DCHECK(it != active_request_finished_callbacks_.end()); + std::move(it->second).Run(registration_id(), std::move(request)); + active_request_finished_callbacks_.erase(it); } void BackgroundFetchJobController::GetUploadData( @@ -325,7 +329,7 @@ data_manager_->GetRequestBlob( registration_id(), request, base::BindOnce(&BackgroundFetchJobController::DidGetUploadData, - GetWeakPtr(), std::move(callback))); + weak_ptr_factory_.GetWeakPtr(), std::move(callback))); } void BackgroundFetchJobController::DidGetUploadData(
diff --git a/content/browser/background_fetch/background_fetch_job_controller.h b/content/browser/background_fetch/background_fetch_job_controller.h index d185260..98b52ad 100644 --- a/content/browser/background_fetch/background_fetch_job_controller.h +++ b/content/browser/background_fetch/background_fetch_job_controller.h
@@ -49,7 +49,8 @@ using ProgressCallback = base::RepeatingCallback<void( const blink::mojom::BackgroundFetchRegistration&)>; using RequestFinishedCallback = - base::OnceCallback<void(scoped_refptr<BackgroundFetchRequestInfo>)>; + base::OnceCallback<void(const BackgroundFetchRegistrationId&, + scoped_refptr<BackgroundFetchRequestInfo>)>; BackgroundFetchJobController( BackgroundFetchDataManager* data_manager, @@ -87,10 +88,6 @@ return registration_id_; } - base::WeakPtr<BackgroundFetchJobController> GetWeakPtr() { - return weak_ptr_factory_.GetWeakPtr(); - } - // BackgroundFetchDelegateProxy::Controller implementation: void DidStartRequest( const scoped_refptr<BackgroundFetchRequestInfo>& request) override; @@ -111,22 +108,30 @@ void Abort(blink::mojom::BackgroundFetchFailureReason failure_reason, ErrorCallback callback); - // Request processing callbacks. - void StartRequest(scoped_refptr<BackgroundFetchRequestInfo> request, - RequestFinishedCallback request_finished_callback); + // Request processing. + void PopNextRequest(RequestFinishedCallback request_finished_callback); void DidPopNextRequest( + RequestFinishedCallback request_finished_callback, blink::mojom::BackgroundFetchError error, scoped_refptr<BackgroundFetchRequestInfo> request_info); - void MarkRequestAsComplete( - scoped_refptr<BackgroundFetchRequestInfo> request_info); + void StartRequest(scoped_refptr<BackgroundFetchRequestInfo> request, + RequestFinishedCallback request_finished_callback); + void MarkRequestAsComplete(scoped_refptr<BackgroundFetchRequestInfo> request); + + // Whether there are more requests to process as part of this job. + bool HasMoreRequests(); + + int pending_downloads() const { return pending_downloads_; } private: // Called after the request is completely processed, and the next one can be // started. void DidMarkRequestAsComplete(blink::mojom::BackgroundFetchError error); - // Whether there are more requests to process as part of this job. - bool HasMoreRequests(); + // Notifies the scheduler that the download is complete, and hands the result + // over. + void NotifyDownloadComplete( + scoped_refptr<BackgroundFetchRequestInfo> request); // Called when the job completes or has been aborted. |callback| will run // with the result of marking the registration for deletion. @@ -158,8 +163,10 @@ uint64_t active_request_downloaded_bytes_ = 0u; uint64_t active_request_uploaded_bytes_ = 0u; - // Finished callback to invoke when the active request has finished. - RequestFinishedCallback active_request_finished_callback_; + // Finished callback to invoke when the active request has finished mapped by + // its download GUID. + std::map<std::string, RequestFinishedCallback> + active_request_finished_callbacks_; // Cache of downloaded byte count stored by the DataManager, to enable // delivering progress events without having to read from the database. @@ -180,6 +187,9 @@ // Number of the requests that have been completed so far. int completed_downloads_ = 0; + // The number of requests that are currently being processed. + int pending_downloads_ = 0; + // The reason background fetch was aborted. blink::mojom::BackgroundFetchFailureReason failure_reason_ = blink::mojom::BackgroundFetchFailureReason::NONE;
diff --git a/content/browser/background_fetch/background_fetch_job_controller_unittest.cc b/content/browser/background_fetch/background_fetch_job_controller_unittest.cc index 9e944d8..bfc5139 100644 --- a/content/browser/background_fetch/background_fetch_job_controller_unittest.cc +++ b/content/browser/background_fetch/background_fetch_job_controller_unittest.cc
@@ -86,8 +86,8 @@ // To be called when a request for |registration_id| has finished. // Moves |request_info| to |out_request_info|. void GetRequestInfoOnRequestFinished( - const BackgroundFetchRegistrationId& registration_id, scoped_refptr<content::BackgroundFetchRequestInfo>* out_request_info, + const BackgroundFetchRegistrationId& registration_id, scoped_refptr<content::BackgroundFetchRequestInfo> request_info) { DCHECK(pending_requests_counts_.count(registration_id)); DCHECK(out_request_info); @@ -147,9 +147,6 @@ std::unique_ptr<BackgroundFetchJobController> CreateJobController( const BackgroundFetchRegistrationId& registration_id, int total_downloads) { - delegate_proxy_ = - std::make_unique<BackgroundFetchDelegateProxy>(browser_context()); - auto controller = std::make_unique<BackgroundFetchJobController>( /* data_manager= */ nullptr, delegate_proxy_.get(), registration_id, blink::mojom::BackgroundFetchOptions::New(), SkBitmap(), @@ -183,6 +180,9 @@ StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( BrowserContext::GetDefaultStoragePartition(browser_context())); + delegate_proxy_ = + std::make_unique<BackgroundFetchDelegateProxy>(browser_context()); + context_ = base::MakeRefCounted<BackgroundFetchContext>( browser_context(), base::WrapRefCounted(embedded_worker_test_helper()->context_wrapper()), @@ -256,7 +256,7 @@ controller->StartRequest( requests[0], base::BindOnce(&BackgroundFetchJobControllerTest::OnRequestFinished, - base::Unretained(this), registration_id)); + base::Unretained(this))); base::RunLoop().RunUntilIdle(); @@ -281,7 +281,7 @@ requests[0], base::BindOnce( &BackgroundFetchJobControllerTest::GetRequestInfoOnRequestFinished, - base::Unretained(this), registration_id, &requests[0])); + base::Unretained(this), &requests[0])); base::RunLoop().RunUntilIdle(); @@ -309,7 +309,7 @@ controller->StartRequest( requests[0], base::BindOnce(&BackgroundFetchJobControllerTest::OnRequestFinished, - base::Unretained(this), registration_id)); + base::Unretained(this))); base::RunLoop().RunUntilIdle(); @@ -319,7 +319,7 @@ controller->StartRequest( requests[1], base::BindOnce(&BackgroundFetchJobControllerTest::OnRequestFinished, - base::Unretained(this), registration_id)); + base::Unretained(this))); base::RunLoop().RunUntilIdle(); @@ -329,7 +329,7 @@ controller->StartRequest( requests[2], base::BindOnce(&BackgroundFetchJobControllerTest::OnRequestFinished, - base::Unretained(this), registration_id)); + base::Unretained(this))); base::RunLoop().RunUntilIdle(); @@ -356,7 +356,7 @@ requests[0], base::BindOnce( &BackgroundFetchJobControllerTest::GetRequestInfoOnRequestFinished, - base::Unretained(this), registration_id, &requests[0])); + base::Unretained(this), &requests[0])); base::RunLoop().RunUntilIdle(); @@ -368,7 +368,7 @@ requests[1], base::BindOnce( &BackgroundFetchJobControllerTest::GetRequestInfoOnRequestFinished, - base::Unretained(this), registration_id, &requests[1])); + base::Unretained(this), &requests[1])); base::RunLoop().RunUntilIdle(); @@ -393,7 +393,7 @@ controller->StartRequest( requests[0], base::BindOnce(&BackgroundFetchJobControllerTest::OnRequestFinished, - base::Unretained(this), registration_id)); + base::Unretained(this))); controller->Abort( blink::mojom::BackgroundFetchFailureReason::CANCELLED_FROM_UI, @@ -421,7 +421,7 @@ controller->StartRequest( requests[0], base::BindOnce(&BackgroundFetchJobControllerTest::OnRequestFinished, - base::Unretained(this), registration_id)); + base::Unretained(this))); { base::RunLoop run_loop;
diff --git a/content/browser/background_fetch/background_fetch_scheduler.cc b/content/browser/background_fetch/background_fetch_scheduler.cc index 23b75d4..951b1a8 100644 --- a/content/browser/background_fetch/background_fetch_scheduler.cc +++ b/content/browser/background_fetch/background_fetch_scheduler.cc
@@ -7,6 +7,7 @@ #include "base/bind.h" #include "base/bind_helpers.h" #include "base/guid.h" +#include "base/metrics/field_trial_params.h" #include "base/stl_util.h" #include "content/browser/background_fetch/background_fetch_data_manager.h" #include "content/browser/background_fetch/background_fetch_delegate_proxy.h" @@ -14,11 +15,28 @@ #include "content/browser/background_fetch/background_fetch_registration_notifier.h" #include "content/browser/service_worker/service_worker_context_core_observer.h" #include "content/browser/service_worker/service_worker_context_wrapper.h" +#include "content/public/common/content_features.h" #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom.h" #include "third_party/blink/public/mojom/fetch/fetch_api_response.mojom.h" namespace content { +namespace { + +// The maximum number of active registrations that can be processed +// concurrently. The active registrations are from distinct origins. +constexpr char kMaxActiveRegistrations[] = "max_active_registrations"; +constexpr int kMaxActiveRegistrationsDefaultValue = 2; + +// The maximum number of downloads the Download Service can process at the same +// time. +// TODO(crbug.com/919864): Figure out how to keep this in sync with the +// Download Service value. +constexpr char kMaxRunningDownloads[] = "max_running_downloads"; +constexpr int kMaxRunningDownloadsDefaultValue = 2; + +} // namespace + using blink::mojom::BackgroundFetchError; using blink::mojom::BackgroundFetchFailureReason; @@ -36,27 +54,65 @@ delegate_proxy_->SetClickEventDispatcher( base::BindRepeating(&BackgroundFetchScheduler::DispatchClickEvent, weak_ptr_factory_.GetWeakPtr())); + + max_active_registrations_ = base::GetFieldTrialParamByFeatureAsInt( + features::kBackgroundFetch, kMaxActiveRegistrations, + kMaxActiveRegistrationsDefaultValue); + max_running_downloads_ = base::GetFieldTrialParamByFeatureAsInt( + features::kBackgroundFetch, kMaxRunningDownloads, + kMaxRunningDownloadsDefaultValue); } BackgroundFetchScheduler::~BackgroundFetchScheduler() = default; -void BackgroundFetchScheduler::ScheduleDownload() { - DCHECK(!active_controller_); +bool BackgroundFetchScheduler::ScheduleDownload() { + DCHECK_LT(num_running_downloads_, max_running_downloads_); - if (controller_ids_.empty()) - return; + // 1. Try to activate a registration from a different origin. + if (num_active_registrations_ < max_active_registrations_ && + !controller_ids_.empty()) { + // Try to find a pending registration with a different origin. + for (const auto& controller_id : controller_ids_) { + // Make sure the origin is not already active. + bool is_new_origin = true; + for (auto* controller : active_controllers_) { + if (controller->registration_id().origin().IsSameOriginWith( + controller_id.origin())) { + is_new_origin = false; + break; + } + } - DCHECK(!job_controllers_.empty()); + if (is_new_origin) { + // Start new registration, and move to the front of the queue. + auto* controller = job_controllers_[controller_id.unique_id()].get(); + active_controllers_.push_front(controller); + ++num_active_registrations_; + base::Erase(controller_ids_, controller_id); + break; + } + } + } - std::string controller_id = controller_ids_.front(); - controller_ids_.pop_front(); - active_controller_ = job_controllers_[controller_id].get(); - DCHECK(active_controller_); + // 2. Try to start a request within the LRU registration. + for (auto it = active_controllers_.begin(); it != active_controllers_.end(); + ++it) { + auto* controller = *it; + if (!controller->HasMoreRequests()) + continue; - data_manager_->PopNextRequest( - active_controller_->registration_id(), - base::BindOnce(&BackgroundFetchJobController::DidPopNextRequest, - active_controller_->GetWeakPtr())); + // Activate a request within |controller| and move it to the end of the + // queue. + ++num_running_downloads_; + controller->PopNextRequest( + base::BindOnce(&BackgroundFetchScheduler::DidCompleteRequest, + weak_ptr_factory_.GetWeakPtr())); + + active_controllers_.erase(it); + active_controllers_.push_back(controller); + return true; + } + return false; } void BackgroundFetchScheduler::Abort( @@ -66,7 +122,7 @@ DCHECK_EQ(failure_reason, BackgroundFetchFailureReason::CANCELLED_BY_DEVELOPER); - base::Erase(controller_ids_, registration_id.unique_id()); + base::Erase(controller_ids_, registration_id); auto it = job_controllers_.find(registration_id.unique_id()); if (it == job_controllers_.end()) { @@ -77,15 +133,27 @@ it->second->Abort(failure_reason, std::move(callback)); } +void BackgroundFetchScheduler::DidCompleteRequest( + const BackgroundFetchRegistrationId& registration_id, + scoped_refptr<BackgroundFetchRequestInfo> request_info) { + auto* controller = GetActiveController(registration_id); + if (controller) + controller->MarkRequestAsComplete(std::move(request_info)); + + --num_running_downloads_; + if (num_running_downloads_ < max_running_downloads_) + ScheduleDownload(); +} + void BackgroundFetchScheduler::FinishJob( const BackgroundFetchRegistrationId& registration_id, BackgroundFetchFailureReason failure_reason, base::OnceCallback<void(BackgroundFetchError)> callback) { - bool job_started = false; - if (active_controller_ && - active_controller_->registration_id() == registration_id) { - active_controller_ = nullptr; - job_started = true; + auto* active_controller = GetActiveController(registration_id); + if (active_controller) { + base::EraseIf(active_controllers_, [®istration_id](auto* controller) { + return controller->registration_id() == registration_id; + }); } data_manager_->MarkRegistrationForDeletion( @@ -94,17 +162,23 @@ BackgroundFetchFailureReason::NONE, base::BindOnce(&BackgroundFetchScheduler::DidMarkForDeletion, weak_ptr_factory_.GetWeakPtr(), registration_id, - job_started, std::move(callback))); + /* job_started= */ active_controller != nullptr, + std::move(callback))); auto it = job_controllers_.find(registration_id.unique_id()); if (it != job_controllers_.end()) { completed_fetches_[it->first] = {registration_id, it->second->NewRegistration()}; + + // Reset scheduler params. + num_running_downloads_ -= it->second->pending_downloads(); + --num_active_registrations_; + // Destroying the controller will stop all in progress tasks. job_controllers_.erase(it); } - if (!active_controller_) + if (num_running_downloads_ < max_running_downloads_) ScheduleDownload(); } @@ -175,11 +249,12 @@ void BackgroundFetchScheduler::DispatchClickEvent( const std::string& unique_id) { // Case 1: The active fetch received a click event. - if (active_controller_ && - active_controller_->registration_id().unique_id() == unique_id) { + auto* active_controller = GetActiveController(unique_id); + + if (active_controller) { event_dispatcher_.DispatchBackgroundFetchClickEvent( - active_controller_->registration_id(), - active_controller_->NewRegistration(), base::DoNothing()); + active_controller->registration_id(), + active_controller->NewRegistration(), base::DoNothing()); return; } @@ -240,9 +315,13 @@ DCHECK_EQ(job_controllers_.count(registration_id.unique_id()), 0u); job_controllers_[registration_id.unique_id()] = std::move(controller); - controller_ids_.push_back(registration_id.unique_id()); - if (!active_controller_) - ScheduleDownload(); + controller_ids_.push_back(registration_id); + + // Schedule as much as possible. + while (num_running_downloads_ < max_running_downloads_) { + if (!ScheduleDownload()) + return; + } } void BackgroundFetchScheduler::OnRegistrationLoadedAtStartup( @@ -261,29 +340,28 @@ num_completed_requests, num_requests, active_fetch_requests, /* start_paused= */ false); - // The current assumption is that there can be only one active job with one - // active fetch. - DCHECK(!active_controller_); - active_controller_ = controller.get(); + auto* controller_ptr = controller.get(); + active_controllers_.push_back(controller_ptr); job_controllers_[registration_id.unique_id()] = std::move(controller); - DCHECK_LE(active_fetch_requests.size(), 1u); + ++num_active_registrations_; + num_running_downloads_ += active_fetch_requests.size(); if (active_fetch_requests.empty()) { DCHECK_LT(num_completed_requests, num_requests); // Start processing the next request. - data_manager_->PopNextRequest( - active_controller_->registration_id(), - base::BindOnce(&BackgroundFetchJobController::DidPopNextRequest, - active_controller_->GetWeakPtr())); + ++num_running_downloads_; + controller_ptr->PopNextRequest( + base::BindOnce(&BackgroundFetchScheduler::DidCompleteRequest, + weak_ptr_factory_.GetWeakPtr())); return; } for (auto& request_info : active_fetch_requests) { - active_controller_->StartRequest( + controller_ptr->StartRequest( std::move(request_info), - base::BindOnce(&BackgroundFetchJobController::MarkRequestAsComplete, - active_controller_->GetWeakPtr())); + base::BindOnce(&BackgroundFetchScheduler::DidCompleteRequest, + weak_ptr_factory_.GetWeakPtr())); } } @@ -314,7 +392,7 @@ for (auto* controller : to_abort) { // Erase it from |controller_ids_| first to avoid rescheduling. - base::Erase(controller_ids_, controller->registration_id().unique_id()); + base::Erase(controller_ids_, controller->registration_id()); controller->Abort(BackgroundFetchFailureReason::SERVICE_WORKER_UNAVAILABLE, base::DoNothing()); } @@ -323,18 +401,16 @@ void BackgroundFetchScheduler::OnRegistrationQueried( blink::mojom::BackgroundFetchRegistration* registration) { DCHECK(registration); - if (!active_controller_) + + auto* controller = GetActiveController(registration->unique_id); + if (!controller) return; // The data manager only has the number of bytes from completed downloads, so // augment this with the number of downloaded/uploaded bytes from in-progress // jobs. - if (active_controller_->registration_id().unique_id() == - registration->unique_id) { - registration->downloaded += - active_controller_->GetInProgressDownloadedBytes(); - registration->uploaded += active_controller_->GetInProgressUploadedBytes(); - } + registration->downloaded += controller->GetInProgressDownloadedBytes(); + registration->uploaded += controller->GetInProgressUploadedBytes(); } void BackgroundFetchScheduler::OnServiceWorkerDatabaseCorrupted( @@ -353,4 +429,24 @@ AbortFetches(blink::mojom::kInvalidServiceWorkerRegistrationId); } +BackgroundFetchJobController* BackgroundFetchScheduler::GetActiveController( + const BackgroundFetchRegistrationId& registration_id) { + for (auto* controller : active_controllers_) { + if (controller->registration_id() == registration_id) + return controller; + } + return nullptr; +} + +BackgroundFetchJobController* BackgroundFetchScheduler::GetActiveController( + const std::string& unique_id) { + // |unique_id| is used for all BackgroundFetchRegistrationId comparisons, so + // this creates a |unique_id| wrapper with default values for other + // parameters. + BackgroundFetchRegistrationId registration_id( + /* service_worker_registration_id= */ 0, /* origin= */ url::Origin(), + /* developer_id= */ "", unique_id); + return GetActiveController(registration_id); +} + } // namespace content
diff --git a/content/browser/background_fetch/background_fetch_scheduler.h b/content/browser/background_fetch/background_fetch_scheduler.h index 1cb4820..f6895fcd 100644 --- a/content/browser/background_fetch/background_fetch_scheduler.h +++ b/content/browser/background_fetch/background_fetch_scheduler.h
@@ -84,13 +84,21 @@ friend class BackgroundFetchJobControllerTest; friend class BackgroundFetchSchedulerTest; - void ScheduleDownload(); + // Schedules a download, if possible, and returns whether successful. + bool ScheduleDownload(); // Helper method to abandon ongoing fetches for a given service worker. // Abandons all of them if |service_worker_registration_id| is set to // blink::mojom::kInvalidServiceWorkerRegistrationId. void AbortFetches(int64_t service_worker_registration_id); + // Returns the active job controller, if any, for |registration_id| or + // |unique_id|. Returns nullptr if the job isn't currently active. + BackgroundFetchJobController* GetActiveController( + const BackgroundFetchRegistrationId& registration_id); + BackgroundFetchJobController* GetActiveController( + const std::string& unique_id); + std::unique_ptr<BackgroundFetchJobController> CreateInitializedController( const BackgroundFetchRegistrationId& registration_id, const blink::mojom::BackgroundFetchRegistration& registration, @@ -102,6 +110,10 @@ active_fetch_requests, bool start_paused); + void DidCompleteRequest( + const BackgroundFetchRegistrationId& registration_id, + scoped_refptr<BackgroundFetchRequestInfo> request_info); + void FinishJob( const BackgroundFetchRegistrationId& registration_id, blink::mojom::BackgroundFetchFailureReason failure_reason, @@ -127,7 +139,7 @@ BackgroundFetchEventDispatcher event_dispatcher_; // The order in which to process the job controllers. - base::circular_deque<std::string> controller_ids_; + base::circular_deque<BackgroundFetchRegistrationId> controller_ids_; // Map from background fetch registration |unique_id|s to active job // controllers. Must be destroyed before |data_manager_|, |scheduler_| and @@ -135,8 +147,8 @@ std::map<std::string, std::unique_ptr<BackgroundFetchJobController>> job_controllers_; - // The current fetch jo controller that is being processed. - BackgroundFetchJobController* active_controller_ = nullptr; + // The current fetch job controllers that are being processed. + base::circular_deque<BackgroundFetchJobController*> active_controllers_; // Map from |unique_id|s to {|registration_id|, |registration|}. // An entry in here means the fetch has completed. This information is needed @@ -147,6 +159,12 @@ blink::mojom::BackgroundFetchRegistrationPtr>> completed_fetches_; + // Scheduling params - Finch configurable. + int max_running_downloads_; + int max_active_registrations_; + int num_active_registrations_ = 0; + int num_running_downloads_ = 0; + base::WeakPtrFactory<BackgroundFetchScheduler> weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(BackgroundFetchScheduler);
diff --git a/content/browser/background_fetch/background_fetch_scheduler_unittest.cc b/content/browser/background_fetch/background_fetch_scheduler_unittest.cc index eefbd0f..1d26645 100644 --- a/content/browser/background_fetch/background_fetch_scheduler_unittest.cc +++ b/content/browser/background_fetch/background_fetch_scheduler_unittest.cc
@@ -95,21 +95,22 @@ protected: void InitializeControllerWithRequests( + const url::Origin& fetch_origin, const std::vector<std::string>& requests) { std::vector<blink::mojom::FetchAPIRequestPtr> fetch_requests; for (auto& request : requests) { auto fetch_request = blink::mojom::FetchAPIRequest::New(); fetch_request->referrer = blink::mojom::Referrer::New(); - fetch_request->url = GURL(origin().GetURL().spec() + request); + fetch_request->url = GURL(fetch_origin.GetURL().spec() + request); CreateRequestWithProvidedResponse(fetch_request->method, fetch_request->url, TestResponseBuilder(200).Build()); fetch_requests.push_back(std::move(fetch_request)); } - int64_t sw_id = RegisterServiceWorker(); + int64_t sw_id = RegisterServiceWorkerForOrigin(fetch_origin); BackgroundFetchRegistrationId registration_id( - sw_id, origin(), base::GenerateGUID(), base::GenerateGUID()); + sw_id, fetch_origin, base::GenerateGUID(), base::GenerateGUID()); data_manager_->CreateRegistration( registration_id, std::move(fetch_requests), blink::mojom::BackgroundFetchOptions::New(), SkBitmap(), @@ -127,7 +128,7 @@ /* start_paused= */ false); scheduler_->job_controllers_[registration_id.unique_id()] = std::move(controller); - scheduler_->controller_ids_.push_back(registration_id.unique_id()); + scheduler_->controller_ids_.push_back(registration_id); } void RunSchedulerToCompletion() { @@ -140,12 +141,26 @@ blink::mojom::BackgroundFetchFailureReason failure_reason, base::OnceCallback<void(blink::mojom::BackgroundFetchError)> callback) { DCHECK_EQ(failure_reason, blink::mojom::BackgroundFetchFailureReason::NONE); + base::EraseIf(scheduler_->active_controllers_, + [®istration_id](auto* controller) { + return controller->registration_id() == registration_id; + }); scheduler_->job_controllers_.erase(registration_id.unique_id()); - scheduler_->active_controller_ = nullptr; + --scheduler_->num_active_registrations_; scheduler_->ScheduleDownload(); } protected: + void MakeSchedulerSequential() { + scheduler_->max_running_downloads_ = 1; + scheduler_->max_active_registrations_ = 1; + } + + void MakeSchedulerConcurrent() { + scheduler_->max_running_downloads_ = 2; + scheduler_->max_active_registrations_ = 2; + } + std::vector<std::string> controller_sequence_list_; private: @@ -154,23 +169,81 @@ std::unique_ptr<BackgroundFetchScheduler> scheduler_; }; -TEST_F(BackgroundFetchSchedulerTest, SingleController) { +TEST_F(BackgroundFetchSchedulerTest, SingleControllerSynchronous) { + MakeSchedulerSequential(); + std::vector<std::string> requests = {"A1", "A2", "A3", "A4"}; - InitializeControllerWithRequests(requests); + InitializeControllerWithRequests(origin(), requests); RunSchedulerToCompletion(); EXPECT_EQ(requests, controller_sequence_list_); } -TEST_F(BackgroundFetchSchedulerTest, TwoControllers) { +TEST_F(BackgroundFetchSchedulerTest, SingleControllerConcurrent) { + MakeSchedulerConcurrent(); + + std::vector<std::string> requests = {"A1", "A2", "A3", "A4"}; + InitializeControllerWithRequests(origin(), requests); + RunSchedulerToCompletion(); + EXPECT_EQ(requests, controller_sequence_list_); +} + +TEST_F(BackgroundFetchSchedulerTest, TwoControllersSynchronous) { + MakeSchedulerSequential(); + std::vector<std::string> all_requests = {"A1", "A2", "A3", "A4", "B1", "B2", "B3"}; // Create a controller with A1 -> A4. InitializeControllerWithRequests( + url::Origin::Create(GURL("https://A.com")), std::vector<std::string>(all_requests.begin(), all_requests.begin() + 4)); // Create a controller with B1 -> B4. InitializeControllerWithRequests( + url::Origin::Create(GURL("https://B.com")), + std::vector<std::string>(all_requests.begin() + 4, all_requests.end())); + + RunSchedulerToCompletion(); + EXPECT_EQ(all_requests, controller_sequence_list_); +} + +TEST_F(BackgroundFetchSchedulerTest, TwoControllersConcurrent) { + MakeSchedulerConcurrent(); + + std::vector<std::string> all_requests = {"A1", "A2", "A3", "A4", + "B1", "B2", "B3"}; + + // Create a controller with A1 -> A4. + InitializeControllerWithRequests( + url::Origin::Create(GURL("https://A.com")), + std::vector<std::string>(all_requests.begin(), all_requests.begin() + 4)); + + // Create a controller with B1 -> B4. + InitializeControllerWithRequests( + url::Origin::Create(GURL("https://B.com")), + std::vector<std::string>(all_requests.begin() + 4, all_requests.end())); + + RunSchedulerToCompletion(); + + std::vector<std::string> expected_sequence_list = {"A1", "B1", "A2", "B2", + "A3", "B3", "A4"}; + EXPECT_EQ(expected_sequence_list, controller_sequence_list_); +} + +TEST_F(BackgroundFetchSchedulerTest, TwoControllersConcurrentSameOrigin) { + MakeSchedulerConcurrent(); + + std::vector<std::string> all_requests = {"A1", "A2", "A3", "A4", + "B1", "B2", "B3"}; + + // Create a controller with A1 -> A4. + InitializeControllerWithRequests( + origin(), + std::vector<std::string>(all_requests.begin(), all_requests.begin() + 4)); + + // Create a controller with B1 -> B4. + InitializeControllerWithRequests( + origin(), std::vector<std::string>(all_requests.begin() + 4, all_requests.end())); RunSchedulerToCompletion();
diff --git a/content/browser/background_fetch/background_fetch_test_base.cc b/content/browser/background_fetch/background_fetch_test_base.cc index 0a0f360..301e3bb 100644 --- a/content/browser/background_fetch/background_fetch_test_base.cc +++ b/content/browser/background_fetch/background_fetch_test_base.cc
@@ -32,7 +32,6 @@ namespace { const char kTestOrigin[] = "https://example.com/"; -const char kTestScriptUrl[] = "https://example.com/sw.js"; void DidRegisterServiceWorker(int64_t* out_service_worker_registration_id, base::Closure quit_closure, @@ -68,8 +67,8 @@ std::move(quit_closure).Run(); } -GURL GetScopeForId(int64_t id) { - return GURL(kTestOrigin + base::IntToString(id)); +GURL GetScopeForId(const std::string& origin, int64_t id) { + return GURL(origin + base::IntToString(id)); } } // namespace @@ -98,13 +97,18 @@ } int64_t BackgroundFetchTestBase::RegisterServiceWorker() { - GURL script_url(kTestScriptUrl); + return RegisterServiceWorkerForOrigin(origin_); +} + +int64_t BackgroundFetchTestBase::RegisterServiceWorkerForOrigin( + const url::Origin& origin) { + GURL script_url(origin.GetURL().spec() + "sw.js"); int64_t service_worker_registration_id = blink::mojom::kInvalidServiceWorkerRegistrationId; { blink::mojom::ServiceWorkerRegistrationOptions options; - options.scope = GetScopeForId(next_pattern_id_++); + options.scope = GetScopeForId(origin.GetURL().spec(), next_pattern_id_++); base::RunLoop run_loop; embedded_worker_test_helper_.context()->RegisterServiceWorker( script_url, options, @@ -126,7 +130,7 @@ { base::RunLoop run_loop; embedded_worker_test_helper_.context()->storage()->FindRegistrationForId( - service_worker_registration_id, origin_.GetURL(), + service_worker_registration_id, origin.GetURL(), base::BindOnce(&DidFindServiceWorkerRegistration, &service_worker_registration, run_loop.QuitClosure())); @@ -151,7 +155,7 @@ int64_t service_worker_registration_id) { base::RunLoop run_loop; embedded_worker_test_helper_.context()->UnregisterServiceWorker( - GetScopeForId(service_worker_registration_id), + GetScopeForId(kTestOrigin, service_worker_registration_id), base::BindOnce(&DidUnregisterServiceWorker, run_loop.QuitClosure())); run_loop.Run(); }
diff --git a/content/browser/background_fetch/background_fetch_test_base.h b/content/browser/background_fetch/background_fetch_test_base.h index 7d25437..bfa6cd1 100644 --- a/content/browser/background_fetch/background_fetch_test_base.h +++ b/content/browser/background_fetch/background_fetch_test_base.h
@@ -45,6 +45,9 @@ // ServiceWorkerRegistration will be kept alive for the test's lifetime. int64_t RegisterServiceWorker(); + // `RegisterServiceWorker` but for the provided |origin|. + int64_t RegisterServiceWorkerForOrigin(const url::Origin& origin); + // Unregisters the test Service Worker and verifies that the unregistration // succeeded. void UnregisterServiceWorker(int64_t service_worker_registration_id);
diff --git a/content/browser/browser_child_process_host_impl.cc b/content/browser/browser_child_process_host_impl.cc index 007e3b7..1ba09d4 100644 --- a/content/browser/browser_child_process_host_impl.cc +++ b/content/browser/browser_child_process_host_impl.cc
@@ -316,6 +316,7 @@ switches::kDisableBackgroundTasks, switches::kDisableLogging, switches::kEnableLogging, + switches::kEnablePerfetto, switches::kIPCConnectionTimeout, switches::kLogFile, switches::kLoggingLevel,
diff --git a/content/browser/browsing_data/browsing_data_remover_impl.cc b/content/browser/browsing_data/browsing_data_remover_impl.cc index 3d58ce1..bbbf6c6 100644 --- a/content/browser/browsing_data/browsing_data_remover_impl.cc +++ b/content/browser/browsing_data/browsing_data_remover_impl.cc
@@ -445,6 +445,7 @@ CreatePendingTaskCompletionClosureForMojo()); } storage_partition->ClearCodeCaches( + delete_begin, delete_end, nullable_filter, CreatePendingTaskCompletionClosureForMojo()); // When clearing cache, wipe accumulated network related data
diff --git a/content/browser/browsing_data/browsing_data_remover_impl_unittest.cc b/content/browser/browsing_data/browsing_data_remover_impl_unittest.cc index 059969e5b..aa307b8 100644 --- a/content/browser/browsing_data/browsing_data_remover_impl_unittest.cc +++ b/content/browser/browsing_data/browsing_data_remover_impl_unittest.cc
@@ -123,7 +123,8 @@ remove_end(other.remove_end), origin_matcher(other.origin_matcher), cookie_deletion_filter(other.cookie_deletion_filter.Clone()), - remove_code_cache(other.remove_code_cache) {} + remove_code_cache(other.remove_code_cache), + url_matcher(other.url_matcher) {} StoragePartitionRemovalData& operator=( const StoragePartitionRemovalData& rhs) { @@ -134,6 +135,7 @@ origin_matcher = rhs.origin_matcher; cookie_deletion_filter = rhs.cookie_deletion_filter.Clone(); remove_code_cache = rhs.remove_code_cache; + url_matcher = rhs.url_matcher; return *this; } @@ -144,6 +146,7 @@ StoragePartition::OriginMatcherFunction origin_matcher; CookieDeletionFilterPtr cookie_deletion_filter; bool remove_code_cache; + base::RepeatingCallback<bool(const GURL&)> url_matcher; }; net::CanonicalCookie CreateCookieWithHost(const GURL& source) { @@ -211,8 +214,15 @@ base::Unretained(this), std::move(callback))); } - void ClearCodeCaches(base::OnceClosure callback) override { + void ClearCodeCaches( + base::Time begin, + base::Time end, + const base::RepeatingCallback<bool(const GURL&)>& url_matcher, + base::OnceClosure callback) override { storage_partition_removal_data_.remove_code_cache = true; + storage_partition_removal_data_.remove_begin = begin; + storage_partition_removal_data_.remove_end = end; + storage_partition_removal_data_.url_matcher = url_matcher; } const StoragePartitionRemovalData& GetStoragePartitionRemovalData() const {
diff --git a/content/browser/browsing_data/conditional_cache_deletion_helper.cc b/content/browser/browsing_data/conditional_cache_deletion_helper.cc index 759a9f8..1f64abc 100644 --- a/content/browser/browsing_data/conditional_cache_deletion_helper.cc +++ b/content/browser/browsing_data/conditional_cache_deletion_helper.cc
@@ -14,13 +14,17 @@ namespace { bool EntryPredicateFromURLsAndTime( - const base::Callback<bool(const GURL&)>& url_predicate, - const base::Time& begin_time, - const base::Time& end_time, + const base::RepeatingCallback<bool(const GURL&)>& url_predicate, + const base::RepeatingCallback<std::string(const std::string&)>& + get_url_from_key, + base::Time begin_time, + base::Time end_time, const disk_cache::Entry* entry) { + std::string url = entry->GetKey(); + if (!get_url_from_key.is_null()) + url = get_url_from_key.Run(entry->GetKey()); return (entry->GetLastUsed() >= begin_time && - entry->GetLastUsed() < end_time && - url_predicate.Run(GURL(entry->GetKey()))); + entry->GetLastUsed() < end_time && url_predicate.Run(GURL(url))); } } // namespace @@ -29,9 +33,9 @@ ConditionalCacheDeletionHelper::ConditionalCacheDeletionHelper( disk_cache::Backend* cache, - const base::Callback<bool(const disk_cache::Entry*)>& condition) + base::RepeatingCallback<bool(const disk_cache::Entry*)> condition) : cache_(cache), - condition_(condition), + condition_(std::move(condition)), current_entry_(nullptr), previous_entry_(nullptr) { DCHECK_CURRENTLY_ON(BrowserThread::IO); @@ -40,12 +44,28 @@ // static base::Callback<bool(const disk_cache::Entry*)> ConditionalCacheDeletionHelper::CreateURLAndTimeCondition( - const base::Callback<bool(const GURL&)>& url_predicate, - const base::Time& begin_time, - const base::Time& end_time) { - return base::Bind(&EntryPredicateFromURLsAndTime, url_predicate, - begin_time.is_null() ? base::Time() : begin_time, - end_time.is_null() ? base::Time::Max() : end_time); + base::RepeatingCallback<bool(const GURL&)> url_predicate, + base::Time begin_time, + base::Time end_time) { + return base::BindRepeating( + &EntryPredicateFromURLsAndTime, std::move(url_predicate), + base::RepeatingCallback<std::string(const std::string&)>(), + begin_time.is_null() ? base::Time() : begin_time, + end_time.is_null() ? base::Time::Max() : end_time); +} + +// static +base::RepeatingCallback<bool(const disk_cache::Entry*)> +ConditionalCacheDeletionHelper::CreateCustomKeyURLAndTimeCondition( + base::RepeatingCallback<bool(const GURL&)> url_predicate, + base::RepeatingCallback<std::string(const std::string&)> get_url_from_key, + base::Time begin_time, + base::Time end_time) { + return base::BindRepeating(&EntryPredicateFromURLsAndTime, + std::move(url_predicate), + std::move(get_url_from_key), + begin_time.is_null() ? base::Time() : begin_time, + end_time.is_null() ? base::Time::Max() : end_time); } int ConditionalCacheDeletionHelper::DeleteAndDestroySelfWhenFinished(
diff --git a/content/browser/browsing_data/conditional_cache_deletion_helper.h b/content/browser/browsing_data/conditional_cache_deletion_helper.h index ba0eb73..40f41c8 100644 --- a/content/browser/browsing_data/conditional_cache_deletion_helper.h +++ b/content/browser/browsing_data/conditional_cache_deletion_helper.h
@@ -21,14 +21,14 @@ namespace content { -// Helper to remove http cache data from a StoragePartition. +// Helper to remove http/code cache data from a StoragePartition. class CONTENT_EXPORT ConditionalCacheDeletionHelper { public: // Creates a helper to delete |cache| entries that match the |condition|. // Must be created on the IO thread! ConditionalCacheDeletionHelper( disk_cache::Backend* cache, - const base::Callback<bool(const disk_cache::Entry*)>& condition); + base::RepeatingCallback<bool(const disk_cache::Entry*)> condition); // A convenience method to create a condition matching cache entries whose // last modified time is between |begin_time| (inclusively), |end_time| @@ -37,9 +37,22 @@ // in their respective direction. static base::Callback<bool(const disk_cache::Entry*)> CreateURLAndTimeCondition( - const base::Callback<bool(const GURL&)>& url_predicate, - const base::Time& begin_time, - const base::Time& end_time); + base::RepeatingCallback<bool(const GURL&)> url_predicate, + base::Time begin_time, + base::Time end_time); + + // A convenience method to create a condition matching cache entries whose + // last modified time is between |begin_time| (inclusively), |end_time| + // (exclusively) and whose URL obtained by passing the key to the + // |get_url_from_key| is matched by the |url_predicate|. The + // |get_url_from_key| method is useful when the entries are not keyed by the + // resource url alone. For ex: using two keys for site isolation. + static base::RepeatingCallback<bool(const disk_cache::Entry*)> + CreateCustomKeyURLAndTimeCondition( + base::RepeatingCallback<bool(const GURL&)> url_predicate, + base::RepeatingCallback<std::string(const std::string&)> get_url_from_key, + base::Time begin_time, + base::Time end_time); // Deletes the cache entries according to the specified condition. Destroys // this instance of ConditionalCacheDeletionHelper when finished.
diff --git a/content/browser/browsing_data/storage_partition_code_cache_data_remover.cc b/content/browser/browsing_data/storage_partition_code_cache_data_remover.cc index b9a9020..773878ac 100644 --- a/content/browser/browsing_data/storage_partition_code_cache_data_remover.cc +++ b/content/browser/browsing_data/storage_partition_code_cache_data_remover.cc
@@ -17,20 +17,31 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/storage_partition.h" #include "content/public/common/content_features.h" +#include "net/disk_cache/disk_cache.h" namespace content { StoragePartitionCodeCacheDataRemover::StoragePartitionCodeCacheDataRemover( - GeneratedCodeCacheContext* generated_code_cache_context) - : generated_code_cache_context_(generated_code_cache_context) {} + GeneratedCodeCacheContext* generated_code_cache_context, + base::RepeatingCallback<bool(const GURL&)> url_predicate, + base::Time begin_time, + base::Time end_time) + : generated_code_cache_context_(generated_code_cache_context), + begin_time_(begin_time), + end_time_(end_time), + url_predicate_(std::move(url_predicate)) {} // static StoragePartitionCodeCacheDataRemover* StoragePartitionCodeCacheDataRemover::Create( - content::StoragePartition* storage_partition) { + content::StoragePartition* storage_partition, + base::RepeatingCallback<bool(const GURL&)> url_predicate, + base::Time begin_time, + base::Time end_time) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return new StoragePartitionCodeCacheDataRemover( - storage_partition->GetGeneratedCodeCacheContext()); + storage_partition->GetGeneratedCodeCacheContext(), + std::move(url_predicate), begin_time, end_time); } StoragePartitionCodeCacheDataRemover::~StoragePartitionCodeCacheDataRemover() {} @@ -54,45 +65,66 @@ base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this); } +void StoragePartitionCodeCacheDataRemover::ClearCache( + net::CompletionCallback callback, + disk_cache::Backend* backend) { + if (backend == nullptr) { + std::move(callback).Run(net::ERR_FAILED); + return; + } + int result = net::ERR_FAILED; + if (!url_predicate_.is_null()) { + result = + (new ConditionalCacheDeletionHelper( + backend, + ConditionalCacheDeletionHelper::CreateCustomKeyURLAndTimeCondition( + std::move(url_predicate_), + base::BindRepeating( + &GeneratedCodeCache::GetResourceURLFromKey), + begin_time_, end_time_))) + ->DeleteAndDestroySelfWhenFinished(callback); + } else if (begin_time_.is_null() && end_time_.is_max()) { + result = backend->DoomAllEntries(callback); + } else { + result = backend->DoomEntriesBetween(begin_time_, end_time_, callback); + } + // When result is ERR_IO_PENDING the callback would be called after the + // operation has finished. + if (result != net::ERR_IO_PENDING) { + std::move(callback).Run(result); + } +} + void StoragePartitionCodeCacheDataRemover::ClearJSCodeCache() { - int status = net::ERR_FAILED; if (generated_code_cache_context_ && generated_code_cache_context_->generated_js_code_cache()) { - // TODO(crbug.com/866419): Currently we just clear entire caches. - // Change it to conditionally clear entries based on the filters. - // Likewise for WASM code cache. - status = - generated_code_cache_context_->generated_js_code_cache()->ClearCache( - base::BindRepeating( - &StoragePartitionCodeCacheDataRemover::ClearWASMCodeCache, - base::Unretained(this))); - } - // The callback would be called by the cache backend once the request is - // serviced. - if (status != net::ERR_IO_PENDING) { - ClearWASMCodeCache(status); + net::CompletionCallback callback = base::BindRepeating( + &StoragePartitionCodeCacheDataRemover::ClearWASMCodeCache, + base::Unretained(this)); + generated_code_cache_context_->generated_js_code_cache()->GetBackend( + base::BindOnce(&StoragePartitionCodeCacheDataRemover::ClearCache, + base::Unretained(this), std::move(callback))); + } else { + // When there is no JS cache, see if we need to remove WASM cache. When + // there is JS cache, the WASM cache would be removed after the JS cache. + ClearWASMCodeCache(net::ERR_FAILED); } } // |rv| is the returned when clearing the code cache. We don't handle // any errors here, so the result value is ignored. void StoragePartitionCodeCacheDataRemover::ClearWASMCodeCache(int rv) { - int status = net::ERR_FAILED; if (generated_code_cache_context_ && generated_code_cache_context_->generated_wasm_code_cache()) { - // TODO(crbug.com/866419): Currently we just clear entire caches. - // Change it to conditionally clear entries based on the filters. - // Likewise for JS code cache. - status = - generated_code_cache_context_->generated_wasm_code_cache()->ClearCache( - base::BindRepeating( - &StoragePartitionCodeCacheDataRemover::DoneClearCodeCache, - base::Unretained(this))); - } - // The callback would be called by the cache backend once the request is - // serviced. - if (status != net::ERR_IO_PENDING) { - DoneClearCodeCache(status); + net::CompletionCallback callback = base::BindRepeating( + &StoragePartitionCodeCacheDataRemover::DoneClearCodeCache, + base::Unretained(this)); + generated_code_cache_context_->generated_wasm_code_cache()->GetBackend( + base::BindOnce(&StoragePartitionCodeCacheDataRemover::ClearCache, + base::Unretained(this), std::move(callback))); + } else { + // There is no Wasm cache, done with clearing caches. + DoneClearCodeCache(net::ERR_FAILED); } }
diff --git a/content/browser/browsing_data/storage_partition_code_cache_data_remover.h b/content/browser/browsing_data/storage_partition_code_cache_data_remover.h index 5506d18..89fc1c1a 100644 --- a/content/browser/browsing_data/storage_partition_code_cache_data_remover.h +++ b/content/browser/browsing_data/storage_partition_code_cache_data_remover.h
@@ -10,13 +10,19 @@ #include "base/callback.h" #include "base/macros.h" #include "base/sequenced_task_runner_helpers.h" +#include "net/base/completion_callback.h" +#include "url/gurl.h" + +namespace disk_cache { +class Backend; +} namespace content { class StoragePartition; class GeneratedCodeCacheContext; -// Helper to remove http cache data from a StoragePartition. This class is +// Helper to remove code cache data from a StoragePartition. This class is // created on the UI thread and calls the provided callback and destroys itself // on the UI thread after the code caches are cleared. This class also takes a // reference to the generated_code_cache_context and is used in read-only mode @@ -30,10 +36,18 @@ // Creates a StoragePartitionCodeCacheDataRemover that deletes all cache // entries. static StoragePartitionCodeCacheDataRemover* Create( - content::StoragePartition* storage_partition); + content::StoragePartition* storage_partition, + base::RepeatingCallback<bool(const GURL&)> url_predicate, + base::Time begin_time, + base::Time end_time); // Calls |done_callback| on UI thread upon completion and also destroys // itself on UI thread. + // This expects that either storage_partition with which this object was + // created is live till the end of operation or GeneratedCodeCacheContext + // is destroyed when the storage_partition is destroyed. This ensures the + // code cache and hence the backend is destroyed. If this is not guaranteed + // there could be a callback accessing the destroyed objects. void Remove(base::OnceClosure done_callback); private: @@ -43,7 +57,10 @@ friend class base::DeleteHelper<StoragePartitionCodeCacheDataRemover>; explicit StoragePartitionCodeCacheDataRemover( - GeneratedCodeCacheContext* generated_code_cache_context); + GeneratedCodeCacheContext* generated_code_cache_context, + base::RepeatingCallback<bool(const GURL&)> url_predicate, + base::Time begin_time, + base::Time end_time); ~StoragePartitionCodeCacheDataRemover(); @@ -53,11 +70,16 @@ // Executed on IO thread. void ClearJSCodeCache(); void ClearWASMCodeCache(int rv); + void ClearCache(net::CompletionCallback callback, + disk_cache::Backend* backend); void DoneClearCodeCache(int rv); const scoped_refptr<GeneratedCodeCacheContext> generated_code_cache_context_; base::OnceClosure done_callback_; + base::Time begin_time_; + base::Time end_time_; + base::RepeatingCallback<bool(const GURL&)> url_predicate_; DISALLOW_COPY_AND_ASSIGN(StoragePartitionCodeCacheDataRemover); };
diff --git a/content/browser/code_cache/generated_code_cache.cc b/content/browser/code_cache/generated_code_cache.cc index 88318bd..2e56de9 100644 --- a/content/browser/code_cache/generated_code_cache.cc +++ b/content/browser/code_cache/generated_code_cache.cc
@@ -15,6 +15,9 @@ namespace content { namespace { +constexpr char kPrefix[] = "_key"; +constexpr char kSeparator[] = " \n"; + // We always expect to receive valid URLs that can be used as keys to the code // cache. The relevant checks (for ex: resource_url is valid, origin_lock is // not opque etc.,) must be done prior to requesting the code cache. @@ -51,20 +54,32 @@ CheckValidKeys(resource_url, origin_lock); // Add a prefix _ so it can't be parsed as a valid URL. - std::string key = "_key"; + std::string key(kPrefix); // Remove reference, username and password sections of the URL. key.append(net::SimplifyUrlForRequest(resource_url).spec()); // Add a separator between URL and origin to avoid any possibility of // attacks by crafting the URL. URLs do not contain any control ASCII // characters, and also space is encoded. So use ' \n' as a seperator. - key.append(" \n"); + key.append(kSeparator); if (origin_lock.is_valid()) key.append(net::SimplifyUrlForRequest(origin_lock).spec()); return key; } + } // namespace +std::string GeneratedCodeCache::GetResourceURLFromKey(const std::string& key) { + constexpr size_t kPrefixStringLen = base::size(kPrefix) - 1; + // Only expect valid keys. All valid keys have a prefix and a separator. + DCHECK_GE(key.length(), kPrefixStringLen); + DCHECK_NE(key.find(kSeparator), std::string::npos); + + std::string resource_url = + key.substr(kPrefixStringLen, key.find(kSeparator) - kPrefixStringLen); + return resource_url; +} + void GeneratedCodeCache::CollectStatistics( GeneratedCodeCache::CacheEntryStatus status) { switch (cache_type_) { @@ -89,8 +104,8 @@ const ReadDataCallback&); static std::unique_ptr<PendingOperation> CreateDeletePendingOp( std::string key); - static std::unique_ptr<PendingOperation> CreateClearCachePendingOp( - net::CompletionCallback callback); + static std::unique_ptr<PendingOperation> CreateGetBackendPendingOp( + GetBackendCallback callback); ~PendingOperation(); @@ -98,20 +113,20 @@ const std::string& key() const { return key_; } const scoped_refptr<net::IOBufferWithSize> data() const { return data_; } ReadDataCallback ReleaseReadCallback() { return std::move(read_callback_); } - net::CompletionCallback ReleaseCallback() { return std::move(callback_); } + GetBackendCallback ReleaseCallback() { return std::move(callback_); } private: PendingOperation(Operation op, std::string key, scoped_refptr<net::IOBufferWithSize>, const ReadDataCallback&, - net::CompletionCallback); + GetBackendCallback); const Operation op_; const std::string key_; const scoped_refptr<net::IOBufferWithSize> data_; ReadDataCallback read_callback_; - net::CompletionCallback callback_; + GetBackendCallback callback_; }; std::unique_ptr<GeneratedCodeCache::PendingOperation> @@ -120,7 +135,7 @@ scoped_refptr<net::IOBufferWithSize> buffer) { return base::WrapUnique( new PendingOperation(Operation::kWrite, std::move(key), buffer, - ReadDataCallback(), net::CompletionCallback())); + ReadDataCallback(), GetBackendCallback())); } std::unique_ptr<GeneratedCodeCache::PendingOperation> @@ -129,7 +144,7 @@ const ReadDataCallback& read_callback) { return base::WrapUnique(new PendingOperation( Operation::kFetch, std::move(key), scoped_refptr<net::IOBufferWithSize>(), - read_callback, net::CompletionCallback())); + read_callback, GetBackendCallback())); } std::unique_ptr<GeneratedCodeCache::PendingOperation> @@ -137,14 +152,14 @@ return base::WrapUnique( new PendingOperation(Operation::kDelete, std::move(key), scoped_refptr<net::IOBufferWithSize>(), - ReadDataCallback(), net::CompletionCallback())); + ReadDataCallback(), GetBackendCallback())); } std::unique_ptr<GeneratedCodeCache::PendingOperation> -GeneratedCodeCache::PendingOperation::CreateClearCachePendingOp( - net::CompletionCallback callback) { +GeneratedCodeCache::PendingOperation::CreateGetBackendPendingOp( + GetBackendCallback callback) { return base::WrapUnique( - new PendingOperation(Operation::kClearCache, std::string(), + new PendingOperation(Operation::kGetBackend, std::string(), scoped_refptr<net::IOBufferWithSize>(), ReadDataCallback(), std::move(callback))); } @@ -154,7 +169,7 @@ std::string key, scoped_refptr<net::IOBufferWithSize> buffer, const ReadDataCallback& read_callback, - net::CompletionCallback callback) + GetBackendCallback callback) : op_(op), key_(std::move(key)), data_(buffer), @@ -166,7 +181,7 @@ GeneratedCodeCache::GeneratedCodeCache(const base::FilePath& path, int max_size_bytes, CodeCacheType cache_type) - : backend_state_(kUnInitialized), + : backend_state_(kInitializing), path_(path), max_size_bytes_(max_size_bytes), cache_type_(cache_type), @@ -176,6 +191,22 @@ GeneratedCodeCache::~GeneratedCodeCache() = default; +void GeneratedCodeCache::GetBackend(GetBackendCallback callback) { + switch (backend_state_) { + case kFailed: + std::move(callback).Run(nullptr); + return; + case kInitialized: + std::move(callback).Run(backend_.get()); + return; + case kInitializing: + pending_ops_.push_back( + GeneratedCodeCache::PendingOperation::CreateGetBackendPendingOp( + std::move(callback))); + return; + } +} + void GeneratedCodeCache::WriteData(const GURL& url, const GURL& origin_lock, const base::Time& response_time, @@ -270,21 +301,6 @@ DeleteEntryImpl(key); } -int GeneratedCodeCache::ClearCache(net::CompletionCallback callback) { - if (backend_state_ == kFailed) { - return net::ERR_FAILED; - } - - if (backend_state_ != kInitialized) { - pending_ops_.push_back( - GeneratedCodeCache::PendingOperation::CreateClearCachePendingOp( - std::move(callback))); - return net::ERR_IO_PENDING; - } - - return backend_->DoomAllEntries(std::move(callback)); -} - void GeneratedCodeCache::CreateBackend() { // Create a new Backend pointer that cleans itself if the GeneratedCodeCache // instance is not live when the CreateCacheBackend finishes. @@ -342,8 +358,8 @@ case kDelete: DeleteEntryImpl(op->key()); break; - case kClearCache: - DoPendingClearCache(op->ReleaseCallback()); + case kGetBackend: + DoPendingGetBackend(op->ReleaseCallback()); break; } } @@ -530,14 +546,54 @@ return false; } -void GeneratedCodeCache::DoPendingClearCache( - net::CompletionCallback user_callback) { - int result = backend_->DoomAllEntries(user_callback); - if (result != net::ERR_IO_PENDING) { - // Call the callback here because we returned ERR_IO_PENDING for initial - // request. - std::move(user_callback).Run(result); +void GeneratedCodeCache::DoPendingGetBackend(GetBackendCallback user_callback) { + if (backend_state_ == kInitialized) { + std::move(user_callback).Run(backend_.get()); + return; } + + DCHECK_EQ(backend_state_, kFailed); + std::move(user_callback).Run(nullptr); + return; +} + +void GeneratedCodeCache::SetLastUsedTimeForTest( + const GURL& resource_url, + const GURL& origin_lock, + base::Time time, + base::RepeatingCallback<void(void)> user_callback) { + // This is used only for tests. So reasonable to assume that backend is + // initialized here. All other operations handle the case when backend was not + // yet opened. + DCHECK_EQ(backend_state_, kInitialized); + + scoped_refptr<base::RefCountedData<disk_cache::Entry*>> entry_ptr = + new base::RefCountedData<disk_cache::Entry*>(); + + net::CompletionOnceCallback callback = base::BindOnce( + &GeneratedCodeCache::OpenCompleteForSetLastUsedForTest, + weak_ptr_factory_.GetWeakPtr(), entry_ptr, time, user_callback); + + std::string key = GetCacheKey(resource_url, origin_lock); + int result = backend_->OpenEntry(key, net::LOWEST, &entry_ptr->data, + std::move(callback)); + if (result != net::ERR_IO_PENDING) { + OpenCompleteForSetLastUsedForTest(entry_ptr, time, user_callback, result); + } +} + +void GeneratedCodeCache::OpenCompleteForSetLastUsedForTest( + scoped_refptr<base::RefCountedData<disk_cache::Entry*>> entry, + base::Time time, + base::RepeatingCallback<void(void)> callback, + int rv) { + DCHECK_EQ(rv, net::OK); + DCHECK(entry->data); + { + disk_cache::ScopedEntryPtr disk_entry(entry->data); + disk_entry->SetLastUsedTimeForTest(time); + } + std::move(callback).Run(); } } // namespace content
diff --git a/content/browser/code_cache/generated_code_cache.h b/content/browser/code_cache/generated_code_cache.h index 2169faa..989534b 100644 --- a/content/browser/code_cache/generated_code_cache.h +++ b/content/browser/code_cache/generated_code_cache.h
@@ -45,6 +45,7 @@ using ReadDataCallback = base::RepeatingCallback<void(const base::Time&, const std::vector<uint8_t>&)>; + using GetBackendCallback = base::OnceCallback<void(disk_cache::Backend*)>; static const int kResponseTimeSizeInBytes = sizeof(int64_t); // Cache type. Used for collecting statistics for JS and Wasm in separate @@ -63,6 +64,11 @@ kMaxValue = kIncompleteEntry }; + // Returns the resource URL from the key. The key has the format prefix + + // resource URL + separator + requesting origin. This function extracts and + // returns resource URL from the key. + static std::string GetResourceURLFromKey(const std::string& key); + // Creates a GeneratedCodeCache with the specified path and the maximum size. // If |max_size_bytes| is 0, then disk_cache picks a default size based on // some heuristics. @@ -72,6 +78,12 @@ ~GeneratedCodeCache(); + // Runs the callback with a raw pointer to the backend. If we could not create + // the backend then it will return a null. This runs the callback + // synchronously if the backend is already open or asynchronously on the + // completion of a pending backend creation. + void GetBackend(GetBackendCallback callback); + // Writes data to the cache. If there is an entry corresponding to // <|resource_url|, |origin_lock|> this overwrites the existing data. If // there is no entry it creates a new one. @@ -89,12 +101,12 @@ // Delete the entry corresponding to <resource_url, origin_lock> void DeleteEntry(const GURL& resource_url, const GURL& origin_lock); - // Clear code cache. - // TODO(mythria): Add support to conditional clearing based on URL - // and time range. - // TODO(mythria): Also check if we can avoid retruning an error code and - // always call the callback to be consistent with other methods. - int ClearCache(net::CompletionCallback callback); + // Should be only used for tests. Sets the last accessed timestamp of an + // entry. + void SetLastUsedTimeForTest(const GURL& resource_url, + const GURL& origin_lock, + base::Time time, + base::RepeatingCallback<void(void)> callback); const base::FilePath& path() const { return path_; } @@ -103,10 +115,10 @@ using ScopedBackendPtr = std::unique_ptr<disk_cache::Backend>; // State of the backend. - enum BackendState { kUnInitialized, kInitializing, kInitialized, kFailed }; + enum BackendState { kInitializing, kInitialized, kFailed }; // The operation requested. - enum Operation { kFetch, kWrite, kDelete, kClearCache }; + enum Operation { kFetch, kWrite, kDelete, kGetBackend }; // Data streams corresponding to each entry. enum { kDataIndex = 1 }; @@ -156,8 +168,13 @@ std::unique_ptr<PendingOperation> op); void IssueOperation(PendingOperation* op); - void DoPendingClearCache(net::CompletionCallback callback); - void PendingClearComplete(net::CompletionCallback callback, int rv); + void DoPendingGetBackend(GetBackendCallback callback); + + void OpenCompleteForSetLastUsedForTest( + scoped_refptr<base::RefCountedData<disk_cache::Entry*>> entry, + base::Time time, + base::RepeatingCallback<void(void)> callback, + int rv); void CollectStatistics(GeneratedCodeCache::CacheEntryStatus status);
diff --git a/content/browser/code_cache/generated_code_cache_unittest.cc b/content/browser/code_cache/generated_code_cache_unittest.cc index 5c2bb8b..0d61bdd 100644 --- a/content/browser/code_cache/generated_code_cache_unittest.cc +++ b/content/browser/code_cache/generated_code_cache_unittest.cc
@@ -75,13 +75,6 @@ generated_code_cache_->FetchEntry(url, origin_lock, callback); } - void ClearCache() { - generated_code_cache_->ClearCache(base::BindRepeating( - &GeneratedCodeCacheTest::ClearCacheComplete, base::Unretained(this))); - } - - void ClearCacheComplete(int rv) {} - void FetchEntryCallback(const base::Time& response_time, const std::vector<uint8_t>& data) { if (data.size() == 0) { @@ -305,20 +298,6 @@ EXPECT_EQ(data_origin1, received_data_); } -TEST_F(GeneratedCodeCacheTest, ClearCache) { - GURL url("http://example.com/script.js"); - GURL origin_lock = GURL("http://example.com"); - - InitializeCache(GeneratedCodeCache::CodeCacheType::kJavaScript); - ClearCache(); - scoped_task_environment_.RunUntilIdle(); - FetchFromCache(url, origin_lock); - scoped_task_environment_.RunUntilIdle(); - - ASSERT_TRUE(received_); - ASSERT_TRUE(received_null_); -} - TEST_F(GeneratedCodeCacheTest, FetchSucceedsEmptyOriginLock) { GURL url("http://example.com/script.js"); GURL origin_lock = GURL("");
diff --git a/content/browser/file_url_loader_factory.cc b/content/browser/file_url_loader_factory.cc index e3eed3d..61494ef 100644 --- a/content/browser/file_url_loader_factory.cc +++ b/content/browser/file_url_loader_factory.cc
@@ -851,8 +851,11 @@ network::mojom::URLLoaderClientPtr client, std::unique_ptr<FileURLLoaderObserver> observer, scoped_refptr<net::HttpResponseHeaders> extra_response_headers) { + // TODO(crbug.com/924416): Re-evaluate how TaskPriority is set here and in + // other file URL-loading-related code. Some callers require USER_VISIBLE + // (i.e., BEST_EFFORT is not enough). auto task_runner = base::CreateSequencedTaskRunnerWithTraits( - {base::MayBlock(), base::TaskPriority::BEST_EFFORT, + {base::MayBlock(), base::TaskPriority::USER_VISIBLE, base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}); task_runner->PostTask( FROM_HERE, @@ -868,10 +871,12 @@ const base::FilePath& profile_path, scoped_refptr<const SharedCorsOriginAccessList> shared_cors_origin_access_list) { + // TODO(crbug.com/924416): Re-evaluate TaskPriority: Should the caller provide + // it? return std::make_unique<content::FileURLLoaderFactory>( profile_path, shared_cors_origin_access_list, base::CreateSequencedTaskRunnerWithTraits( - {base::MayBlock(), base::TaskPriority::BEST_EFFORT, + {base::MayBlock(), base::TaskPriority::USER_VISIBLE, base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})); }
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc index 0a92476..c1dc93c 100644 --- a/content/browser/frame_host/render_frame_host_impl.cc +++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -4818,27 +4818,16 @@ std::move(factory_bundle_for_prefetch))); } - int64_t navigation_id = - navigation_request - ? navigation_request->navigation_handle()->GetNavigationId() - : 0; - mojom::NavigationClient* navigation_client = nullptr; if (IsPerNavigationMojoInterfaceEnabled() && navigation_request) navigation_client = navigation_request->GetCommitNavigationClient(); SendCommitNavigation( - navigation_client, navigation_id, head, common_params, commit_params, - std::move(url_loader_client_endpoints), + navigation_client, navigation_request, head, common_params, + commit_params, std::move(url_loader_client_endpoints), std::move(subresource_loader_factories), std::move(subresource_overrides), std::move(controller), - std::move(prefetch_loader_factory), devtools_navigation_token, - navigation_request - ? base::BindOnce( - &RenderFrameHostImpl::OnCrossDocumentCommitProcessed, - base::Unretained(this), navigation_id) - : content::mojom::FrameNavigationControl:: - CommitNavigationCallback()); + std::move(prefetch_loader_factory), devtools_navigation_token); // |remote_object| is an associated interface ptr, so calls can't be made on // it until its request endpoint is sent. Now that the request endpoint was @@ -4899,21 +4888,14 @@ bypass_redirect_checks); } - int64_t navigation_id = - navigation_request - ? navigation_request->navigation_handle()->GetNavigationId() - : 0; - mojom::NavigationClient* navigation_client = nullptr; if (IsPerNavigationMojoInterfaceEnabled() && navigation_request) navigation_client = navigation_request->GetCommitNavigationClient(); SendCommitFailedNavigation( - navigation_client, navigation_id, common_params, commit_params, + navigation_client, navigation_request, common_params, commit_params, has_stale_copy_in_cache, error_code, error_page_content, - std::move(subresource_loader_factories), - base::BindOnce(&RenderFrameHostImpl::OnCrossDocumentCommitProcessed, - base::Unretained(this), navigation_id)); + std::move(subresource_loader_factories)); // An error page is expected to commit, hence why is_loading_ is set to true. is_loading_ = true; @@ -6384,7 +6366,7 @@ void RenderFrameHostImpl::SendCommitNavigation( mojom::NavigationClient* navigation_client, - int64_t navigation_id, + NavigationRequest* navigation_request, const network::ResourceResponseHead& head, const content::CommonNavigationParams& common_params, const content::CommitNavigationParams& commit_params, @@ -6395,8 +6377,7 @@ subresource_overrides, blink::mojom::ControllerServiceWorkerInfoPtr controller, network::mojom::URLLoaderFactoryPtr prefetch_loader_factory, - const base::UnguessableToken& devtools_navigation_token, - mojom::FrameNavigationControl::CommitNavigationCallback callback) { + const base::UnguessableToken& devtools_navigation_token) { if (navigation_client) { navigation_client->CommitNavigation( head, common_params, commit_params, @@ -6404,7 +6385,7 @@ std::move(subresource_loader_factories), std::move(subresource_overrides), std::move(controller), std::move(prefetch_loader_factory), devtools_navigation_token, - std::move(callback)); + BuildNavigationClientCommitNavigationCallback(navigation_request)); } else { GetNavigationControl()->CommitNavigation( head, common_params, commit_params, @@ -6412,32 +6393,74 @@ std::move(subresource_loader_factories), std::move(subresource_overrides), std::move(controller), std::move(prefetch_loader_factory), devtools_navigation_token, - std::move(callback)); + BuildCommitNavigationCallback(navigation_request)); } } void RenderFrameHostImpl::SendCommitFailedNavigation( mojom::NavigationClient* navigation_client, - int64_t navigation_id, + NavigationRequest* navigation_request, const content::CommonNavigationParams& common_params, const content::CommitNavigationParams& commit_params, bool has_stale_copy_in_cache, int32_t error_code, const base::Optional<std::string>& error_page_content, std::unique_ptr<blink::URLLoaderFactoryBundleInfo> - subresource_loader_factories, - mojom::FrameNavigationControl::CommitFailedNavigationCallback callback) { + subresource_loader_factories) { if (navigation_client) { navigation_client->CommitFailedNavigation( common_params, commit_params, has_stale_copy_in_cache, error_code, error_page_content, std::move(subresource_loader_factories), - std::move(callback)); + BuildNavigationClientCommitFailedNavigationCallback( + navigation_request)); } else { GetNavigationControl()->CommitFailedNavigation( common_params, commit_params, has_stale_copy_in_cache, error_code, error_page_content, std::move(subresource_loader_factories), - std::move(callback)); + BuildCommitFailedNavigationCallback(navigation_request)); } } +mojom::FrameNavigationControl::CommitNavigationCallback +RenderFrameHostImpl::BuildCommitNavigationCallback( + NavigationRequest* navigation_request) { + if (!navigation_request) + return content::mojom::FrameNavigationControl::CommitNavigationCallback(); + + return base::BindOnce( + &RenderFrameHostImpl::OnCrossDocumentCommitProcessed, + base::Unretained(this), + navigation_request->navigation_handle()->GetNavigationId()); +} + +mojom::FrameNavigationControl::CommitFailedNavigationCallback +RenderFrameHostImpl::BuildCommitFailedNavigationCallback( + NavigationRequest* navigation_request) { + DCHECK(navigation_request); + return base::BindOnce( + &RenderFrameHostImpl::OnCrossDocumentCommitProcessed, + base::Unretained(this), + navigation_request->navigation_handle()->GetNavigationId()); +} + +mojom::NavigationClient::CommitNavigationCallback +RenderFrameHostImpl::BuildNavigationClientCommitNavigationCallback( + NavigationRequest* navigation_request) { + DCHECK(navigation_request); + return base::BindOnce( + &RenderFrameHostImpl::OnCrossDocumentCommitProcessed, + base::Unretained(this), + navigation_request->navigation_handle()->GetNavigationId()); +} + +mojom::NavigationClient::CommitFailedNavigationCallback +RenderFrameHostImpl::BuildNavigationClientCommitFailedNavigationCallback( + NavigationRequest* navigation_request) { + DCHECK(navigation_request); + return base::BindOnce( + &RenderFrameHostImpl::OnCrossDocumentCommitProcessed, + base::Unretained(this), + navigation_request->navigation_handle()->GetNavigationId()); +} + } // namespace content
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h index dfedd09..54bc47b6 100644 --- a/content/browser/frame_host/render_frame_host_impl.h +++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -893,7 +893,7 @@ // Note: |navigation_id| is used in test overrides, but is unused otherwise. virtual void SendCommitNavigation( mojom::NavigationClient* navigation_client, - int64_t navigation_id, + NavigationRequest* navigation_request, const network::ResourceResponseHead& head, const content::CommonNavigationParams& common_params, const content::CommitNavigationParams& commit_params, @@ -905,19 +905,31 @@ blink::mojom::ControllerServiceWorkerInfoPtr controller_service_worker_info, network::mojom::URLLoaderFactoryPtr prefetch_loader_factory, - const base::UnguessableToken& devtools_navigation_token, - mojom::FrameNavigationControl::CommitNavigationCallback callback); + const base::UnguessableToken& devtools_navigation_token); virtual void SendCommitFailedNavigation( mojom::NavigationClient* navigation_client, - int64_t navigation_id, + NavigationRequest* navigation_request, const content::CommonNavigationParams& common_params, const content::CommitNavigationParams& commit_params, bool has_stale_copy_in_cache, int32_t error_code, const base::Optional<std::string>& error_page_content, std::unique_ptr<blink::URLLoaderFactoryBundleInfo> - subresource_loader_factories, - mojom::FrameNavigationControl::CommitFailedNavigationCallback callback); + subresource_loader_factories); + + // The Build*Callback functions below are responsible for building the + // callbacks for possible Interface/Commit type combinations. + // Protected because they need to be called from test overrides. + mojom::FrameNavigationControl::CommitNavigationCallback + BuildCommitNavigationCallback(NavigationRequest* navigation_request); + mojom::FrameNavigationControl::CommitFailedNavigationCallback + BuildCommitFailedNavigationCallback(NavigationRequest* navigation_request); + mojom::NavigationClient::CommitNavigationCallback + BuildNavigationClientCommitNavigationCallback( + NavigationRequest* navigation_request); + mojom::NavigationClient::CommitFailedNavigationCallback + BuildNavigationClientCommitFailedNavigationCallback( + NavigationRequest* navigation_request); private: friend class RenderFrameHostFeaturePolicyTest;
diff --git a/content/browser/notifications/blink_notification_service_impl.cc b/content/browser/notifications/blink_notification_service_impl.cc index 8d742bb1..f49963aa 100644 --- a/content/browser/notifications/blink_notification_service_impl.cc +++ b/content/browser/notifications/blink_notification_service_impl.cc
@@ -4,6 +4,8 @@ #include "content/browser/notifications/blink_notification_service_impl.h" +#include <utility> + #include "base/bind.h" #include "base/bind_helpers.h" #include "base/callback_helpers.h" @@ -180,68 +182,49 @@ GetNotificationService()->ReadNextPersistentNotificationId( browser_context_); - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::BindOnce(&BlinkNotificationServiceImpl:: - DisplayPersistentNotificationOnIOThread, - weak_factory_for_io_.GetWeakPtr(), - service_worker_registration_id, next_persistent_id, - platform_notification_data, notification_resources, - std::move(callback))); -} - -void BlinkNotificationServiceImpl::DisplayPersistentNotificationOnIOThread( - int64_t service_worker_registration_id, - int64_t next_persistent_notification_id, - const blink::PlatformNotificationData& platform_notification_data, - const blink::NotificationResources& notification_resources, - DisplayPersistentNotificationCallback callback) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - - // TODO(https://crbug.com/870258): Validate resources are not too big (either - // here or in the mojo struct traits). - NotificationDatabaseData database_data; database_data.origin = origin_.GetURL(); database_data.service_worker_registration_id = service_worker_registration_id; database_data.notification_data = platform_notification_data; + // TODO(https://crbug.com/870258): Validate resources are not too big (either + // here or in the mojo struct traits). + notification_context_->WriteNotificationData( - next_persistent_notification_id, service_worker_registration_id, - origin_.GetURL(), database_data, + next_persistent_id, service_worker_registration_id, origin_.GetURL(), + database_data, base::AdaptCallbackForRepeating(base::BindOnce( - &BlinkNotificationServiceImpl:: - DisplayPersistentNotificationWithIdOnIOThread, - weak_factory_for_io_.GetWeakPtr(), service_worker_registration_id, + &BlinkNotificationServiceImpl::DisplayPersistentNotificationWithId, + weak_factory_for_ui_.GetWeakPtr(), service_worker_registration_id, platform_notification_data, notification_resources, std::move(callback)))); } -void BlinkNotificationServiceImpl:: - DisplayPersistentNotificationWithIdOnIOThread( - int64_t service_worker_registration_id, - const blink::PlatformNotificationData& platform_notification_data, - const blink::NotificationResources& notification_resources, - DisplayPersistentNotificationCallback callback, - bool success, - const std::string& notification_id) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); +void BlinkNotificationServiceImpl::DisplayPersistentNotificationWithId( + int64_t service_worker_registration_id, + const blink::PlatformNotificationData& platform_notification_data, + const blink::NotificationResources& notification_resources, + DisplayPersistentNotificationCallback callback, + bool success, + const std::string& notification_id) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); if (!success) { - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::UI}, - base::BindOnce(std::move(callback), - PersistentNotificationError::INTERNAL_ERROR)); + std::move(callback).Run(PersistentNotificationError::INTERNAL_ERROR); return; } - service_worker_context_->FindReadyRegistrationForId( - service_worker_registration_id, origin_.GetURL(), + base::PostTaskWithTraits( + FROM_HERE, {BrowserThread::IO}, base::BindOnce( - &BlinkNotificationServiceImpl:: - DisplayPersistentNotificationWithServiceWorkerOnIOThread, - weak_factory_for_io_.GetWeakPtr(), notification_id, - platform_notification_data, notification_resources, - std::move(callback))); + &ServiceWorkerContextWrapper::FindReadyRegistrationForId, + service_worker_context_, service_worker_registration_id, + origin_.GetURL(), + base::BindOnce( + &BlinkNotificationServiceImpl:: + DisplayPersistentNotificationWithServiceWorkerOnIOThread, + weak_factory_for_io_.GetWeakPtr(), notification_id, + platform_notification_data, notification_resources, + std::move(callback)))); } void BlinkNotificationServiceImpl:: @@ -288,13 +271,10 @@ notification_id); // Deleting the data associated with |notification_id| from the notification - // database has to be done on the IO thread, but there's no reason to postpone + // database will be done in a task runner, but there's no reason to postpone // removing the notification from the user's display until that's done. - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::BindOnce(&PlatformNotificationContextImpl::DeleteNotificationData, - notification_context_, notification_id, origin_.GetURL(), - base::DoNothing())); + notification_context_->DeleteNotificationData( + notification_id, origin_.GetURL(), base::DoNothing()); } void BlinkNotificationServiceImpl::GetNotifications( @@ -313,25 +293,21 @@ } auto read_notification_data_callback = base::BindOnce( - &BlinkNotificationServiceImpl::DidGetNotificationsOnIOThread, - weak_factory_for_io_.GetWeakPtr(), filter_tag, std::move(callback)); + &BlinkNotificationServiceImpl::DidGetNotifications, + weak_factory_for_ui_.GetWeakPtr(), filter_tag, std::move(callback)); - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::BindOnce(&PlatformNotificationContextImpl:: - ReadAllNotificationDataForServiceWorkerRegistration, - notification_context_, origin_.GetURL(), - service_worker_registration_id, - base::AdaptCallbackForRepeating( - std::move(read_notification_data_callback)))); + notification_context_->ReadAllNotificationDataForServiceWorkerRegistration( + origin_.GetURL(), service_worker_registration_id, + base::AdaptCallbackForRepeating( + std::move(read_notification_data_callback))); } -void BlinkNotificationServiceImpl::DidGetNotificationsOnIOThread( +void BlinkNotificationServiceImpl::DidGetNotifications( const std::string& filter_tag, GetNotificationsCallback callback, bool success, const std::vector<NotificationDatabaseData>& notifications) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK_CURRENTLY_ON(BrowserThread::UI); std::vector<std::string> ids; std::vector<blink::PlatformNotificationData> datas; @@ -345,10 +321,7 @@ } } - // Make sure to invoke the |callback| on the UI thread again. - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::UI}, - base::BindOnce(std::move(callback), std::move(ids), std::move(datas))); + std::move(callback).Run(std::move(ids), std::move(datas)); } } // namespace content
diff --git a/content/browser/notifications/blink_notification_service_impl.h b/content/browser/notifications/blink_notification_service_impl.h index 1ae12ca..9b927ba 100644 --- a/content/browser/notifications/blink_notification_service_impl.h +++ b/content/browser/notifications/blink_notification_service_impl.h
@@ -28,7 +28,7 @@ // Implementation of the NotificationService used for Web Notifications. Is // responsible for displaying, updating and reading of both non-persistent // and persistent notifications. Primarily lives on the UI thread, but jumps to -// the IO thread when needing to interact with the PlatformNotificationContext. +// the IO thread when needing to interact with the ServiceWorkerContextWrapper. class CONTENT_EXPORT BlinkNotificationServiceImpl : public blink::mojom::NotificationService { public: @@ -72,14 +72,7 @@ bool ValidateNotificationResources( const blink::NotificationResources& notification_resources); - void DisplayPersistentNotificationOnIOThread( - int64_t service_worker_registration_id, - int64_t persistent_notification_id, - const blink::PlatformNotificationData& platform_notification_data, - const blink::NotificationResources& notification_resources, - DisplayPersistentNotificationCallback callback); - - void DisplayPersistentNotificationWithIdOnIOThread( + void DisplayPersistentNotificationWithId( int64_t service_worker_registration_id, const blink::PlatformNotificationData& platform_notification_data, const blink::NotificationResources& notification_resources, @@ -95,7 +88,7 @@ blink::ServiceWorkerStatusCode service_worker_status, scoped_refptr<ServiceWorkerRegistration> registration); - void DidGetNotificationsOnIOThread( + void DidGetNotifications( const std::string& filter_tag, GetNotificationsCallback callback, bool success,
diff --git a/content/browser/notifications/blink_notification_service_impl_unittest.cc b/content/browser/notifications/blink_notification_service_impl_unittest.cc index e870d0b..5bb02dc 100644 --- a/content/browser/notifications/blink_notification_service_impl_unittest.cc +++ b/content/browser/notifications/blink_notification_service_impl_unittest.cc
@@ -248,11 +248,10 @@ std::move(quit_closure).Run(); } - void DidGetDisplayedNotifications( - base::OnceClosure quit_closure, - std::unique_ptr<std::set<std::string>> notification_ids, - bool supports_synchronization) { - get_displayed_callback_result_ = *notification_ids; + void DidGetDisplayedNotifications(base::OnceClosure quit_closure, + std::set<std::string> notification_ids, + bool supports_synchronization) { + get_displayed_callback_result_ = std::move(notification_ids); std::move(quit_closure).Run(); } @@ -312,7 +311,7 @@ base::RunLoop run_loop; mock_platform_service_.GetDisplayedNotifications( &browser_context_, - base::Bind( + base::BindOnce( &BlinkNotificationServiceImplTest::DidGetDisplayedNotifications, base::Unretained(this), run_loop.QuitClosure())); run_loop.Run();
diff --git a/content/browser/notifications/notification_event_dispatcher_impl.cc b/content/browser/notifications/notification_event_dispatcher_impl.cc index 19d0c50..bff772c5 100644 --- a/content/browser/notifications/notification_event_dispatcher_impl.cc +++ b/content/browser/notifications/notification_event_dispatcher_impl.cc
@@ -36,22 +36,8 @@ const ServiceWorkerRegistration*, const NotificationDatabaseData&)>; -// To be called when a notification event has finished executing. Will post a -// task to call |dispatch_complete_callback| on the UI thread. -void NotificationEventFinished( - const NotificationDispatchCompleteCallback& dispatch_complete_callback, - PersistentNotificationStatus status) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - - base::PostTaskWithTraits(FROM_HERE, {BrowserThread::UI}, - base::BindOnce(dispatch_complete_callback, status)); -} - -// To be called when a notification event has finished with a -// blink::ServiceWorkerStatusCode result. Will call NotificationEventFinished -// with a PersistentNotificationStatus derived from the service worker status. -void ServiceWorkerNotificationEventFinished( - const NotificationDispatchCompleteCallback& dispatch_complete_callback, +// Derives a PersistentNotificationStatus from the ServiceWorkerStatusCode. +PersistentNotificationStatus ConvertServiceWorkerStatus( blink::ServiceWorkerStatusCode service_worker_status) { #if defined(OS_ANDROID) // This LOG(INFO) deliberately exists to help track down the cause of @@ -60,15 +46,11 @@ LOG(INFO) << "The notification event has finished: " << blink::ServiceWorkerStatusToString(service_worker_status); #endif - - PersistentNotificationStatus status = PersistentNotificationStatus::kSuccess; switch (service_worker_status) { case blink::ServiceWorkerStatusCode::kOk: - // Success status was initialized above. - break; + return PersistentNotificationStatus::kSuccess; case blink::ServiceWorkerStatusCode::kErrorEventWaitUntilRejected: - status = PersistentNotificationStatus::kWaitUntilRejected; - break; + return PersistentNotificationStatus::kWaitUntilRejected; case blink::ServiceWorkerStatusCode::kErrorFailed: case blink::ServiceWorkerStatusCode::kErrorAbort: case blink::ServiceWorkerStatusCode::kErrorStartWorkerFailed: @@ -87,10 +69,24 @@ case blink::ServiceWorkerStatusCode::kErrorRedundant: case blink::ServiceWorkerStatusCode::kErrorDisallowed: case blink::ServiceWorkerStatusCode::kErrorInvalidArguments: - status = PersistentNotificationStatus::kServiceWorkerError; - break; + return PersistentNotificationStatus::kServiceWorkerError; } - NotificationEventFinished(dispatch_complete_callback, status); + NOTREACHED(); + return PersistentNotificationStatus::kServiceWorkerError; +} + +// To be called when a notification event has finished with a +// blink::ServiceWorkerStatusCode result. Will post a task to call +// |dispatch_complete_callback| on the UI thread with a +// PersistentNotificationStatus derived from the service worker status. +void ServiceWorkerNotificationEventFinished( + const NotificationDispatchCompleteCallback& dispatch_complete_callback, + blink::ServiceWorkerStatusCode service_worker_status) { + DCHECK_CURRENTLY_ON(BrowserThread::IO); + base::PostTaskWithTraits( + FROM_HERE, {BrowserThread::UI}, + base::BindOnce(dispatch_complete_callback, + ConvertServiceWorkerStatus(service_worker_status))); } // Dispatches the given notification action event on @@ -163,8 +159,7 @@ const NotificationDispatchCompleteCallback& dispatch_error_callback, bool success, const NotificationDatabaseData& notification_database_data) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - + DCHECK_CURRENTLY_ON(BrowserThread::UI); #if defined(OS_ANDROID) // This LOG(INFO) deliberately exists to help track down the cause of // https://crbug.com/534537, where notifications sometimes do not react to @@ -172,18 +167,20 @@ LOG(INFO) << "Lookup for ServiceWoker Registration: success: " << success; #endif if (!success) { - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::UI}, - base::BindOnce(dispatch_error_callback, - PersistentNotificationStatus::kDatabaseError)); + dispatch_error_callback.Run(PersistentNotificationStatus::kDatabaseError); return; } - service_worker_context->FindReadyRegistrationForId( - notification_database_data.service_worker_registration_id, origin, - base::BindOnce(&DispatchNotificationEventOnRegistration, - notification_database_data, notification_context, - notification_action_callback, dispatch_error_callback)); + base::PostTaskWithTraits( + FROM_HERE, {BrowserThread::IO}, + base::BindOnce( + &ServiceWorkerContextWrapper::FindReadyRegistrationForId, + service_worker_context, + notification_database_data.service_worker_registration_id, origin, + base::BindOnce(&DispatchNotificationEventOnRegistration, + notification_database_data, notification_context, + notification_action_callback, + dispatch_error_callback))); } // Reads the data associated with the |notification_id| belonging to |origin| @@ -196,7 +193,7 @@ const scoped_refptr<PlatformNotificationContext>& notification_context, const NotificationOperationCallback& notification_read_callback, const NotificationDispatchCompleteCallback& dispatch_error_callback) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK_CURRENTLY_ON(BrowserThread::UI); notification_context->ReadNotificationDataAndRecordInteraction( notification_id, origin, interaction, base::Bind(&FindServiceWorkerRegistration, origin, service_worker_context, @@ -242,6 +239,7 @@ const scoped_refptr<PlatformNotificationContext>& notification_context, const ServiceWorkerRegistration* service_worker_registration, const NotificationDatabaseData& notification_database_data) { + DCHECK_CURRENTLY_ON(BrowserThread::IO); service_worker_registration->active_version()->RunAfterStartWorker( ServiceWorkerMetrics::EventType::NOTIFICATION_CLICK, base::BindOnce( @@ -260,15 +258,13 @@ blink::ServiceWorkerStatusCode service_worker_status, const NotificationDispatchCompleteCallback& dispatch_complete_callback, bool success) { - if (service_worker_status != blink::ServiceWorkerStatusCode::kOk) { - ServiceWorkerNotificationEventFinished(dispatch_complete_callback, - service_worker_status); - return; - } - NotificationEventFinished(dispatch_complete_callback, - success - ? PersistentNotificationStatus::kSuccess - : PersistentNotificationStatus::kDatabaseError); + DCHECK_CURRENTLY_ON(BrowserThread::UI); + PersistentNotificationStatus status = + success ? PersistentNotificationStatus::kSuccess + : PersistentNotificationStatus::kDatabaseError; + if (service_worker_status != blink::ServiceWorkerStatusCode::kOk) + status = ConvertServiceWorkerStatus(service_worker_status); + dispatch_complete_callback.Run(status); } // Called when the persistent notification close event has been handled @@ -279,10 +275,14 @@ const scoped_refptr<PlatformNotificationContext>& notification_context, const NotificationDispatchCompleteCallback& dispatch_complete_callback, blink::ServiceWorkerStatusCode status_code) { - notification_context->DeleteNotificationData( - notification_id, origin, - base::Bind(&OnPersistentNotificationDataDeleted, status_code, - dispatch_complete_callback)); + DCHECK_CURRENTLY_ON(BrowserThread::IO); + base::PostTaskWithTraits( + FROM_HERE, {BrowserThread::UI}, + base::BindOnce( + &PlatformNotificationContext::DeleteNotificationData, + notification_context, notification_id, origin, + base::BindRepeating(&OnPersistentNotificationDataDeleted, status_code, + dispatch_complete_callback))); } // Dispatches the notificationclose event on |service_worker|. @@ -315,6 +315,7 @@ const scoped_refptr<PlatformNotificationContext>& notification_context, const ServiceWorkerRegistration* service_worker_registration, const NotificationDatabaseData& notification_database_data) { + DCHECK_CURRENTLY_ON(BrowserThread::IO); if (by_user) { service_worker_registration->active_version()->RunAfterStartWorker( ServiceWorkerMetrics::EventType::NOTIFICATION_CLOSE, @@ -356,13 +357,11 @@ scoped_refptr<PlatformNotificationContext> notification_context = partition->GetPlatformNotificationContext(); - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::BindOnce( - &ReadNotificationDatabaseData, notification_id, origin, interaction, - service_worker_context, notification_context, - base::Bind(notification_action_callback, notification_context), - notification_error_callback)); + ReadNotificationDatabaseData( + notification_id, origin, interaction, service_worker_context, + notification_context, + base::BindRepeating(notification_action_callback, notification_context), + notification_error_callback); } } // namespace @@ -388,6 +387,7 @@ const base::Optional<int>& action_index, const base::Optional<base::string16>& reply, NotificationDispatchCompleteCallback dispatch_complete_callback) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); // TODO(peter): Remove AdaptCallbackForRepeating() when the dependencies of // the NotificationEventDispatcherImpl have updated to using OnceCallbacks. auto repeating_callback = @@ -411,6 +411,7 @@ const GURL& origin, bool by_user, NotificationDispatchCompleteCallback dispatch_complete_callback) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); // TODO(peter): Remove AdaptCallbackForRepeating() when the dependencies of // the NotificationEventDispatcherImpl have updated to using OnceCallbacks. auto repeating_callback =
diff --git a/content/browser/notifications/notification_storage.cc b/content/browser/notifications/notification_storage.cc index 8c3e4f0e..d627bd9 100644 --- a/content/browser/notifications/notification_storage.cc +++ b/content/browser/notifications/notification_storage.cc
@@ -4,6 +4,8 @@ #include "content/browser/notifications/notification_storage.h" +#include <utility> + #include "base/bind.h" #include "base/metrics/histogram_macros.h" #include "base/time/time.h" @@ -45,13 +47,13 @@ void NotificationStorage::WriteNotificationData( const NotificationDatabaseData& data, - const PlatformNotificationContext::WriteResultCallback& callback) { + PlatformNotificationContext::WriteResultCallback callback) { DCHECK_CURRENTLY_ON(BrowserThread::IO); std::string serialized_data; if (!SerializeNotificationDatabaseData(data, &serialized_data)) { DLOG(ERROR) << "Unable to serialize data for a notification belonging " << "to: " << data.origin; - callback.Run(/* success= */ false, std::string()); + std::move(callback).Run(/* success= */ false, std::string()); return; } @@ -59,18 +61,19 @@ data.service_worker_registration_id, data.origin, {{CreateDataKey(data.notification_id), std::move(serialized_data)}}, base::BindOnce(&NotificationStorage::OnWriteComplete, - weak_ptr_factory_.GetWeakPtr(), data, callback)); + weak_ptr_factory_.GetWeakPtr(), data, + std::move(callback))); } void NotificationStorage::OnWriteComplete( const NotificationDatabaseData& data, - const PlatformNotificationContext::WriteResultCallback& callback, + PlatformNotificationContext::WriteResultCallback callback, blink::ServiceWorkerStatusCode status) { if (status == blink::ServiceWorkerStatusCode::kOk) { - callback.Run(/* success= */ true, data.notification_id); + std::move(callback).Run(/* success= */ true, data.notification_id); } else { - callback.Run(/* success= */ false, - /* notification_id= */ std::string()); + std::move(callback).Run(/* success= */ false, + /* notification_id= */ std::string()); } } @@ -78,23 +81,24 @@ int64_t service_worker_registration_id, const std::string& notification_id, PlatformNotificationContext::Interaction interaction, - const PlatformNotificationContext::ReadResultCallback& callback) { + PlatformNotificationContext::ReadResultCallback callback) { DCHECK_CURRENTLY_ON(BrowserThread::IO); service_worker_context_->GetRegistrationUserData( service_worker_registration_id, {CreateDataKey(notification_id)}, base::BindOnce(&NotificationStorage::OnReadCompleteUpdateInteraction, weak_ptr_factory_.GetWeakPtr(), - service_worker_registration_id, interaction, callback)); + service_worker_registration_id, interaction, + std::move(callback))); } void NotificationStorage::OnReadCompleteUpdateInteraction( int64_t service_worker_registration_id, PlatformNotificationContext::Interaction interaction, - const PlatformNotificationContext::ReadResultCallback& callback, + PlatformNotificationContext::ReadResultCallback callback, const std::vector<std::string>& database_data, blink::ServiceWorkerStatusCode status) { if (status != blink::ServiceWorkerStatusCode::kOk || database_data.empty()) { - callback.Run(/* success= */ false, NotificationDatabaseData()); + std::move(callback).Run(/* success= */ false, NotificationDatabaseData()); return; } @@ -102,7 +106,7 @@ if (!DeserializeNotificationDatabaseData(database_data[0], data.get())) { DLOG(ERROR) << "Unable to deserialize data for a notification belonging " << "to: " << data->origin; - callback.Run(/* success= */ false, NotificationDatabaseData()); + std::move(callback).Run(/* success= */ false, NotificationDatabaseData()); return; } @@ -126,7 +130,7 @@ if (!SerializeNotificationDatabaseData(*data, &serialized_data)) { DLOG(ERROR) << "Unable to serialize data for a notification belonging " << "to: " << data->origin; - callback.Run(/* success= */ false, NotificationDatabaseData()); + std::move(callback).Run(/* success= */ false, NotificationDatabaseData()); return; } @@ -137,18 +141,18 @@ {{CreateDataKey(notification_id), std::move(serialized_data)}}, base::BindOnce(&NotificationStorage::OnInteractionUpdateComplete, weak_ptr_factory_.GetWeakPtr(), std::move(data), - callback)); + std::move(callback))); } void NotificationStorage::OnInteractionUpdateComplete( std::unique_ptr<NotificationDatabaseData> data, - const PlatformNotificationContext::ReadResultCallback& callback, + PlatformNotificationContext::ReadResultCallback callback, blink::ServiceWorkerStatusCode status) { DCHECK(data); if (status == blink::ServiceWorkerStatusCode::kOk) - callback.Run(/* success= */ true, *data); + std::move(callback).Run(/* success= */ true, *data); else - callback.Run(/* success= */ false, NotificationDatabaseData()); + std::move(callback).Run(/* success= */ false, NotificationDatabaseData()); } } // namespace content
diff --git a/content/browser/notifications/notification_storage.h b/content/browser/notifications/notification_storage.h index 1a24c48..38b92039 100644 --- a/content/browser/notifications/notification_storage.h +++ b/content/browser/notifications/notification_storage.h
@@ -22,30 +22,30 @@ void WriteNotificationData( const NotificationDatabaseData& data, - const PlatformNotificationContext::WriteResultCallback& callback); + PlatformNotificationContext::WriteResultCallback callback); void ReadNotificationDataAndRecordInteraction( int64_t service_worker_registration_id, const std::string& notification_id, PlatformNotificationContext::Interaction interaction, - const PlatformNotificationContext::ReadResultCallback& callback); + PlatformNotificationContext::ReadResultCallback callback); private: void OnWriteComplete( const NotificationDatabaseData& data, - const PlatformNotificationContext::WriteResultCallback& callback, + PlatformNotificationContext::WriteResultCallback callback, blink::ServiceWorkerStatusCode status); void OnReadCompleteUpdateInteraction( int64_t service_worker_registration_id, PlatformNotificationContext::Interaction interaction, - const PlatformNotificationContext::ReadResultCallback& callback, + PlatformNotificationContext::ReadResultCallback callback, const std::vector<std::string>& database_data, blink::ServiceWorkerStatusCode status); void OnInteractionUpdateComplete( std::unique_ptr<NotificationDatabaseData> data, - const PlatformNotificationContext::ReadResultCallback& callback, + PlatformNotificationContext::ReadResultCallback callback, blink::ServiceWorkerStatusCode status); scoped_refptr<ServiceWorkerContextWrapper> service_worker_context_;
diff --git a/content/browser/notifications/platform_notification_context_impl.cc b/content/browser/notifications/platform_notification_context_impl.cc index faef22ab..d78bd800 100644 --- a/content/browser/notifications/platform_notification_context_impl.cc +++ b/content/browser/notifications/platform_notification_context_impl.cc
@@ -4,6 +4,8 @@ #include "content/browser/notifications/platform_notification_context_impl.h" +#include <utility> + #include "base/bind.h" #include "base/bind_helpers.h" #include "base/files/file_util.h" @@ -56,39 +58,25 @@ PlatformNotificationService* service = GetContentClient()->browser()->GetPlatformNotificationService(); if (!service) { - auto displayed_notifications = std::make_unique<std::set<std::string>>(); - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::BindOnce(&PlatformNotificationContextImpl::InitializeOnIO, this, - std::move(displayed_notifications), false)); + std::set<std::string> displayed_notifications; + DidGetNotifications(std::move(displayed_notifications), false); return; } service->GetDisplayedNotifications( browser_context_, - base::Bind(&PlatformNotificationContextImpl::DidGetNotificationsOnUI, - this)); + base::BindOnce(&PlatformNotificationContextImpl::DidGetNotifications, + this)); ukm_callback_ = base::BindRepeating( &PlatformNotificationService::RecordNotificationUkmEvent, base::Unretained(service), browser_context_); } -void PlatformNotificationContextImpl::DidGetNotificationsOnUI( - std::unique_ptr<std::set<std::string>> displayed_notifications, +void PlatformNotificationContextImpl::DidGetNotifications( + std::set<std::string> displayed_notifications, bool supports_synchronization) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::BindOnce(&PlatformNotificationContextImpl::InitializeOnIO, this, - std::move(displayed_notifications), - supports_synchronization)); -} - -void PlatformNotificationContextImpl::InitializeOnIO( - std::unique_ptr<std::set<std::string>> displayed_notifications, - bool supports_synchronization) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); // Synchronize the notifications stored in the database with the set of // displaying notifications in |displayed_notifications|. This is necessary @@ -100,7 +88,7 @@ // persistent notification ids are stable. For M44 we need to support the // case where there may be no notifications after a Chrome restart. - if (supports_synchronization && displayed_notifications->empty()) { + if (supports_synchronization && displayed_notifications.empty()) { prune_database_on_open_ = true; } @@ -114,14 +102,6 @@ services_.clear(); - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::BindOnce(&PlatformNotificationContextImpl::ShutdownOnIO, this)); -} - -void PlatformNotificationContextImpl::ShutdownOnIO() { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - // |service_worker_context_| may be NULL in tests. if (service_worker_context_) service_worker_context_->RemoveObserver(this); @@ -150,21 +130,27 @@ const std::string& notification_id, const GURL& origin, const PlatformNotificationContext::Interaction interaction, - const ReadResultCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - - LazyInitialize( - base::Bind(&PlatformNotificationContextImpl::DoReadNotificationData, this, - notification_id, origin, interaction, callback), - base::Bind(callback, false /* success */, NotificationDatabaseData())); + ReadResultCallback callback) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + LazyInitialize(base::BindOnce( + &PlatformNotificationContextImpl::DoReadNotificationData, this, + notification_id, origin, interaction, std::move(callback))); } void PlatformNotificationContextImpl::DoReadNotificationData( const std::string& notification_id, const GURL& origin, Interaction interaction, - const ReadResultCallback& callback) { + ReadResultCallback callback, + bool initialized) { DCHECK(task_runner_->RunsTasksInCurrentSequence()); + if (!initialized) { + base::PostTaskWithTraits( + FROM_HERE, {BrowserThread::UI, base::TaskPriority::USER_VISIBLE}, + base::BindOnce(std::move(callback), /* success= */ false, + NotificationDatabaseData())); + return; + } NotificationDatabaseData database_data; NotificationDatabase::Status status = @@ -176,8 +162,9 @@ if (status == NotificationDatabase::STATUS_OK) { base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::BindOnce(callback, true /* success */, database_data)); + FROM_HERE, {BrowserThread::UI, base::TaskPriority::USER_VISIBLE}, + base::BindOnce(std::move(callback), /* success= */ true, + database_data)); return; } @@ -185,86 +172,70 @@ if (status == NotificationDatabase::STATUS_ERROR_CORRUPTED) DestroyDatabase(); - base::PostTaskWithTraits(FROM_HERE, {BrowserThread::IO}, - base::BindOnce(callback, false /* success */, - NotificationDatabaseData())); + base::PostTaskWithTraits( + FROM_HERE, {BrowserThread::UI, base::TaskPriority::USER_VISIBLE}, + base::BindOnce(std::move(callback), /* success= */ false, + NotificationDatabaseData())); } void PlatformNotificationContextImpl:: - SynchronizeDisplayedNotificationsForServiceWorkerRegistrationOnUI( + SynchronizeDisplayedNotificationsForServiceWorkerRegistration( const GURL& origin, int64_t service_worker_registration_id, - const ReadAllResultCallback& callback, - std::unique_ptr<std::set<std::string>> notification_ids, + ReadAllResultCallback callback, + std::set<std::string> notification_ids, bool supports_synchronization) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::BindOnce( - &PlatformNotificationContextImpl:: - SynchronizeDisplayedNotificationsForServiceWorkerRegistrationOnIO, - this, origin, service_worker_registration_id, callback, - std::move(notification_ids), supports_synchronization)); -} - -void PlatformNotificationContextImpl:: - SynchronizeDisplayedNotificationsForServiceWorkerRegistrationOnIO( - const GURL& origin, - int64_t service_worker_registration_id, - const ReadAllResultCallback& callback, - std::unique_ptr<std::set<std::string>> notification_ids, - bool supports_synchronization) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - LazyInitialize( - base::Bind(&PlatformNotificationContextImpl:: - DoReadAllNotificationDataForServiceWorkerRegistration, - this, origin, service_worker_registration_id, callback, - base::Passed(¬ification_ids), supports_synchronization), - base::Bind(callback, false /* success */, - std::vector<NotificationDatabaseData>())); + LazyInitialize(base::BindOnce( + &PlatformNotificationContextImpl:: + DoReadAllNotificationDataForServiceWorkerRegistration, + this, origin, service_worker_registration_id, std::move(callback), + std::move(notification_ids), supports_synchronization)); } void PlatformNotificationContextImpl:: ReadAllNotificationDataForServiceWorkerRegistration( const GURL& origin, int64_t service_worker_registration_id, - const ReadAllResultCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - - auto notification_ids = std::make_unique<std::set<std::string>>(); + ReadAllResultCallback callback) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); PlatformNotificationService* service = GetContentClient()->browser()->GetPlatformNotificationService(); if (!service) { // Rely on the database only - SynchronizeDisplayedNotificationsForServiceWorkerRegistrationOnIO( - origin, service_worker_registration_id, callback, - std::move(notification_ids), false /* supports_synchronization */); + std::set<std::string> notification_ids; + SynchronizeDisplayedNotificationsForServiceWorkerRegistration( + origin, service_worker_registration_id, std::move(callback), + std::move(notification_ids), /* supports_synchronization= */ false); return; } - base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::UI}, + service->GetDisplayedNotifications( + browser_context_, base::BindOnce( - &PlatformNotificationService::GetDisplayedNotifications, - base::Unretained(service), browser_context_, - base::Bind( - &PlatformNotificationContextImpl:: - SynchronizeDisplayedNotificationsForServiceWorkerRegistrationOnUI, - this, origin, service_worker_registration_id, callback))); + &PlatformNotificationContextImpl:: + SynchronizeDisplayedNotificationsForServiceWorkerRegistration, + this, origin, service_worker_registration_id, std::move(callback))); } void PlatformNotificationContextImpl:: DoReadAllNotificationDataForServiceWorkerRegistration( const GURL& origin, int64_t service_worker_registration_id, - const ReadAllResultCallback& callback, - std::unique_ptr<std::set<std::string>> displayed_notifications, - bool supports_synchronization) { + ReadAllResultCallback callback, + std::set<std::string> displayed_notifications, + bool supports_synchronization, + bool initialized) { DCHECK(task_runner_->RunsTasksInCurrentSequence()); - DCHECK(displayed_notifications); + if (!initialized) { + base::PostTaskWithTraits( + FROM_HERE, {BrowserThread::UI, base::TaskPriority::USER_VISIBLE}, + base::BindOnce(std::move(callback), /* success= */ false, + std::vector<NotificationDatabaseData>())); + return; + } std::vector<NotificationDatabaseData> notification_datas; @@ -284,7 +255,7 @@ // The database is only used for persistent notifications. DCHECK(NotificationIdGenerator::IsPersistentNotification( it->notification_id)); - if (displayed_notifications->count(it->notification_id)) { + if (displayed_notifications.count(it->notification_id)) { ++it; } else { obsolete_notifications.push_back(it->notification_id); @@ -294,8 +265,9 @@ } base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::BindOnce(callback, true /* success */, notification_datas)); + FROM_HERE, {BrowserThread::UI, base::TaskPriority::USER_VISIBLE}, + base::BindOnce(std::move(callback), /* success= */ true, + notification_datas)); // Remove notifications that are not actually on display anymore. for (const auto& it : obsolete_notifications) @@ -308,8 +280,8 @@ DestroyDatabase(); base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::BindOnce(callback, false /* success */, + FROM_HERE, {BrowserThread::UI, base::TaskPriority::USER_VISIBLE}, + base::BindOnce(std::move(callback), /* success= */ false, std::vector<NotificationDatabaseData>())); } @@ -318,13 +290,12 @@ int64_t service_worker_registration_id, const GURL& origin, const NotificationDatabaseData& database_data, - const WriteResultCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - LazyInitialize( - base::Bind(&PlatformNotificationContextImpl::DoWriteNotificationData, - this, service_worker_registration_id, - persistent_notification_id, origin, database_data, callback), - base::Bind(callback, false /* success */, "" /* notification_id */)); + WriteResultCallback callback) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + LazyInitialize(base::BindOnce( + &PlatformNotificationContextImpl::DoWriteNotificationData, this, + service_worker_registration_id, persistent_notification_id, origin, + database_data, std::move(callback))); } void PlatformNotificationContextImpl::DoWriteNotificationData( @@ -332,9 +303,17 @@ int64_t persistent_notification_id, const GURL& origin, const NotificationDatabaseData& database_data, - const WriteResultCallback& callback) { + WriteResultCallback callback, + bool initialized) { DCHECK(task_runner_->RunsTasksInCurrentSequence()); DCHECK(database_data.notification_id.empty()); + if (!initialized) { + base::PostTaskWithTraits( + FROM_HERE, {BrowserThread::UI, base::TaskPriority::USER_VISIBLE}, + base::BindOnce(std::move(callback), /* success= */ false, + /* notification_id= */ "")); + return; + } // Eagerly delete data for replaced notifications from the database. if (!database_data.notification_data.tag.empty()) { @@ -354,9 +333,10 @@ if (delete_status == NotificationDatabase::STATUS_ERROR_CORRUPTED) { DestroyDatabase(); - base::PostTaskWithTraits(FROM_HERE, {BrowserThread::IO}, - base::BindOnce(callback, false /* success */, - "" /* notification_id */)); + base::PostTaskWithTraits( + FROM_HERE, {BrowserThread::UI, base::TaskPriority::USER_VISIBLE}, + base::BindOnce(std::move(callback), /* success= */ false, + /* notification_id= */ "")); return; } } @@ -376,8 +356,8 @@ if (status == NotificationDatabase::STATUS_OK) { base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::BindOnce(callback, true /* success */, + FROM_HERE, {BrowserThread::UI, base::TaskPriority::USER_VISIBLE}, + base::BindOnce(std::move(callback), /* success= */ true, write_database_data.notification_id)); return; @@ -388,27 +368,34 @@ DestroyDatabase(); base::PostTaskWithTraits( - FROM_HERE, {BrowserThread::IO}, - base::BindOnce(callback, false /* success */, "" /* notification_id */)); + FROM_HERE, {BrowserThread::UI, base::TaskPriority::USER_VISIBLE}, + base::BindOnce(std::move(callback), /* success= */ false, + /* notification_id= */ "")); } void PlatformNotificationContextImpl::DeleteNotificationData( const std::string& notification_id, const GURL& origin, - const DeleteResultCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DeleteResultCallback callback) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); LazyInitialize( - base::Bind(&PlatformNotificationContextImpl::DoDeleteNotificationData, - this, notification_id, origin, callback), - base::Bind(callback, false /* success */)); + base::BindOnce(&PlatformNotificationContextImpl::DoDeleteNotificationData, + this, notification_id, origin, std::move(callback))); } void PlatformNotificationContextImpl::DoDeleteNotificationData( const std::string& notification_id, const GURL& origin, - const DeleteResultCallback& callback) { + DeleteResultCallback callback, + bool initialized) { DCHECK(task_runner_->RunsTasksInCurrentSequence()); + if (!initialized) { + base::PostTaskWithTraits( + FROM_HERE, {BrowserThread::UI, base::TaskPriority::USER_VISIBLE}, + base::BindOnce(std::move(callback), false)); + return; + } NotificationDatabase::Status status = database_->DeleteNotificationData(notification_id, origin); @@ -426,26 +413,29 @@ success = true; } - base::PostTaskWithTraits(FROM_HERE, {BrowserThread::IO}, - base::BindOnce(callback, success)); + base::PostTaskWithTraits( + FROM_HERE, {BrowserThread::UI, base::TaskPriority::USER_VISIBLE}, + base::BindOnce(std::move(callback), success)); } void PlatformNotificationContextImpl::OnRegistrationDeleted( int64_t registration_id, const GURL& pattern) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK_CURRENTLY_ON(BrowserThread::UI); LazyInitialize( - base::Bind(&PlatformNotificationContextImpl:: - DoDeleteNotificationsForServiceWorkerRegistration, - this, pattern.GetOrigin(), registration_id), - base::DoNothing()); + base::BindOnce(&PlatformNotificationContextImpl:: + DoDeleteNotificationsForServiceWorkerRegistration, + this, pattern.GetOrigin(), registration_id)); } void PlatformNotificationContextImpl:: DoDeleteNotificationsForServiceWorkerRegistration( const GURL& origin, - int64_t service_worker_registration_id) { + int64_t service_worker_registration_id, + bool initialized) { DCHECK(task_runner_->RunsTasksInCurrentSequence()); + if (!initialized) + return; std::set<std::string> deleted_notification_ids; NotificationDatabase::Status status = @@ -465,18 +455,22 @@ } void PlatformNotificationContextImpl::OnStorageWiped() { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - LazyInitialize( - base::Bind( - base::IgnoreResult(&PlatformNotificationContextImpl::DestroyDatabase), - this), - base::DoNothing()); + DCHECK_CURRENTLY_ON(BrowserThread::UI); + LazyInitialize(base::BindOnce( + &PlatformNotificationContextImpl::OnStorageWipedInitialized, this)); +} + +void PlatformNotificationContextImpl::OnStorageWipedInitialized( + bool initialized) { + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + if (!initialized) + return; + DestroyDatabase(); } void PlatformNotificationContextImpl::LazyInitialize( - const base::Closure& success_closure, - const base::Closure& failure_closure) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + InitializeResultCallback callback) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); if (!task_runner_) { task_runner_ = base::CreateSequencedTaskRunnerWithTraits( @@ -485,22 +479,21 @@ task_runner_->PostTask( FROM_HERE, base::BindOnce(&PlatformNotificationContextImpl::OpenDatabase, - this, success_closure, failure_closure)); + this, std::move(callback))); } void PlatformNotificationContextImpl::OpenDatabase( - const base::Closure& success_closure, - const base::Closure& failure_closure) { + InitializeResultCallback callback) { DCHECK(task_runner_->RunsTasksInCurrentSequence()); if (database_) { - success_closure.Run(); + std::move(callback).Run(/* initialized= */ true); return; } database_.reset(new NotificationDatabase(GetDatabasePath(), ukm_callback_)); NotificationDatabase::Status status = - database_->Open(true /* create_if_missing */); + database_->Open(/* create_if_missing= */ true); UMA_HISTOGRAM_ENUMERATION("Notifications.Database.OpenResult", status, NotificationDatabase::STATUS_COUNT); @@ -511,7 +504,7 @@ DestroyDatabase(); database_.reset(new NotificationDatabase(GetDatabasePath(), ukm_callback_)); - status = database_->Open(true /* create_if_missing */); + status = database_->Open(/* create_if_missing= */ true); // TODO(peter): Find the appropriate UMA to cover in regards to // synchronizing notifications after the implementation is complete. @@ -523,7 +516,7 @@ if (DestroyDatabase()) { database_.reset( new NotificationDatabase(GetDatabasePath(), ukm_callback_)); - status = database_->Open(true /* create_if_missing */); + status = database_->Open(/* create_if_missing= */ true); UMA_HISTOGRAM_ENUMERATION( "Notifications.Database.OpenAfterCorruptionResult", status, @@ -532,13 +525,13 @@ } if (status == NotificationDatabase::STATUS_OK) { - success_closure.Run(); + std::move(callback).Run(/* initialized= */ true); return; } database_.reset(); - base::PostTaskWithTraits(FROM_HERE, {BrowserThread::IO}, failure_closure); + std::move(callback).Run(/* initialized= */ false); } bool PlatformNotificationContextImpl::DestroyDatabase() {
diff --git a/content/browser/notifications/platform_notification_context_impl.h b/content/browser/notifications/platform_notification_context_impl.h index 653f487..09fd40b 100644 --- a/content/browser/notifications/platform_notification_context_impl.h +++ b/content/browser/notifications/platform_notification_context_impl.h
@@ -42,29 +42,26 @@ class ServiceWorkerContextWrapper; // Implementation of the Web Notification storage context. The public methods -// defined in this interface must only be called on the IO thread unless -// otherwise specified. +// defined in this interface must only be called on the UI thread. class CONTENT_EXPORT PlatformNotificationContextImpl : public PlatformNotificationContext, public ServiceWorkerContextCoreObserver { public: // Constructs a new platform notification context. If |path| is non-empty, the // database will be initialized in the "Platform Notifications" subdirectory - // of |path|. Otherwise, the database will be initialized in memory. The - // constructor must only be called on the IO thread. + // of |path|. Otherwise, the database will be initialized in memory. PlatformNotificationContextImpl( const base::FilePath& path, BrowserContext* browser_context, const scoped_refptr<ServiceWorkerContextWrapper>& service_worker_context); - // To be called on the UI thread to initialize the instance. + // To be called to initialize the instance. void Initialize(); - // To be called on the UI thread when the context is being shut down. + // To be called when the context is being shut down. void Shutdown(); - // Creates a BlinkNotificationServiceImpl that is owned by this context. Must - // be called on the UI thread. + // Creates a BlinkNotificationServiceImpl that is owned by this context. void CreateService(const url::Origin& origin, blink::mojom::NotificationServiceRequest request); @@ -82,19 +79,19 @@ const std::string& notification_id, const GURL& origin, Interaction interaction, - const ReadResultCallback& callback) override; + ReadResultCallback callback) override; void WriteNotificationData(int64_t persistent_notification_id, int64_t service_worker_registration_id, const GURL& origin, const NotificationDatabaseData& database_data, - const WriteResultCallback& callback) override; + WriteResultCallback callback) override; void DeleteNotificationData(const std::string& notification_id, const GURL& origin, - const DeleteResultCallback& callback) override; + DeleteResultCallback callback) override; void ReadAllNotificationDataForServiceWorkerRegistration( const GURL& origin, int64_t service_worker_registration_id, - const ReadAllResultCallback& callback) override; + ReadAllResultCallback callback) override; // ServiceWorkerContextCoreObserver implementation. void OnRegistrationDeleted(int64_t registration_id, @@ -106,84 +103,77 @@ ~PlatformNotificationContextImpl() override; - void DidGetNotificationsOnUI( - std::unique_ptr<std::set<std::string>> displayed_notifications, - bool supports_synchronization); - void InitializeOnIO( - std::unique_ptr<std::set<std::string>> displayed_notifications, - bool supports_synchronization); - void ShutdownOnIO(); + void DidGetNotifications(std::set<std::string> displayed_notifications, + bool supports_synchronization); - // Initializes the database if neccesary. Must be called on the IO thread. - // |success_closure| will be invoked on a the |task_runner_| thread when - // everything is available, or |failure_closure_| will be invoked on the - // IO thread when initialization fails. - void LazyInitialize(const base::Closure& success_closure, - const base::Closure& failure_closure); + using InitializeResultCallback = base::OnceCallback<void(bool)>; - // Opens the database. Must be called on the |task_runner_| thread. When the - // database has been opened, |success_closure| will be invoked on the task - // thread, otherwise |failure_closure_| will be invoked on the IO thread. - void OpenDatabase(const base::Closure& success_closure, - const base::Closure& failure_closure); + // Initializes the database if necessary. |callback| will be invoked on the + // |task_runner_| thread. If everything is available, |callback| will be + // called with true, otherwise it will be called with false. + void LazyInitialize(InitializeResultCallback callback); + + // Opens the database. Must be called on the |task_runner_| thread. |callback| + // will be invoked on the |task_runner_| thread. When the database has been + // successfully opened, |callback| will be called with true, otherwise it will + // be called with false. + void OpenDatabase(InitializeResultCallback callback); // Actually reads the notification data from the database. Must only be // called on the |task_runner_| thread. |callback| will be invoked on the - // IO thread when the operation has completed. + // UI thread when the operation has completed. void DoReadNotificationData(const std::string& notification_id, const GURL& origin, Interaction interaction, - const ReadResultCallback& callback); + ReadResultCallback callback, + bool initialized); // Updates the database (and the result callback) based on // |displayed_notifications| if |supports_synchronization|. - void SynchronizeDisplayedNotificationsForServiceWorkerRegistrationOnUI( + void SynchronizeDisplayedNotificationsForServiceWorkerRegistration( const GURL& origin, int64_t service_worker_registration_id, - const ReadAllResultCallback& callback, - std::unique_ptr<std::set<std::string>> displayed_notifications, - bool supports_synchronization); - - // Updates the database (and the result callback) based on - // |displayed_notifications| if |supports_synchronization|. - void SynchronizeDisplayedNotificationsForServiceWorkerRegistrationOnIO( - const GURL& origin, - int64_t service_worker_registration_id, - const ReadAllResultCallback& callback, - std::unique_ptr<std::set<std::string>> displayed_notifications, + ReadAllResultCallback callback, + std::set<std::string> displayed_notifications, bool supports_synchronization); // Actually reads all notification data from the database. Must only be // called on the |task_runner_| thread. |callback| will be invoked on the - // IO thread when the operation has completed. + // UI thread when the operation has completed. void DoReadAllNotificationDataForServiceWorkerRegistration( const GURL& origin, int64_t service_worker_registration_id, - const ReadAllResultCallback& callback, - std::unique_ptr<std::set<std::string>> displayed_notifications, - bool supports_synchronization); + ReadAllResultCallback callback, + std::set<std::string> displayed_notifications, + bool supports_synchronization, + bool initialized); // Actually writes the notification database to the database. Must only be // called on the |task_runner_| thread. |callback| will be invoked on the - // IO thread when the operation has completed. + // UI thread when the operation has completed. void DoWriteNotificationData(int64_t persistent_notification_id, int64_t service_worker_registration_id, const GURL& origin, const NotificationDatabaseData& database_data, - const WriteResultCallback& callback); + WriteResultCallback callback, + bool initialized); // Actually deletes the notification information from the database. Must only // be called on the |task_runner_| thread. |callback| will be invoked on the - // IO thread when the operation has completed. + // UI thread when the operation has completed. void DoDeleteNotificationData(const std::string& notification_id, const GURL& origin, - const DeleteResultCallback& callback); + DeleteResultCallback callback, + bool initialized); + + void OnStorageWipedInitialized(bool initialized); // Deletes all notifications associated with |service_worker_registration_id| // belonging to |origin|. Must be called on the |task_runner_| thread. void DoDeleteNotificationsForServiceWorkerRegistration( const GURL& origin, - int64_t service_worker_registration_id); + int64_t service_worker_registration_id, + bool initialized); // Destroys the database regardless of its initialization status. This method // must only be called on the |task_runner_| thread. Returns if the directory
diff --git a/content/browser/notifications/platform_notification_context_unittest.cc b/content/browser/notifications/platform_notification_context_unittest.cc index 761d302..16c294c3 100644 --- a/content/browser/notifications/platform_notification_context_unittest.cc +++ b/content/browser/notifications/platform_notification_context_unittest.cc
@@ -45,8 +45,7 @@ class PlatformNotificationContextTest : public ::testing::Test { public: - PlatformNotificationContextTest() - : thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), success_(false) {} + PlatformNotificationContextTest() : success_(false) {} // Callback to provide when reading a single notification from the database. void DidReadNotificationData(bool success,
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc index 740e73b6..55fb237 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -3076,6 +3076,7 @@ switches::kEnableNetworkInformationDownlinkMax, switches::kEnableOopRasterization, switches::kEnablePassthroughRasterDecoder, + switches::kEnablePerfetto, switches::kEnablePluginPlaceholderTesting, switches::kEnablePreciseMemoryInfo, switches::kEnablePrintBrowser,
diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc index 76858a3c..3b17827 100644 --- a/content/browser/site_per_process_browsertest.cc +++ b/content/browser/site_per_process_browsertest.cc
@@ -14931,4 +14931,55 @@ shutdown_B.Wait(); } +// This test verifies that plugin elements containing cross-process-frames do +// not become unresponsive during style changes. (see https://crbug.com/781880). +IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, + PluginElementResponsiveInCrossProcessNavigations) { + GURL main_frame_url(embedded_test_server()->GetURL("a.com", "/title1.html")); + ASSERT_TRUE(NavigateToURL(shell(), main_frame_url)); + GURL cross_origin(embedded_test_server()->GetURL("b.com", "/title1.html")); + std::string msg = + EvalJsWithManualReply( + shell(), JsReplace("var object = document.createElement('object');" + "document.body.appendChild(object);" + "object.data = $1;" + "object.type='text/html';" + "object.notify = true;" + "object.onload = () => {" + " if (!object.notify) return;" + " object.notify = false;" + " window.domAutomationController.send('done');" + "};", + cross_origin.spec().c_str())) + .ExtractString(); + ASSERT_EQ("done", msg); + // To track the frame's visibility an EmbeddedContentView is needed. The + // following steps make sure the visibility is tracked properly on the browser + // side. + auto* frame_connector = web_contents() + ->GetFrameTree() + ->root() + ->child_at(0) + ->render_manager() + ->GetProxyToParent() + ->cross_process_frame_connector(); + ASSERT_FALSE(frame_connector->IsHidden()); + ASSERT_TRUE(ExecJs( + shell(), "document.querySelector('object').style.display = 'none';")); + while (!frame_connector->IsHidden()) { + base::RunLoop run_loop; + base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( + FROM_HERE, run_loop.QuitClosure(), TestTimeouts::tiny_timeout()); + run_loop.Run(); + } + ASSERT_TRUE(ExecJs( + shell(), "document.querySelector('object').style.display = 'block';")); + while (frame_connector->IsHidden()) { + base::RunLoop run_loop; + base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( + FROM_HERE, run_loop.QuitClosure(), TestTimeouts::tiny_timeout()); + run_loop.Run(); + } +} + } // namespace content
diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage_partition_impl.cc index a1c24ebd..bbee352 100644 --- a/content/browser/storage_partition_impl.cc +++ b/content/browser/storage_partition_impl.cc
@@ -1306,10 +1306,14 @@ } } -void StoragePartitionImpl::ClearCodeCaches(base::OnceClosure callback) { +void StoragePartitionImpl::ClearCodeCaches( + const base::Time begin, + const base::Time end, + const base::RepeatingCallback<bool(const GURL&)>& url_matcher, + base::OnceClosure callback) { // StoragePartitionCodeCacheDataRemover deletes itself when it is done. - StoragePartitionCodeCacheDataRemover::Create(this)->Remove( - std::move(callback)); + StoragePartitionCodeCacheDataRemover::Create(this, url_matcher, begin, end) + ->Remove(std::move(callback)); } void StoragePartitionImpl::Flush() {
diff --git a/content/browser/storage_partition_impl.h b/content/browser/storage_partition_impl.h index e8a33dc..57c2bdc6f 100644 --- a/content/browser/storage_partition_impl.h +++ b/content/browser/storage_partition_impl.h
@@ -132,7 +132,11 @@ const base::Time end, const base::Callback<bool(const GURL&)>& url_matcher, base::OnceClosure callback) override; - void ClearCodeCaches(base::OnceClosure callback) override; + void ClearCodeCaches( + const base::Time begin, + const base::Time end, + const base::RepeatingCallback<bool(const GURL&)>& url_matcher, + base::OnceClosure callback) override; void Flush() override; void ResetURLLoaderFactories() override; void ClearBluetoothAllowedDevicesMapForTesting() override;
diff --git a/content/browser/storage_partition_impl_unittest.cc b/content/browser/storage_partition_impl_unittest.cc index 39321598..156186f8 100644 --- a/content/browser/storage_partition_impl_unittest.cc +++ b/content/browser/storage_partition_impl_unittest.cc
@@ -70,6 +70,7 @@ const char kTestOrigin3[] = "http://host3:1/"; const char kTestOriginDevTools[] = "chrome-devtools://abcdefghijklmnopqrstuvw/"; const char kTestURL[] = "http://host4/script.js"; +const char kFilterURLForCodeCache[] = "http://host5/script.js"; #if BUILDFLAG(ENABLE_PLUGINS) const char kWidevineCdmPluginId[] = "application_x-ppapi-widevine-cdm"; @@ -83,6 +84,7 @@ const url::Origin kOriginDevTools = url::Origin::Create(GURL(kTestOriginDevTools)); const GURL kResourceURL(kTestURL); +const GURL kFilterResourceURLForCodeCache(kFilterURLForCodeCache); const blink::mojom::StorageType kTemporary = blink::mojom::StorageType::kTemporary; @@ -314,6 +316,17 @@ base::RunLoop().RunUntilIdle(); } + void SetLastUseTime(Cache cache, + GURL url, + GURL origin_lock, + base::Time time) { + GetCache(cache)->SetLastUsedTimeForTest( + url, origin_lock, time, + base::BindRepeating(&RemoveCodeCacheTester::SetTimeCallback, + base::Unretained(this))); + await_completion_.BlockUntilNotified(); + } + std::string received_data() { return received_data_; } private: @@ -335,6 +348,8 @@ await_completion_.Notify(); } + void SetTimeCallback() { await_completion_.Notify(); } + bool entry_exists_; AwaitCompletionHelper await_completion_; GeneratedCodeCacheContext* code_cache_context_; @@ -670,8 +685,18 @@ } void ClearCodeCache(content::StoragePartition* partition, + base::Time begin_time, + base::Time end_time, + base::RepeatingCallback<bool(const GURL&)> url_predicate, base::RunLoop* run_loop) { - partition->ClearCodeCaches(run_loop->QuitClosure()); + partition->ClearCodeCaches(begin_time, end_time, url_predicate, + run_loop->QuitClosure()); +} + +bool FilterURL(const GURL& url) { + if (url == kFilterResourceURLForCodeCache) + return true; + return false; } #if BUILDFLAG(ENABLE_PLUGINS) @@ -1312,7 +1337,9 @@ base::RunLoop run_loop; base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::BindOnce(&ClearCodeCache, partition, &run_loop)); + FROM_HERE, + base::BindOnce(&ClearCodeCache, partition, base::Time(), base::Time(), + base::RepeatingCallback<bool(const GURL&)>(), &run_loop)); run_loop.Run(); EXPECT_FALSE( @@ -1323,6 +1350,99 @@ base::RunLoop().RunUntilIdle(); } +TEST_F(StoragePartitionImplTest, ClearCodeCacheSpecificURL) { + base::test::ScopedFeatureList feature_list; + feature_list.InitAndEnableFeature(net::features::kIsolatedCodeCache); + ASSERT_TRUE(base::FeatureList::IsEnabled(net::features::kIsolatedCodeCache)); + + StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( + BrowserContext::GetDefaultStoragePartition(browser_context())); + // Ensure code cache is initialized. + base::RunLoop().RunUntilIdle(); + EXPECT_TRUE(partition->GetGeneratedCodeCacheContext() != nullptr); + + RemoveCodeCacheTester tester(partition->GetGeneratedCodeCacheContext()); + + GURL origin = GURL(kTestOrigin1); + std::string data("SomeData"); + tester.AddEntry(RemoveCodeCacheTester::kJs, kResourceURL, origin, data); + tester.AddEntry(RemoveCodeCacheTester::kJs, kFilterResourceURLForCodeCache, + origin, data); + EXPECT_TRUE( + tester.ContainsEntry(RemoveCodeCacheTester::kJs, kResourceURL, origin)); + EXPECT_TRUE(tester.ContainsEntry(RemoveCodeCacheTester::kJs, + kFilterResourceURLForCodeCache, origin)); + EXPECT_EQ(tester.received_data(), data); + + base::RunLoop run_loop; + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, + base::BindOnce(&ClearCodeCache, partition, base::Time(), base::Time(), + base::BindRepeating(&FilterURL), &run_loop)); + run_loop.Run(); + + EXPECT_TRUE( + tester.ContainsEntry(RemoveCodeCacheTester::kJs, kResourceURL, origin)); + EXPECT_FALSE(tester.ContainsEntry(RemoveCodeCacheTester::kJs, + kFilterResourceURLForCodeCache, origin)); + + // Make sure there isn't a second invalid callback sitting in the queue. + // (this used to be a bug). + base::RunLoop().RunUntilIdle(); +} + +TEST_F(StoragePartitionImplTest, ClearCodeCacheDateRange) { + base::test::ScopedFeatureList feature_list; + feature_list.InitAndEnableFeature(net::features::kIsolatedCodeCache); + ASSERT_TRUE(base::FeatureList::IsEnabled(net::features::kIsolatedCodeCache)); + + StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( + BrowserContext::GetDefaultStoragePartition(browser_context())); + // Ensure code cache is initialized. + base::RunLoop().RunUntilIdle(); + EXPECT_TRUE(partition->GetGeneratedCodeCacheContext() != nullptr); + + RemoveCodeCacheTester tester(partition->GetGeneratedCodeCacheContext()); + + base::Time current_time = base::Time::NowFromSystemTime(); + base::Time out_of_range_time = current_time - base::TimeDelta::FromHours(3); + base::Time begin_time = current_time - base::TimeDelta::FromHours(2); + base::Time in_range_time = current_time - base::TimeDelta::FromHours(1); + + GURL origin = GURL(kTestOrigin1); + std::string data("SomeData"); + tester.AddEntry(RemoveCodeCacheTester::kJs, kResourceURL, origin, data); + EXPECT_TRUE( + tester.ContainsEntry(RemoveCodeCacheTester::kJs, kResourceURL, origin)); + EXPECT_EQ(tester.received_data(), data); + tester.SetLastUseTime(RemoveCodeCacheTester::kJs, kResourceURL, origin, + out_of_range_time); + + // Add a new entry. + tester.AddEntry(RemoveCodeCacheTester::kJs, kFilterResourceURLForCodeCache, + origin, data); + EXPECT_TRUE(tester.ContainsEntry(RemoveCodeCacheTester::kJs, + kFilterResourceURLForCodeCache, origin)); + tester.SetLastUseTime(RemoveCodeCacheTester::kJs, kResourceURL, origin, + in_range_time); + + base::RunLoop run_loop; + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, + base::BindOnce(&ClearCodeCache, partition, begin_time, current_time, + base::BindRepeating(&FilterURL), &run_loop)); + run_loop.Run(); + + EXPECT_TRUE( + tester.ContainsEntry(RemoveCodeCacheTester::kJs, kResourceURL, origin)); + EXPECT_FALSE(tester.ContainsEntry(RemoveCodeCacheTester::kJs, + kFilterResourceURLForCodeCache, origin)); + + // Make sure there isn't a second invalid callback sitting in the queue. + // (this used to be a bug). + base::RunLoop().RunUntilIdle(); +} + TEST_F(StoragePartitionImplTest, ClearWasmCodeCache) { base::test::ScopedFeatureList feature_list; feature_list.InitWithFeatures( @@ -1350,7 +1470,9 @@ base::RunLoop run_loop; base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::BindOnce(&ClearCodeCache, partition, &run_loop)); + FROM_HERE, + base::BindOnce(&ClearCodeCache, partition, base::Time(), base::Time(), + base::RepeatingCallback<bool(const GURL&)>(), &run_loop)); run_loop.Run(); EXPECT_FALSE(tester.ContainsEntry(RemoveCodeCacheTester::kWebAssembly, @@ -1376,7 +1498,9 @@ base::RunLoop run_loop; // This shouldn't crash. base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::BindOnce(&ClearCodeCache, partition, &run_loop)); + FROM_HERE, + base::BindOnce(&ClearCodeCache, partition, base::Time(), base::Time(), + base::RepeatingCallback<bool(const GURL&)>(), &run_loop)); run_loop.Run(); } @@ -1396,7 +1520,9 @@ base::RunLoop run_loop; // This shouldn't crash. base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::BindOnce(&ClearCodeCache, partition, &run_loop)); + FROM_HERE, + base::BindOnce(&ClearCodeCache, partition, base::Time(), base::Time(), + base::RepeatingCallback<bool(const GURL&)>(), &run_loop)); run_loop.Run(); }
diff --git a/content/browser/worker_host/mock_shared_worker.cc b/content/browser/worker_host/mock_shared_worker.cc index b461f5df..b9ddcc6 100644 --- a/content/browser/worker_host/mock_shared_worker.cc +++ b/content/browser/worker_host/mock_shared_worker.cc
@@ -67,7 +67,7 @@ } MockSharedWorkerFactory::MockSharedWorkerFactory( - mojom::SharedWorkerFactoryRequest request) + blink::mojom::SharedWorkerFactoryRequest request) : binding_(this, std::move(request)) {} MockSharedWorkerFactory::~MockSharedWorkerFactory() = default;
diff --git a/content/browser/worker_host/mock_shared_worker.h b/content/browser/worker_host/mock_shared_worker.h index 9005e653..848486cb 100644 --- a/content/browser/worker_host/mock_shared_worker.h +++ b/content/browser/worker_host/mock_shared_worker.h
@@ -14,10 +14,10 @@ #include "base/macros.h" #include "content/browser/worker_host/shared_worker_host.h" -#include "content/common/shared_worker/shared_worker_factory.mojom.h" #include "mojo/public/cpp/bindings/binding.h" #include "third_party/blink/public/common/messaging/message_port_channel.h" #include "third_party/blink/public/mojom/service_worker/service_worker_provider.mojom.h" +#include "third_party/blink/public/mojom/worker/shared_worker_factory.mojom.h" class GURL; @@ -53,9 +53,10 @@ DISALLOW_COPY_AND_ASSIGN(MockSharedWorker); }; -class MockSharedWorkerFactory : public mojom::SharedWorkerFactory { +class MockSharedWorkerFactory : public blink::mojom::SharedWorkerFactory { public: - explicit MockSharedWorkerFactory(mojom::SharedWorkerFactoryRequest request); + explicit MockSharedWorkerFactory( + blink::mojom::SharedWorkerFactoryRequest request); ~MockSharedWorkerFactory() override; bool CheckReceivedCreateSharedWorker( @@ -67,7 +68,7 @@ blink::mojom::SharedWorkerRequest* request); private: - // mojom::SharedWorkerFactory methods: + // blink::mojom::SharedWorkerFactory methods: void CreateSharedWorker( blink::mojom::SharedWorkerInfoPtr info, bool pause_on_start, @@ -99,7 +100,7 @@ service_manager::mojom::InterfaceProviderPtr interface_provider; }; - mojo::Binding<mojom::SharedWorkerFactory> binding_; + mojo::Binding<blink::mojom::SharedWorkerFactory> binding_; std::unique_ptr<CreateParams> create_params_; DISALLOW_COPY_AND_ASSIGN(MockSharedWorkerFactory);
diff --git a/content/browser/worker_host/shared_worker_host.cc b/content/browser/worker_host/shared_worker_host.cc index 2d098d42..9a59717 100644 --- a/content/browser/worker_host/shared_worker_host.cc +++ b/content/browser/worker_host/shared_worker_host.cc
@@ -142,7 +142,7 @@ } void SharedWorkerHost::Start( - mojom::SharedWorkerFactoryPtr factory, + blink::mojom::SharedWorkerFactoryPtr factory, blink::mojom::ServiceWorkerProviderInfoForSharedWorkerPtr service_worker_provider_info, network::mojom::URLLoaderFactoryAssociatedPtrInfo @@ -219,7 +219,7 @@ // Set up interface provider interface. service_manager::mojom::InterfaceProviderPtr interface_provider; interface_provider_binding_.Bind(FilterRendererExposedInterfaces( - mojom::kNavigation_SharedWorkerSpec, process_id_, + blink::mojom::kNavigation_SharedWorkerSpec, process_id_, mojo::MakeRequest(&interface_provider))); // Set the default factory to the bundle for subresource loading to pass to
diff --git a/content/browser/worker_host/shared_worker_host.h b/content/browser/worker_host/shared_worker_host.h index 8c45294..3b4a6b3f 100644 --- a/content/browser/worker_host/shared_worker_host.h +++ b/content/browser/worker_host/shared_worker_host.h
@@ -16,7 +16,7 @@ #include "base/strings/string16.h" #include "base/time/time.h" #include "base/unguessable_token.h" -#include "content/common/shared_worker/shared_worker_factory.mojom.h" +#include "content/common/content_export.h" #include "content/public/browser/global_routing_id.h" #include "mojo/public/cpp/bindings/binding.h" #include "services/network/public/mojom/url_loader_factory.mojom.h" @@ -25,6 +25,7 @@ #include "third_party/blink/public/mojom/service_worker/service_worker_provider.mojom.h" #include "third_party/blink/public/mojom/worker/shared_worker.mojom.h" #include "third_party/blink/public/mojom/worker/shared_worker_client.mojom.h" +#include "third_party/blink/public/mojom/worker/shared_worker_factory.mojom.h" #include "third_party/blink/public/mojom/worker/shared_worker_host.mojom.h" #include "third_party/blink/public/mojom/worker/worker_main_script_load_params.mojom.h" @@ -90,7 +91,7 @@ // default network loader factory is created by the RenderFrameHost, and // service worker controller is sent via ServiceWorkerContainer#SetController. void Start( - mojom::SharedWorkerFactoryPtr factory, + blink::mojom::SharedWorkerFactoryPtr factory, blink::mojom::ServiceWorkerProviderInfoForSharedWorkerPtr service_worker_provider_info, network::mojom::URLLoaderFactoryAssociatedPtrInfo @@ -199,7 +200,7 @@ // associated with Mojo interfaces (ServiceWorkerContainer and // URLLoaderFactory) that are needed to stay alive while the worker is // starting or running. - mojom::SharedWorkerFactoryPtr factory_; + blink::mojom::SharedWorkerFactoryPtr factory_; mojo::Binding<service_manager::mojom::InterfaceProvider> interface_provider_binding_;
diff --git a/content/browser/worker_host/shared_worker_host_unittest.cc b/content/browser/worker_host/shared_worker_host_unittest.cc index c2f5c433..cf08710 100644 --- a/content/browser/worker_host/shared_worker_host_unittest.cc +++ b/content/browser/worker_host/shared_worker_host_unittest.cc
@@ -72,7 +72,7 @@ } void StartWorker(SharedWorkerHost* host, - mojom::SharedWorkerFactoryPtr factory) { + blink::mojom::SharedWorkerFactoryPtr factory) { blink::mojom::ServiceWorkerProviderInfoForSharedWorkerPtr provider_info = nullptr; network::mojom::URLLoaderFactoryAssociatedPtrInfo @@ -157,7 +157,7 @@ base::WeakPtr<SharedWorkerHost> host = CreateHost(); // Start the worker. - mojom::SharedWorkerFactoryPtr factory; + blink::mojom::SharedWorkerFactoryPtr factory; MockSharedWorkerFactory factory_impl(mojo::MakeRequest(&factory)); StartWorker(host.get(), std::move(factory)); @@ -253,7 +253,7 @@ base::WeakPtr<SharedWorkerHost> host = CreateHost(); // Create the factory. - mojom::SharedWorkerFactoryPtr factory; + blink::mojom::SharedWorkerFactoryPtr factory; MockSharedWorkerFactory factory_impl(mojo::MakeRequest(&factory)); // Start the worker. StartWorker(host.get(), std::move(factory)); @@ -296,7 +296,7 @@ base::WeakPtr<SharedWorkerHost> host = CreateHost(); // Start the worker. - mojom::SharedWorkerFactoryPtr factory; + blink::mojom::SharedWorkerFactoryPtr factory; MockSharedWorkerFactory factory_impl(mojo::MakeRequest(&factory)); StartWorker(host.get(), std::move(factory));
diff --git a/content/browser/worker_host/shared_worker_service_impl.cc b/content/browser/worker_host/shared_worker_service_impl.cc index 75e855d0..80cfee5 100644 --- a/content/browser/worker_host/shared_worker_service_impl.cc +++ b/content/browser/worker_host/shared_worker_service_impl.cc
@@ -299,7 +299,7 @@ // Get the factory used to instantiate the new shared worker instance in // the target process. - mojom::SharedWorkerFactoryPtr factory; + blink::mojom::SharedWorkerFactoryPtr factory; BindInterface(process_host, &factory); host->Start(std::move(factory), std::move(service_worker_provider_info),
diff --git a/content/browser/worker_host/shared_worker_service_impl.h b/content/browser/worker_host/shared_worker_service_impl.h index 8fb18c1..6c6344bd 100644 --- a/content/browser/worker_host/shared_worker_service_impl.h +++ b/content/browser/worker_host/shared_worker_service_impl.h
@@ -14,12 +14,12 @@ #include "base/macros.h" #include "content/browser/service_worker/service_worker_context_wrapper.h" #include "content/browser/worker_host/shared_worker_host.h" -#include "content/common/shared_worker/shared_worker_factory.mojom.h" #include "content/public/browser/shared_worker_service.h" #include "services/network/public/cpp/resource_response.h" #include "services/network/public/mojom/url_loader_factory.mojom.h" #include "third_party/blink/public/mojom/service_worker/service_worker_provider.mojom.h" #include "third_party/blink/public/mojom/worker/shared_worker_connector.mojom.h" +#include "third_party/blink/public/mojom/worker/shared_worker_factory.mojom.h" #include "third_party/blink/public/mojom/worker/worker_main_script_load_params.mojom.h" namespace blink {
diff --git a/content/browser/worker_host/shared_worker_service_impl_unittest.cc b/content/browser/worker_host/shared_worker_service_impl_unittest.cc index ae64b31..20c8611 100644 --- a/content/browser/worker_host/shared_worker_service_impl_unittest.cc +++ b/content/browser/worker_host/shared_worker_service_impl_unittest.cc
@@ -44,7 +44,7 @@ } static bool CheckReceivedFactoryRequest( - mojom::SharedWorkerFactoryRequest* request) { + blink::mojom::SharedWorkerFactoryRequest* request) { if (s_factory_request_received_.empty()) return false; *request = std::move(s_factory_request_received_.front()); @@ -58,7 +58,7 @@ static void BindSharedWorkerFactory(mojo::ScopedMessagePipeHandle handle) { s_factory_request_received_.push( - mojom::SharedWorkerFactoryRequest(std::move(handle))); + blink::mojom::SharedWorkerFactoryRequest(std::move(handle))); } std::unique_ptr<TestWebContents> CreateWebContents(const GURL& url) { @@ -88,7 +88,7 @@ } std::unique_ptr<TestBrowserContext> browser_context_; - static std::queue<mojom::SharedWorkerFactoryRequest> + static std::queue<blink::mojom::SharedWorkerFactoryRequest> s_factory_request_received_; std::unique_ptr<MockRenderProcessHostFactory> render_process_host_factory_; std::unique_ptr<NotImplementedNetworkURLLoaderFactory> url_loader_factory_; @@ -98,7 +98,7 @@ }; // static -std::queue<mojom::SharedWorkerFactoryRequest> +std::queue<blink::mojom::SharedWorkerFactoryRequest> SharedWorkerServiceImplTest::s_factory_request_received_; namespace { @@ -132,7 +132,7 @@ TestRenderFrameHost* render_frame_host = web_contents->GetMainFrame(); MockRenderProcessHost* renderer_host = render_frame_host->GetProcess(); renderer_host->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -145,7 +145,7 @@ base::RunLoop().RunUntilIdle(); - mojom::SharedWorkerFactoryRequest factory_request; + blink::mojom::SharedWorkerFactoryRequest factory_request; EXPECT_TRUE(CheckReceivedFactoryRequest(&factory_request)); MockSharedWorkerFactory factory(std::move(factory_request)); base::RunLoop().RunUntilIdle(); @@ -208,7 +208,7 @@ TestRenderFrameHost* render_frame_host0 = web_contents0->GetMainFrame(); MockRenderProcessHost* renderer_host0 = render_frame_host0->GetProcess(); renderer_host0->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host0->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -221,7 +221,7 @@ base::RunLoop().RunUntilIdle(); - mojom::SharedWorkerFactoryRequest factory_request; + blink::mojom::SharedWorkerFactoryRequest factory_request; EXPECT_TRUE(CheckReceivedFactoryRequest(&factory_request)); MockSharedWorkerFactory factory(std::move(factory_request)); base::RunLoop().RunUntilIdle(); @@ -277,7 +277,7 @@ TestRenderFrameHost* render_frame_host1 = web_contents1->GetMainFrame(); MockRenderProcessHost* renderer_host1 = render_frame_host1->GetProcess(); renderer_host1->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host1->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -339,7 +339,7 @@ TestRenderFrameHost* render_frame_host0 = web_contents0->GetMainFrame(); MockRenderProcessHost* renderer_host0 = render_frame_host0->GetProcess(); renderer_host0->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host0->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -349,7 +349,7 @@ TestRenderFrameHost* render_frame_host1 = web_contents1->GetMainFrame(); MockRenderProcessHost* renderer_host1 = render_frame_host1->GetProcess(); renderer_host1->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); // First client, creates worker. @@ -361,7 +361,7 @@ kUrl, kName, &client0, &local_port0); base::RunLoop().RunUntilIdle(); - mojom::SharedWorkerFactoryRequest factory_request; + blink::mojom::SharedWorkerFactoryRequest factory_request; EXPECT_TRUE(CheckReceivedFactoryRequest(&factory_request)); MockSharedWorkerFactory factory(std::move(factory_request)); base::RunLoop().RunUntilIdle(); @@ -411,7 +411,7 @@ TestRenderFrameHost* render_frame_host0 = web_contents0->GetMainFrame(); MockRenderProcessHost* renderer_host0 = render_frame_host0->GetProcess(); renderer_host0->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host0->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -421,7 +421,7 @@ TestRenderFrameHost* render_frame_host1 = web_contents1->GetMainFrame(); MockRenderProcessHost* renderer_host1 = render_frame_host1->GetProcess(); renderer_host1->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host1->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -434,7 +434,7 @@ kUrl0, kName, &client0, &local_port0); base::RunLoop().RunUntilIdle(); - mojom::SharedWorkerFactoryRequest factory_request0; + blink::mojom::SharedWorkerFactoryRequest factory_request0; EXPECT_TRUE(CheckReceivedFactoryRequest(&factory_request0)); MockSharedWorkerFactory factory0(std::move(factory_request0)); base::RunLoop().RunUntilIdle(); @@ -459,7 +459,7 @@ kUrl1, kName, &client1, &local_port1); base::RunLoop().RunUntilIdle(); - mojom::SharedWorkerFactoryRequest factory_request1; + blink::mojom::SharedWorkerFactoryRequest factory_request1; EXPECT_TRUE(CheckReceivedFactoryRequest(&factory_request1)); MockSharedWorkerFactory factory1(std::move(factory_request1)); base::RunLoop().RunUntilIdle(); @@ -496,7 +496,7 @@ TestRenderFrameHost* render_frame_host0 = web_contents0->GetMainFrame(); MockRenderProcessHost* renderer_host0 = render_frame_host0->GetProcess(); renderer_host0->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host0->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -506,7 +506,7 @@ TestRenderFrameHost* render_frame_host1 = web_contents1->GetMainFrame(); MockRenderProcessHost* renderer_host1 = render_frame_host1->GetProcess(); renderer_host1->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host1->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -519,7 +519,7 @@ kUrl, kName0, &client0, &local_port0); base::RunLoop().RunUntilIdle(); - mojom::SharedWorkerFactoryRequest factory_request0; + blink::mojom::SharedWorkerFactoryRequest factory_request0; EXPECT_TRUE(CheckReceivedFactoryRequest(&factory_request0)); MockSharedWorkerFactory factory0(std::move(factory_request0)); base::RunLoop().RunUntilIdle(); @@ -544,7 +544,7 @@ kUrl, kName1, &client1, &local_port1); base::RunLoop().RunUntilIdle(); - mojom::SharedWorkerFactoryRequest factory_request1; + blink::mojom::SharedWorkerFactoryRequest factory_request1; EXPECT_TRUE(CheckReceivedFactoryRequest(&factory_request1)); MockSharedWorkerFactory factory1(std::move(factory_request1)); base::RunLoop().RunUntilIdle(); @@ -580,7 +580,7 @@ TestRenderFrameHost* render_frame_host0 = web_contents0->GetMainFrame(); MockRenderProcessHost* renderer_host0 = render_frame_host0->GetProcess(); renderer_host0->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host0->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -590,7 +590,7 @@ TestRenderFrameHost* render_frame_host1 = web_contents1->GetMainFrame(); MockRenderProcessHost* renderer_host1 = render_frame_host1->GetProcess(); renderer_host1->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host1->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -612,7 +612,7 @@ // Check that the worker was created. - mojom::SharedWorkerFactoryRequest factory_request; + blink::mojom::SharedWorkerFactoryRequest factory_request; EXPECT_TRUE(CheckReceivedFactoryRequest(&factory_request)); MockSharedWorkerFactory factory(std::move(factory_request)); @@ -655,7 +655,7 @@ TestRenderFrameHost* render_frame_host0 = web_contents0->GetMainFrame(); MockRenderProcessHost* renderer_host0 = render_frame_host0->GetProcess(); renderer_host0->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host0->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -665,7 +665,7 @@ TestRenderFrameHost* render_frame_host1 = web_contents1->GetMainFrame(); MockRenderProcessHost* renderer_host1 = render_frame_host1->GetProcess(); renderer_host1->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host1->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -687,11 +687,11 @@ // Check that both workers were created. - mojom::SharedWorkerFactoryRequest factory_request0; + blink::mojom::SharedWorkerFactoryRequest factory_request0; EXPECT_TRUE(CheckReceivedFactoryRequest(&factory_request0)); MockSharedWorkerFactory factory0(std::move(factory_request0)); - mojom::SharedWorkerFactoryRequest factory_request1; + blink::mojom::SharedWorkerFactoryRequest factory_request1; EXPECT_TRUE(CheckReceivedFactoryRequest(&factory_request1)); MockSharedWorkerFactory factory1(std::move(factory_request1)); @@ -744,7 +744,7 @@ TestRenderFrameHost* render_frame_host0 = web_contents0->GetMainFrame(); MockRenderProcessHost* renderer_host0 = render_frame_host0->GetProcess(); renderer_host0->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host0->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -754,7 +754,7 @@ TestRenderFrameHost* render_frame_host1 = web_contents1->GetMainFrame(); MockRenderProcessHost* renderer_host1 = render_frame_host1->GetProcess(); renderer_host1->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host1->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -776,11 +776,11 @@ // Check that both workers were created. - mojom::SharedWorkerFactoryRequest factory_request0; + blink::mojom::SharedWorkerFactoryRequest factory_request0; EXPECT_TRUE(CheckReceivedFactoryRequest(&factory_request0)); MockSharedWorkerFactory factory0(std::move(factory_request0)); - mojom::SharedWorkerFactoryRequest factory_request1; + blink::mojom::SharedWorkerFactoryRequest factory_request1; EXPECT_TRUE(CheckReceivedFactoryRequest(&factory_request1)); MockSharedWorkerFactory factory1(std::move(factory_request1)); @@ -833,7 +833,7 @@ TestRenderFrameHost* render_frame_host0 = web_contents0->GetMainFrame(); MockRenderProcessHost* renderer_host0 = render_frame_host0->GetProcess(); renderer_host0->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host0->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -842,7 +842,7 @@ TestRenderFrameHost* render_frame_host1 = web_contents1->GetMainFrame(); MockRenderProcessHost* renderer_host1 = render_frame_host1->GetProcess(); renderer_host1->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host1->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -851,7 +851,7 @@ TestRenderFrameHost* render_frame_host2 = web_contents2->GetMainFrame(); MockRenderProcessHost* renderer_host2 = render_frame_host2->GetProcess(); renderer_host2->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host2->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -865,7 +865,7 @@ // Starts a worker. - mojom::SharedWorkerFactoryRequest factory_request0; + blink::mojom::SharedWorkerFactoryRequest factory_request0; EXPECT_TRUE(CheckReceivedFactoryRequest(&factory_request0)); MockSharedWorkerFactory factory0(std::move(factory_request0)); @@ -899,7 +899,7 @@ // The previous worker is unavailable, so a new worker is created. - mojom::SharedWorkerFactoryRequest factory_request1; + blink::mojom::SharedWorkerFactoryRequest factory_request1; EXPECT_TRUE(CheckReceivedFactoryRequest(&factory_request1)); MockSharedWorkerFactory factory1(std::move(factory_request1)); @@ -944,7 +944,7 @@ TestRenderFrameHost* render_frame_host0 = web_contents0->GetMainFrame(); MockRenderProcessHost* renderer_host0 = render_frame_host0->GetProcess(); renderer_host0->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host0->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -953,7 +953,7 @@ TestRenderFrameHost* render_frame_host1 = web_contents1->GetMainFrame(); MockRenderProcessHost* renderer_host1 = render_frame_host1->GetProcess(); renderer_host1->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host1->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -962,7 +962,7 @@ TestRenderFrameHost* render_frame_host2 = web_contents2->GetMainFrame(); MockRenderProcessHost* renderer_host2 = render_frame_host2->GetProcess(); renderer_host2->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::Bind(&SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host2->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -986,7 +986,7 @@ // The previous worker is unavailable, so a new worker is created. - mojom::SharedWorkerFactoryRequest factory_request1; + blink::mojom::SharedWorkerFactoryRequest factory_request1; EXPECT_TRUE(CheckReceivedFactoryRequest(&factory_request1)); MockSharedWorkerFactory factory1(std::move(factory_request1)); @@ -1031,7 +1031,7 @@ TestRenderFrameHost* render_frame_host0 = web_contents0->GetMainFrame(); MockRenderProcessHost* renderer_host0 = render_frame_host0->GetProcess(); renderer_host0->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::BindRepeating( &SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host0->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -1042,7 +1042,7 @@ TestRenderFrameHost* render_frame_host1 = web_contents1->GetMainFrame(); MockRenderProcessHost* renderer_host1 = render_frame_host1->GetProcess(); renderer_host1->OverrideBinderForTesting( - mojom::SharedWorkerFactory::Name_, + blink::mojom::SharedWorkerFactory::Name_, base::BindRepeating( &SharedWorkerServiceImplTest::BindSharedWorkerFactory)); renderer_host1->OverrideURLLoaderFactory(url_loader_factory_.get()); @@ -1063,7 +1063,7 @@ base::RunLoop().RunUntilIdle(); // Expect a factory request. - mojom::SharedWorkerFactoryRequest factory_request; + blink::mojom::SharedWorkerFactoryRequest factory_request; EXPECT_TRUE(CheckReceivedFactoryRequest(&factory_request)); MockSharedWorkerFactory factory(std::move(factory_request)); base::RunLoop().RunUntilIdle();
diff --git a/content/common/BUILD.gn b/content/common/BUILD.gn index 43c30e3..af1924a1 100644 --- a/content/common/BUILD.gn +++ b/content/common/BUILD.gn
@@ -503,7 +503,6 @@ "renderer.mojom", "renderer_host.mojom", "service_worker/embedded_worker.mojom", - "shared_worker/shared_worker_factory.mojom", "widget.mojom", ]
diff --git a/content/common/dom_storage/dom_storage_map_unittest.cc b/content/common/dom_storage/dom_storage_map_unittest.cc index bad1d7d..7e6506fe 100644 --- a/content/common/dom_storage/dom_storage_map_unittest.cc +++ b/content/common/dom_storage/dom_storage_map_unittest.cc
@@ -19,7 +19,7 @@ ~DOMStorageMapParamTest() override {} }; -INSTANTIATE_TEST_CASE_P(_, DOMStorageMapParamTest, ::testing::Bool()); +INSTANTIATE_TEST_SUITE_P(_, DOMStorageMapParamTest, ::testing::Bool()); TEST_P(DOMStorageMapParamTest, DOMStorageMapBasics) { const base::string16 kKey(ASCIIToUTF16("key"));
diff --git a/content/common/shared_worker/OWNERS b/content/common/shared_worker/OWNERS deleted file mode 100644 index 08850f4..0000000 --- a/content/common/shared_worker/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *.mojom=set noparent -per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContactsDialogHost.java b/content/public/android/java/src/org/chromium/content/browser/ContactsDialogHost.java index c37330c..f4d4ef8 100644 --- a/content/public/android/java/src/org/chromium/content/browser/ContactsDialogHost.java +++ b/content/public/android/java/src/org/chromium/content/browser/ContactsDialogHost.java
@@ -50,8 +50,10 @@ } if (mWindowAndroid.hasPermission(Manifest.permission.READ_CONTACTS)) { - UiUtils.showContactsPicker(mWindowAndroid.getActivity().get(), this, multiple, - includeNames, includeEmails, includeTel); + if (!UiUtils.showContactsPicker(mWindowAndroid.getActivity().get(), this, multiple, + includeNames, includeEmails, includeTel)) { + nativeEndWithPermissionDenied(mNativeContactsProviderAndroid); + } return; } @@ -65,8 +67,10 @@ if (permissions.length == 1 && grantResults.length == 1 && TextUtils.equals(permissions[0], Manifest.permission.READ_CONTACTS) && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - UiUtils.showContactsPicker(mWindowAndroid.getActivity().get(), this, - multiple, includeNames, includeEmails, includeTel); + if (!UiUtils.showContactsPicker(mWindowAndroid.getActivity().get(), this, + multiple, includeNames, includeEmails, includeTel)) { + nativeEndWithPermissionDenied(mNativeContactsProviderAndroid); + } } else { nativeEndWithPermissionDenied(mNativeContactsProviderAndroid); }
diff --git a/content/public/app/BUILD.gn b/content/public/app/BUILD.gn index 452248da..a8516aa 100644 --- a/content/public/app/BUILD.gn +++ b/content/public/app/BUILD.gn
@@ -245,7 +245,7 @@ ] if (is_linux) { - deps += [ "//components/services/font:manifest" ] + deps += [ "//components/services/font/public/cpp:manifest" ] } if (is_chromeos) {
diff --git a/content/public/app/DEPS b/content/public/app/DEPS index a5d2d31..1f41b14 100644 --- a/content/public/app/DEPS +++ b/content/public/app/DEPS
@@ -16,7 +16,7 @@ "content_packaged_services_manifest\.cc": [ "+chromeos/assistant/buildflags.h", "+chromeos/services/assistant/audio_decoder/manifest.h", - "+components/services/font/manifest.h", + "+components/services/font/public/cpp/manifest.h", "+components/services/heap_profiling/manifest.h", "+media/mojo/services/cdm_manifest.h", "+media/mojo/services/media_manifest.h",
diff --git a/content/public/app/content_packaged_services_manifest.cc b/content/public/app/content_packaged_services_manifest.cc index 68a5db3..82b2de9 100644 --- a/content/public/app/content_packaged_services_manifest.cc +++ b/content/public/app/content_packaged_services_manifest.cc
@@ -24,7 +24,7 @@ #include "services/viz/manifest.h" #if defined(OS_LINUX) -#include "components/services/font/manifest.h" +#include "components/services/font/public/cpp/manifest.h" // nogncheck #endif #if defined(OS_CHROMEOS)
diff --git a/content/public/app/content_renderer_manifest.cc b/content/public/app/content_renderer_manifest.cc index 798614df..c70ecbb 100644 --- a/content/public/app/content_renderer_manifest.cc +++ b/content/public/app/content_renderer_manifest.cc
@@ -28,6 +28,7 @@ "blink.mojom.CrashMemoryMetricsReporter", "blink.mojom.LeakDetector", "blink.mojom.OomIntervention", + "blink.mojom.SharedWorkerFactory", "blink.mojom.WebDatabase", "content.mojom.Child", "content.mojom.ChildControl", @@ -36,7 +37,6 @@ "content.mojom.FrameFactory", "content.mojom.RenderWidgetWindowTreeClientFactory", "content.mojom.ResourceUsageReporter", - "content.mojom.SharedWorkerFactory", "IPC.mojom.ChannelBootstrap", "visitedlink.mojom.VisitedLinkNotificationSink", "web_cache.mojom.WebCache",
diff --git a/content/public/browser/platform_notification_context.h b/content/public/browser/platform_notification_context.h index c90129d5..c8017eb 100644 --- a/content/public/browser/platform_notification_context.h +++ b/content/public/browser/platform_notification_context.h
@@ -25,18 +25,18 @@ BrowserThread::DeleteOnUIThread> { public: using ReadResultCallback = - base::Callback<void(bool /* success */, - const NotificationDatabaseData&)>; + base::OnceCallback<void(bool /* success */, + const NotificationDatabaseData&)>; using ReadAllResultCallback = - base::Callback<void(bool /* success */, - const std::vector<NotificationDatabaseData>&)>; + base::OnceCallback<void(bool /* success */, + const std::vector<NotificationDatabaseData>&)>; using WriteResultCallback = - base::Callback<void(bool /* success */, - const std::string& /* notification_id */)>; + base::OnceCallback<void(bool /* success */, + const std::string& /* notification_id */)>; - using DeleteResultCallback = base::Callback<void(bool /* success */)>; + using DeleteResultCallback = base::OnceCallback<void(bool /* success */)>; // Reasons for updating a notification, triggering a read. enum class Interaction { @@ -62,7 +62,7 @@ const std::string& notification_id, const GURL& origin, Interaction interaction, - const ReadResultCallback& callback) = 0; + ReadResultCallback callback) = 0; // Reads all data associated with |service_worker_registration_id| belonging // to |origin| from the database. |callback| will be invoked with the success @@ -70,7 +70,7 @@ virtual void ReadAllNotificationDataForServiceWorkerRegistration( const GURL& origin, int64_t service_worker_registration_id, - const ReadAllResultCallback& callback) = 0; + ReadAllResultCallback callback) = 0; // Writes the data associated with a notification to a database. When this // action completed, |callback| will be invoked with the success status and @@ -81,14 +81,14 @@ int64_t service_worker_registration_id, const GURL& origin, const NotificationDatabaseData& database_data, - const WriteResultCallback& callback) = 0; + WriteResultCallback callback) = 0; // Deletes all data associated with |notification_id| belonging to |origin| // from the database. |callback| will be invoked with the success status // when the operation has completed. virtual void DeleteNotificationData(const std::string& notification_id, const GURL& origin, - const DeleteResultCallback& callback) = 0; + DeleteResultCallback callback) = 0; protected: friend class base::DeleteHelper<PlatformNotificationContext>;
diff --git a/content/public/browser/platform_notification_service.h b/content/public/browser/platform_notification_service.h index 80ffd8d..c7209a7 100644 --- a/content/public/browser/platform_notification_service.h +++ b/content/public/browser/platform_notification_service.h
@@ -36,8 +36,8 @@ virtual ~PlatformNotificationService() {} using DisplayedNotificationsCallback = - base::Callback<void(std::unique_ptr<std::set<std::string>>, - bool /* supports synchronization */)>; + base::OnceCallback<void(std::set<std::string>, + bool /* supports synchronization */)>; // Displays the notification described in |notification_data| to the user. // This method must be called on the UI thread. @@ -73,7 +73,7 @@ // posts |callback| with the result. virtual void GetDisplayedNotifications( BrowserContext* browser_context, - const DisplayedNotificationsCallback& callback) = 0; + DisplayedNotificationsCallback callback) = 0; // Reads the value of the next persistent notification ID from the profile and // increments the value, as it is called once per notification write.
diff --git a/content/public/browser/storage_partition.h b/content/public/browser/storage_partition.h index 80083ad..7fcd854 100644 --- a/content/public/browser/storage_partition.h +++ b/content/public/browser/storage_partition.h
@@ -212,9 +212,14 @@ base::OnceClosure callback) = 0; // Clears code caches associated with this StoragePartition. - // TODO(crbug.com/866419): Currently we just clear entire caches. - // Change it to conditionally clear entries based on the filters. - virtual void ClearCodeCaches(base::OnceClosure callback) = 0; + // If |begin| and |end| are not null, only entries with + // timestamps inbetween are deleted. If |url_matcher| is not null, only + // entries with URLs for which the |url_matcher| returns true are deleted. + virtual void ClearCodeCaches( + base::Time begin, + base::Time end, + const base::RepeatingCallback<bool(const GURL&)>& url_matcher, + base::OnceClosure callback) = 0; // Write any unwritten data to disk. // Note: this method does not sync the data - it only ensures that any
diff --git a/content/public/test/test_storage_partition.cc b/content/public/test/test_storage_partition.cc index 691475e..1612607 100644 --- a/content/public/test/test_storage_partition.cc +++ b/content/public/test/test_storage_partition.cc
@@ -130,7 +130,11 @@ const base::Callback<bool(const GURL&)>& url_matcher, base::OnceClosure callback) {} -void TestStoragePartition::ClearCodeCaches(base::OnceClosure callback) {} +void TestStoragePartition::ClearCodeCaches( + const base::Time begin, + const base::Time end, + const base::RepeatingCallback<bool(const GURL&)>& url_matcher, + base::OnceClosure callback) {} void TestStoragePartition::Flush() {}
diff --git a/content/public/test/test_storage_partition.h b/content/public/test/test_storage_partition.h index f6f1460..80d7a24 100644 --- a/content/public/test/test_storage_partition.h +++ b/content/public/test/test_storage_partition.h
@@ -164,7 +164,11 @@ const base::Callback<bool(const GURL&)>& url_matcher, base::OnceClosure callback) override; - void ClearCodeCaches(base::OnceClosure callback) override; + void ClearCodeCaches( + const base::Time begin, + const base::Time end, + const base::RepeatingCallback<bool(const GURL&)>& url_matcher, + base::OnceClosure callback) override; void Flush() override;
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc index 9545d80..e51bcafa 100644 --- a/content/renderer/render_widget.cc +++ b/content/renderer/render_widget.cc
@@ -702,6 +702,12 @@ TRACE_EVENT0("renderer", "RenderWidget::OnSynchronizeVisualProperties"); VisualProperties params = original_params; + // Web tests can override the device scale factor in the renderer. + if (device_scale_factor_for_testing_) { + params.screen_info.device_scale_factor = *device_scale_factor_for_testing_; + params.compositor_viewport_pixel_size = gfx::ScaleToCeiledSize( + params.new_size, params.screen_info.device_scale_factor); + } // Inform the rendering thread of the color space indicating the presence of // HDR capabilities. The HDR bit happens to be globally true/false for all @@ -754,16 +760,6 @@ params.browser_controls_shrink_blink_size; top_controls_height_ = params.top_controls_height; bottom_controls_height_ = params.bottom_controls_height; - - // TODO(fsamuel): Modifies the |params| that are used for - // SynchronizeVisualProperties(), but does not used this modified - // device_scale_factor for the auto-resize values, which is probably a bug. - if (device_scale_factor_for_testing_) { - params.screen_info.device_scale_factor = - *device_scale_factor_for_testing_; - params.compositor_viewport_pixel_size = gfx::ScaleToCeiledSize( - params.new_size, params.screen_info.device_scale_factor); - } } if (!resizing_mode_selector_->ShouldAbortOnResize(this, params)) {
diff --git a/content/renderer/shared_worker/embedded_shared_worker_stub.cc b/content/renderer/shared_worker/embedded_shared_worker_stub.cc index 6a9c8ac..c0d220d9 100644 --- a/content/renderer/shared_worker/embedded_shared_worker_stub.cc +++ b/content/renderer/shared_worker/embedded_shared_worker_stub.cc
@@ -203,11 +203,6 @@ void EmbeddedSharedWorkerStub::WorkerScriptLoaded() { host_->OnScriptLoaded(); - running_ = true; - // Process any pending connections. - for (auto& item : pending_channels_) - ConnectToChannel(item.first, std::move(item.second)); - pending_channels_.clear(); } void EmbeddedSharedWorkerStub::WorkerScriptLoadFailed() { @@ -216,6 +211,15 @@ delete this; } +void EmbeddedSharedWorkerStub::WorkerScriptEvaluated(bool success) { + DCHECK(!running_); + running_ = true; + // Process any pending connections. + for (auto& item : pending_channels_) + ConnectToChannel(item.first, std::move(item.second)); + pending_channels_.clear(); +} + void EmbeddedSharedWorkerStub::CountFeature(blink::mojom::WebFeature feature) { host_->OnFeatureUsed(feature); }
diff --git a/content/renderer/shared_worker/embedded_shared_worker_stub.h b/content/renderer/shared_worker/embedded_shared_worker_stub.h index 4177feb..27d2e428 100644 --- a/content/renderer/shared_worker/embedded_shared_worker_stub.h +++ b/content/renderer/shared_worker/embedded_shared_worker_stub.h
@@ -86,6 +86,7 @@ void WorkerReadyForInspection() override; void WorkerScriptLoaded() override; void WorkerScriptLoadFailed() override; + void WorkerScriptEvaluated(bool success) override; void SelectAppCacheID(long long) override; std::unique_ptr<blink::WebApplicationCacheHost> CreateApplicationCacheHost( blink::WebApplicationCacheHostClient*) override;
diff --git a/content/renderer/shared_worker/shared_worker_factory_impl.cc b/content/renderer/shared_worker/shared_worker_factory_impl.cc index 972664d8..aa7e208 100644 --- a/content/renderer/shared_worker/shared_worker_factory_impl.cc +++ b/content/renderer/shared_worker/shared_worker_factory_impl.cc
@@ -13,8 +13,8 @@ // static void SharedWorkerFactoryImpl::Create( - mojom::SharedWorkerFactoryRequest request) { - mojo::MakeStrongBinding<mojom::SharedWorkerFactory>( + blink::mojom::SharedWorkerFactoryRequest request) { + mojo::MakeStrongBinding<blink::mojom::SharedWorkerFactory>( base::WrapUnique(new SharedWorkerFactoryImpl()), std::move(request)); }
diff --git a/content/renderer/shared_worker/shared_worker_factory_impl.h b/content/renderer/shared_worker/shared_worker_factory_impl.h index fc3a2e60..8428de1 100644 --- a/content/renderer/shared_worker/shared_worker_factory_impl.h +++ b/content/renderer/shared_worker/shared_worker_factory_impl.h
@@ -6,9 +6,9 @@ #define CONTENT_RENDERER_SHARED_WORKER_SHARED_WORKER_FACTORY_IMPL_H_ #include "base/macros.h" -#include "content/common/shared_worker/shared_worker_factory.mojom.h" #include "services/network/public/mojom/url_loader_factory.mojom.h" #include "third_party/blink/public/mojom/service_worker/service_worker_provider.mojom.h" +#include "third_party/blink/public/mojom/worker/shared_worker_factory.mojom.h" namespace blink { class URLLoaderFactoryBundleInfo; @@ -16,9 +16,9 @@ namespace content { -class SharedWorkerFactoryImpl : public mojom::SharedWorkerFactory { +class SharedWorkerFactoryImpl : public blink::mojom::SharedWorkerFactory { public: - static void Create(mojom::SharedWorkerFactoryRequest request); + static void Create(blink::mojom::SharedWorkerFactoryRequest request); private: SharedWorkerFactoryImpl();
diff --git a/content/test/gpu/gpu_tests/pixel_expectations.py b/content/test/gpu/gpu_tests/pixel_expectations.py index 37a91c93..7660dfb 100644 --- a/content/test/gpu/gpu_tests/pixel_expectations.py +++ b/content/test/gpu/gpu_tests/pixel_expectations.py
@@ -112,21 +112,9 @@ self.Fail('Pixel_BackgroundImage', ['android', ('qualcomm', 'Adreno (TM) 430')], bug=883500) - # Fails on android-marshmallow-arm64-rel (Nexus 5X) - self.Fail('Pixel_Video_MP4', - ['android', ('qualcomm', 'Adreno (TM) 418')], bug=911898) - self.Fail('Pixel_Video_MP4_FourColors_Aspect_4x3', - ['android', ('qualcomm', 'Adreno (TM) 418')], bug=911898) - self.Fail('Pixel_Video_MP4_FourColors_Rot_90', - ['android', ('qualcomm', 'Adreno (TM) 418')], bug=911898) - self.Fail('Pixel_Video_MP4_FourColors_Rot_180', - ['android', ('qualcomm', 'Adreno (TM) 418')], bug=911898) - self.Fail('Pixel_Video_MP4_FourColors_Rot_270', - ['android', ('qualcomm', 'Adreno (TM) 418')], bug=911898) - self.Fail('Pixel_Video_VP9', - ['android', ('qualcomm', 'Adreno (TM) 418')], bug=911898) - # Fails on Mac Pro FYI Release (AMD) + self.Fail('Pixel_Video_MP4', + ['mac', ('amd', 0x679e)], bug=925744) self.Fail('Pixel_Video_MP4_FourColors_Aspect_4x3', ['mac', ('amd', 0x679e)], bug=911413) self.Fail('Pixel_Video_MP4_FourColors_Rot_90', @@ -135,3 +123,11 @@ ['mac', ('amd', 0x679e)], bug=911413) self.Fail('Pixel_Video_MP4_FourColors_Rot_270', ['mac', ('amd', 0x679e)], bug=911413) + + # Fail on Nexus 5, 5X, 6, 6P, 9 and Shield TV + self.Fail('Pixel_Video_MP4', ['android'], bug=925744) + self.Fail('Pixel_Video_MP4_FourColors_Aspect_4x3', ['android'], bug=925744) + self.Fail('Pixel_Video_MP4_FourColors_Rot_180', ['android'], bug=925744) + self.Fail('Pixel_Video_MP4_FourColors_Rot_270', ['android'], bug=925744) + self.Fail('Pixel_Video_MP4_FourColors_Rot_90', ['android'], bug=925744) + self.Fail('Pixel_Video_VP9', ['android'], bug=925744)
diff --git a/content/test/mock_platform_notification_service.cc b/content/test/mock_platform_notification_service.cc index 0ee1d0d..7d16ee6 100644 --- a/content/test/mock_platform_notification_service.cc +++ b/content/test/mock_platform_notification_service.cc
@@ -4,6 +4,9 @@ #include "content/test/mock_platform_notification_service.h" +#include <set> +#include <utility> + #include "base/bind.h" #include "base/bind_helpers.h" #include "base/guid.h" @@ -83,18 +86,18 @@ void MockPlatformNotificationService::GetDisplayedNotifications( BrowserContext* browser_context, - const DisplayedNotificationsCallback& callback) { + DisplayedNotificationsCallback callback) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - auto displayed_notifications = std::make_unique<std::set<std::string>>(); + std::set<std::string> displayed_notifications; for (const auto& kv : persistent_notifications_) - displayed_notifications->insert(kv.first); + displayed_notifications.insert(kv.first); for (const auto& notification_id : non_persistent_notifications_) - displayed_notifications->insert(notification_id); + displayed_notifications.insert(notification_id); base::PostTaskWithTraits( FROM_HERE, {BrowserThread::UI}, - base::BindOnce(callback, std::move(displayed_notifications), + base::BindOnce(std::move(callback), std::move(displayed_notifications), true /* supports_synchronization */)); }
diff --git a/content/test/mock_platform_notification_service.h b/content/test/mock_platform_notification_service.h index 1d38db3e..89aad27b 100644 --- a/content/test/mock_platform_notification_service.h +++ b/content/test/mock_platform_notification_service.h
@@ -63,7 +63,7 @@ const std::string& notification_id) override; void GetDisplayedNotifications( BrowserContext* browser_context, - const DisplayedNotificationsCallback& callback) override; + DisplayedNotificationsCallback callback) override; int64_t ReadNextPersistentNotificationId( BrowserContext* browser_context) override; void RecordNotificationUkmEvent(
diff --git a/content/test/test_render_frame_host.cc b/content/test/test_render_frame_host.cc index 5c0a5dc..100b96d7 100644 --- a/content/test/test_render_frame_host.cc +++ b/content/test/test_render_frame_host.cc
@@ -510,7 +510,7 @@ void TestRenderFrameHost::SendCommitNavigation( mojom::NavigationClient* navigation_client, - int64_t navigation_id, + NavigationRequest* navigation_request, const network::ResourceResponseHead& head, const content::CommonNavigationParams& common_params, const content::CommitNavigationParams& commit_params, @@ -521,30 +521,40 @@ subresource_overrides, blink::mojom::ControllerServiceWorkerInfoPtr controller, network::mojom::URLLoaderFactoryPtr prefetch_loader_factory, - const base::UnguessableToken& devtools_navigation_token, - mojom::FrameNavigationControl::CommitNavigationCallback callback) { - if (navigation_client) - navigation_client_commit_callback_[navigation_id] = std::move(callback); - else - commit_callback_[navigation_id] = std::move(callback); + const base::UnguessableToken& devtools_navigation_token) { + if (!navigation_request) + return; + int64_t navigation_id = + navigation_request->navigation_handle()->GetNavigationId(); + if (navigation_client) { + navigation_client_commit_callback_[navigation_id] = + BuildNavigationClientCommitNavigationCallback(navigation_request); + } else { + commit_callback_[navigation_id] = + BuildCommitNavigationCallback(navigation_request); + } } void TestRenderFrameHost::SendCommitFailedNavigation( mojom::NavigationClient* navigation_client, - int64_t navigation_id, + NavigationRequest* navigation_request, const content::CommonNavigationParams& common_params, const content::CommitNavigationParams& commit_params, bool has_stale_copy_in_cache, int32_t error_code, const base::Optional<std::string>& error_page_content, std::unique_ptr<blink::URLLoaderFactoryBundleInfo> - subresource_loader_factories, - mojom::FrameNavigationControl::CommitFailedNavigationCallback callback) { + subresource_loader_factories) { + if (!navigation_request) + return; + int64_t navigation_id = + navigation_request->navigation_handle()->GetNavigationId(); if (navigation_client) { navigation_client_commit_failed_callback_[navigation_id] = - std::move(callback); + BuildNavigationClientCommitFailedNavigationCallback(navigation_request); } else { - commit_failed_callback_[navigation_id] = std::move(callback); + commit_failed_callback_[navigation_id] = + BuildCommitFailedNavigationCallback(navigation_request); } }
diff --git a/content/test/test_render_frame_host.h b/content/test/test_render_frame_host.h index a8e202bc..4fa49126 100644 --- a/content/test/test_render_frame_host.h +++ b/content/test/test_render_frame_host.h
@@ -205,7 +205,7 @@ protected: void SendCommitNavigation( mojom::NavigationClient* navigation_client, - int64_t navigation_id, + NavigationRequest* navigation_request, const network::ResourceResponseHead& head, const content::CommonNavigationParams& common_params, const content::CommitNavigationParams& commit_params, @@ -217,21 +217,17 @@ blink::mojom::ControllerServiceWorkerInfoPtr controller_service_worker_info, network::mojom::URLLoaderFactoryPtr prefetch_loader_factory, - const base::UnguessableToken& devtools_navigation_token, - mojom::FrameNavigationControl::CommitNavigationCallback callback) - override; + const base::UnguessableToken& devtools_navigation_token) override; void SendCommitFailedNavigation( mojom::NavigationClient* navigation_client, - int64_t navigation_id, + NavigationRequest* navigation_request, const content::CommonNavigationParams& common_params, const content::CommitNavigationParams& commit_params, bool has_stale_copy_in_cache, int32_t error_code, const base::Optional<std::string>& error_page_content, std::unique_ptr<blink::URLLoaderFactoryBundleInfo> - subresource_loader_factories, - mojom::FrameNavigationControl::CommitFailedNavigationCallback callback) - override; + subresource_loader_factories) override; private: void SendNavigateWithParameters(int nav_entry_id,
diff --git a/crypto/aead_unittest.cc b/crypto/aead_unittest.cc index 559e1252..1af24e7 100644 --- a/crypto/aead_unittest.cc +++ b/crypto/aead_unittest.cc
@@ -17,7 +17,7 @@ class AeadTest : public testing::TestWithParam<crypto::Aead::AeadAlgorithm> {}; -INSTANTIATE_TEST_CASE_P(, AeadTest, testing::ValuesIn(kAllAlgorithms)); +INSTANTIATE_TEST_SUITE_P(, AeadTest, testing::ValuesIn(kAllAlgorithms)); TEST_P(AeadTest, SealOpen) { crypto::Aead::AeadAlgorithm alg = GetParam();
diff --git a/crypto/symmetric_key_unittest.cc b/crypto/symmetric_key_unittest.cc index 6bef6ca..05ae25e 100644 --- a/crypto/symmetric_key_unittest.cc +++ b/crypto/symmetric_key_unittest.cc
@@ -207,10 +207,10 @@ "7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d54329556" "13f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887"}}; -INSTANTIATE_TEST_CASE_P(, - SymmetricKeyDeriveKeyFromPasswordUsingPbkdf2Test, - testing::ValuesIn(kTestVectorsPbkdf2)); +INSTANTIATE_TEST_SUITE_P(, + SymmetricKeyDeriveKeyFromPasswordUsingPbkdf2Test, + testing::ValuesIn(kTestVectorsPbkdf2)); -INSTANTIATE_TEST_CASE_P(, - SymmetricKeyDeriveKeyFromPasswordUsingScryptTest, - testing::ValuesIn(kTestVectorsScrypt)); +INSTANTIATE_TEST_SUITE_P(, + SymmetricKeyDeriveKeyFromPasswordUsingScryptTest, + testing::ValuesIn(kTestVectorsScrypt));
diff --git a/docs/privacy/OWNERS b/docs/privacy/OWNERS index 1980904..30f1309 100644 --- a/docs/privacy/OWNERS +++ b/docs/privacy/OWNERS
@@ -1,5 +1,6 @@ dullweber@chromium.org glevin@chromium.org +mgalonsky@chromium.org mkwst@chromium.org msramek@chromium.org rhalavati@chromium.org
diff --git a/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc b/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc index 1f3b255..538bfaf 100644 --- a/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc +++ b/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc
@@ -132,6 +132,9 @@ const std::vector<std::string>& removed_headers, const net::HttpRequestHeaders& modified_headers, const base::Optional<GURL>& new_url) { + if (new_url) + request_.url = new_url.value(); + for (const std::string& header : removed_headers) request_.headers.RemoveHeader(header); request_.headers.MergeFrom(modified_headers);
diff --git a/extensions/browser/guest_view/web_view/web_view_guest.cc b/extensions/browser/guest_view/web_view/web_view_guest.cc index bd7f40f..0394d5a 100644 --- a/extensions/browser/guest_view/web_view/web_view_guest.cc +++ b/extensions/browser/guest_view/web_view/web_view_guest.cc
@@ -429,7 +429,9 @@ base::OnceClosure code_cache_removal_done_callback = base::BindOnce( &WebViewGuest::ClearDataInternal, weak_ptr_factory_.GetWeakPtr(), remove_since, removal_mask, callback); - partition->ClearCodeCaches(std::move(code_cache_removal_done_callback)); + partition->ClearCodeCaches(remove_since, base::Time::Now(), + base::RepeatingCallback<bool(const GURL&)>(), + std::move(code_cache_removal_done_callback)); } void WebViewGuest::ClearDataInternal(base::Time remove_since,
diff --git a/infra/config/global/commit-queue.cfg b/infra/config/global/commit-queue.cfg new file mode 100644 index 0000000..89befb7 --- /dev/null +++ b/infra/config/global/commit-queue.cfg
@@ -0,0 +1,288 @@ +# See http://luci-config.appspot.com/schemas/projects:commit-queue.cfg for the +# documentation of this file format. + +cq_status_host: "chromium-cq-status.appspot.com" +submit_options { + max_burst: 2 + burst_delay { + seconds: 60 + } +} +config_groups { + gerrit { + url: "https://chromium-review.googlesource.com" + projects { + name: "chromium/src" + ref_regexp: "refs/heads/.+" + } + } + verifiers { + gerrit_cq_ability { + committer_list: "project-chromium-committers" + dry_run_access_list: "project-chromium-tryjob-access" + } + tree_status { + url: "https://chromium-status.appspot.com/" + } + tryjob { + builders { + name: "chromium/try/android-binary-size" + } + builders { + name: "chromium/try/android-kitkat-arm-rel" + } + builders { + name: "chromium/try/android-marshmallow-arm64-rel" + } + builders { + name: "chromium/try/android_arm64_dbg_recipe" + } + builders { + name: "chromium/try/android_clang_dbg_recipe" + } + builders { + name: "chromium/try/android_compile_dbg" + } + builders { + name: "chromium/try/android_cronet" + } + builders { + name: "chromium/try/cast_shell_android" + } + builders { + name: "chromium/try/cast_shell_linux" + } + builders { + name: "chromium/try/chromeos-amd64-generic-rel" + } + builders { + name: "chromium/try/chromeos-daisy-rel" + } + builders { + name: "chromium/try/chromium_presubmit" + disable_reuse: true + } + builders { + name: "chromium/try/fuchsia_arm64" + } + builders { + name: "chromium/try/fuchsia_x64" + } + builders { + name: "chromium/try/ios-simulator" + } + builders { + name: "chromium/try/linux-chromeos-compile-dbg" + } + builders { + name: "chromium/try/linux-chromeos-rel" + } + builders { + name: "chromium/try/linux-jumbo-rel" + } + builders { + name: "chromium/try/linux-libfuzzer-asan-rel" + } + builders { + name: "chromium/try/linux-ozone-rel" + } + builders { + name: "chromium/try/linux-rel" + } + builders { + name: "chromium/try/linux_chromium_asan_rel_ng" + } + builders { + name: "chromium/try/linux_chromium_compile_dbg_ng" + } + builders { + name: "chromium/try/linux_chromium_headless_rel" + } + builders { + name: "chromium/try/linux_chromium_tsan_rel_ng" + } + builders { + name: "chromium/try/mac-rel" + } + builders { + name: "chromium/try/mac_chromium_compile_dbg_ng" + } + builders { + name: "chromium/try/win-libfuzzer-asan-rel" + } + builders { + name: "chromium/try/win10_chromium_x64_rel_ng" + } + builders { + name: "chromium/try/win7-rel" + } + builders { + name: "chromium/try/win_chromium_compile_dbg_ng" + } + builders { + name: "chromium/try/android_optional_gpu_tests_rel" + location_regexp: ".+/[+]/cc/.+" + location_regexp: ".+/[+]/chrome/browser/vr/.+" + location_regexp: ".+/[+]/components/viz/.+" + location_regexp: ".+/[+]/content/test/gpu/.+" + location_regexp: ".+/[+]/gpu/.+" + location_regexp: ".+/[+]/media/audio/.+" + location_regexp: ".+/[+]/media/filters/.+" + location_regexp: ".+/[+]/media/gpu/.+" + location_regexp: ".+/[+]/services/viz/.+" + location_regexp: ".+/[+]/testing/trigger_scripts/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/modules/webgl/.+" + location_regexp: ".+/[+]/ui/gl/.+" + } + builders { + name: "chromium/try/closure_compilation" + location_regexp: ".+/[+]/third_party/closure_compiler/.+" + } + builders { + name: "chromium/try/ios-simulator-cronet" + location_regexp: ".+/[+]/components/cronet/.+" + location_regexp: ".+/[+]/components/grpc_support/.+" + location_regexp: ".+/[+]/ios/.+" + location_regexp_exclude: ".+/[+]/components/cronet/android/.+" + } + builders { + name: "chromium/try/ios-simulator-full-configs" + location_regexp: ".+/[+]/ios/.+" + } + builders { + name: "chromium/try/linux-blink-rel" + location_regexp: ".+/[+]/cc/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/core/paint/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/core/svg/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/platform/graphics/.+" + location_regexp: ".+/[+]/third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint" + location_regexp: ".+/[+]/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/.+" + } + builders { + name: "chromium/try/linux_chromium_dbg_ng" + location_regexp: ".+/[+]/build/.*check_gn_headers.*" + } + builders { + name: "chromium/try/linux_layout_tests_composite_after_paint" + location_regexp: ".+/[+]/third_party/blink/renderer/core/paint/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/core/svg/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/platform/graphics/.+" + location_regexp: ".+/[+]/third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint" + location_regexp: ".+/[+]/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/.+" + } + builders { + name: "chromium/try/linux_layout_tests_layout_ng" + location_regexp: ".+/[+]/third_party/blink/renderer/core/editing/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/core/layout/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/core/paint/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/core/svg/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/platform/fonts/shaping/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/platform/graphics/.+" + location_regexp: ".+/[+]/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG" + location_regexp: ".+/[+]/third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/.+" + } + builders { + name: "chromium/try/linux_mojo" + location_regexp: ".+/[+]/services/network/.+" + location_regexp: ".+/[+]/testing/buildbot/filters/mojo\\.fyi\\.network_.*" + location_regexp: ".+/[+]/third_party/blink/web_tests/FlagExpectations/enable-features=NetworkService" + } + builders { + name: "chromium/try/linux_optional_gpu_tests_rel" + location_regexp: ".+/[+]/chrome/browser/vr/.+" + location_regexp: ".+/[+]/content/test/gpu/.+" + location_regexp: ".+/[+]/gpu/.+" + location_regexp: ".+/[+]/media/audio/.+" + location_regexp: ".+/[+]/media/filters/.+" + location_regexp: ".+/[+]/media/gpu/.+" + location_regexp: ".+/[+]/testing/trigger_scripts/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/modules/webgl/.+" + location_regexp: ".+/[+]/ui/gl/.+" + } + builders { + name: "chromium/try/linux_vr" + location_regexp: ".+/[+]/chrome/browser/vr/.+" + } + builders { + name: "chromium/try/mac_optional_gpu_tests_rel" + location_regexp: ".+/[+]/chrome/browser/vr/.+" + location_regexp: ".+/[+]/content/test/gpu/.+" + location_regexp: ".+/[+]/gpu/.+" + location_regexp: ".+/[+]/media/audio/.+" + location_regexp: ".+/[+]/media/filters/.+" + location_regexp: ".+/[+]/media/gpu/.+" + location_regexp: ".+/[+]/services/shape_detection/.+" + location_regexp: ".+/[+]/testing/trigger_scripts/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/modules/webgl/.+" + location_regexp: ".+/[+]/ui/gl/.+" + } + builders { + name: "chromium/try/win_optional_gpu_tests_rel" + location_regexp: ".+/[+]/chrome/browser/vr/.+" + location_regexp: ".+/[+]/content/test/gpu/.+" + location_regexp: ".+/[+]/device/vr/.+" + location_regexp: ".+/[+]/gpu/.+" + location_regexp: ".+/[+]/media/audio/.+" + location_regexp: ".+/[+]/media/filters/.+" + location_regexp: ".+/[+]/media/gpu/.+" + location_regexp: ".+/[+]/testing/trigger_scripts/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/modules/vr/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/modules/webgl/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/modules/xr/.+" + location_regexp: ".+/[+]/third_party/blink/renderer/platform/graphics/gpu/.+" + location_regexp: ".+/[+]/ui/gl/.+" + } + builders { + name: "chromium/try/ios-device" + experiment_percentage: 10 + } + builders { + name: "chromium/try/ios-device-xcode-clang" + experiment_percentage: 10 + } + builders { + name: "chromium/try/ios-simulator-xcode-clang" + experiment_percentage: 10 + } + builders { + name: "chromium/try/linux-dcheck-off-rel" + experiment_percentage: 10 + } + builders { + name: "chromium/try/linux-goma-rbe-staging-rel" + experiment_percentage: 40 + } + builders { + name: "chromium/try/win7_chromium_rel_loc_exp" + experiment_percentage: 20 + } + builders { + name: "*/master.tryserver.chromium.android/android_compile_x64_dbg" + location_regexp: ".+/[+]/sandbox/linux/seccomp-bpf/.+" + location_regexp: ".+/[+]/sandbox/linux/seccomp-bpf-helpers/.+" + location_regexp: ".+/[+]/sandbox/linux/system_headers/.+" + location_regexp: ".+/[+]/sandbox/linux/tests/.+" + } + builders { + name: "*/master.tryserver.chromium.android/android_compile_x86_dbg" + location_regexp: ".+/[+]/sandbox/linux/seccomp-bpf/.+" + location_regexp: ".+/[+]/sandbox/linux/seccomp-bpf-helpers/.+" + location_regexp: ".+/[+]/sandbox/linux/system_headers/.+" + location_regexp: ".+/[+]/sandbox/linux/tests/.+" + } + builders { + name: "*/master.tryserver.chromium.android/android_cronet_tester" + location_regexp: ".+/[+]/components/cronet/.+" + location_regexp: ".+/[+]/components/grpc_support/.+" + location_regexp_exclude: ".+/[+]/components/cronet/ios/.+" + } + retry_config { + single_quota: 1 + global_quota: 2 + failure_weight: 1 + transient_failure_weight: 1 + timeout_weight: 2 + } + } + } +}
diff --git a/infra/config/global/cr-buildbucket.cfg b/infra/config/global/cr-buildbucket.cfg index 248ec02..ad47f18 100644 --- a/infra/config/global/cr-buildbucket.cfg +++ b/infra/config/global/cr-buildbucket.cfg
@@ -3160,6 +3160,16 @@ } builders { mixins: "android-try" + name: "android-deterministic-rel" + dimensions: "os:Ubuntu-14.04" + } + builders { + mixins: "android-try" + name: "android-deterministic-dbg" + dimensions: "os:Ubuntu-14.04" + } + builders { + mixins: "android-try" name: "try-nougat-phone-tester" }
diff --git a/infra/config/global/luci-milo.cfg b/infra/config/global/luci-milo.cfg index 66b6c64..ef6205e1 100644 --- a/infra/config/global/luci-milo.cfg +++ b/infra/config/global/luci-milo.cfg
@@ -3893,6 +3893,12 @@ name: "buildbucket/luci.chromium.try/gpu-manual-try-android-p-pixel-xl-64-deqp" } builders { + name: "buildbucket/luci.chromium.try/android-deterministic-rel" + } + builders { + name: "buildbucket/luci.chromium.try/android-deterministic-dbg" + } + builders { name: "buildbucket/luci.chromium.try/try-nougat-phone-tester" } builder_view_only: true
diff --git a/ios/chrome/app/BUILD.gn b/ios/chrome/app/BUILD.gn index 542664d..fae5e35 100644 --- a/ios/chrome/app/BUILD.gn +++ b/ios/chrome/app/BUILD.gn
@@ -213,6 +213,7 @@ "//ios/chrome/browser/ui/main:tab_switcher", "//ios/chrome/browser/ui/promos", "//ios/chrome/browser/ui/settings", + "//ios/chrome/browser/ui/settings:settings_root", "//ios/chrome/browser/ui/signin_interaction", "//ios/chrome/browser/ui/tab_grid", "//ios/chrome/browser/ui/tab_grid:tab_grid_ui",
diff --git a/ios/chrome/app/application_delegate/BUILD.gn b/ios/chrome/app/application_delegate/BUILD.gn index 05b6f35..d4ab567 100644 --- a/ios/chrome/app/application_delegate/BUILD.gn +++ b/ios/chrome/app/application_delegate/BUILD.gn
@@ -56,6 +56,7 @@ "//ios/chrome/browser/ui/main/test", "//ios/chrome/browser/ui/safe_mode", "//ios/chrome/browser/ui/settings", + "//ios/chrome/browser/ui/settings:settings_root", "//ios/chrome/browser/web:tab_id_tab_helper", "//ios/chrome/browser/web_state_list", "//ios/chrome/browser/web_state_list:test_support",
diff --git a/ios/chrome/app/strings/ios_strings.grd b/ios/chrome/app/strings/ios_strings.grd index 62ea035..77b808b2 100644 --- a/ios/chrome/app/strings/ios_strings.grd +++ b/ios/chrome/app/strings/ios_strings.grd
@@ -1614,7 +1614,7 @@ Sync </message> <message name="IDS_IOS_SYNC_SETUP_IN_PROGRESS" desc="The message to display when the sync setup is in progress and sync isn't available yet. [Length: 60em] [iOS only]"> - Setup in progress... + Setup in progress… </message> <message name="IDS_IOS_SYNC_SIGN_IN_AGAIN" desc="Title displayed when the signed in user needs sign in again. [Length: 20em] [iOS only]"> Sign in again
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_te.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_te.xtb index 5b26dcc..ee35cc4 100644 --- a/ios/chrome/app/strings/resources/ios_chromium_strings_te.xtb +++ b/ios/chrome/app/strings/resources/ios_chromium_strings_te.xtb
@@ -11,7 +11,7 @@ <translation id="1843424232666537147">ఇంటర్నెట్ డేటాను నిర్వహించడంలో, వెబ్ పేజీలను త్వరగా లోడ్ చేయగలగడంలో మీకు సహాయపడే ఫీచర్లను Chromium కలిగి ఉంది. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation> <translation id="2075400798887076382">మీరు మీ కంప్యూటర్లో తెరిచిన ట్యాబ్లను ఇక్కడి నుండే యాక్సెస్ చేయండి. మీ కంప్యూటర్లో Chromiumను తెరిచి, మెనూకు వెళ్లి, “Chromiumకు సైన్ ఇన్ చేయి…” ఎంచుకోండి</translation> -<translation id="2168108852149185974">కొన్ని యాడ్-ఆన్లు Chromium క్రాష్ అయ్యేలా చేశాయి. దయచేసి వీటిని అన్ఇన్స్టాల్ చేయండి:</translation> +<translation id="2168108852149185974">కొన్ని యాడ్-ఆన్లు Chromium క్రాష్ అయ్యేలా చేసాయి. దయచేసి వీటిని అన్ఇన్స్టాల్ చేయండి:</translation> <translation id="2178608107313874732">Chromium ప్రస్తుతం మీ కెమెరాను ఉపయోగించలేదు</translation> <translation id="2195025571279539885">మీరు తరువాత సారి సందర్శించినప్పుడు Chromium ఈ సైట్లోని <ph name="LANGUAGE_NAME" /> పేజీలను అనువదించే సదుపాయాన్ని అందించాలని కోరుకుంటున్నారా?</translation> <translation id="2647554856022461007">Chromium మీ బ్రౌజింగ్ అనుభవాన్ని మెరుగుపరచడానికి వెబ్ సేవలను ఉపయోగించవచ్చు. మీరు ఈ సేవలను ఐచ్ఛికంగా నిలిపివేయవచ్చు. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation> @@ -51,7 +51,7 @@ <translation id="8073677936375100957">ఈ పరికరం నుండి మీ Chromium డేటాని తీసివేయాలా?</translation> <translation id="8175055321229419309">చిట్కా: <ph name="BEGIN_LINK" />Chromiumను మీ డాక్కు తరలించండి<ph name="END_LINK" /></translation> <translation id="8252885722420466166">మీ స్థానం ఆధారంగా Chromiumలో మెరుగైన Google అనుభవాన్ని పొందండి.</translation> -<translation id="8508544542427105412"><ph name="BEGIN_LINK" />సెట్టింగ్ల<ph name="END_LINK" />ను ఎప్పుడైనా అనుకూలీకరించవచ్చు. Chromiumని మరియు అనువాదం, శోధన మరియు ప్రకటనలు వంటి ఇతర Google సేవలను వ్యక్తిగతీకరించడానికి, మీరు సందర్శించే సైట్లలోని కంటెంట్ను, అలాగే బ్రౌజర్ పరస్పర చర్యలు మరియు కార్యకలాపాన్ని Google ఉపయోగించవచ్చు.</translation> +<translation id="8508544542427105412"><ph name="BEGIN_LINK" />సెట్టింగ్ల<ph name="END_LINK" />ను ఎప్పుడైనా అనుకూలీకరించవచ్చు. Chromium, అనువాదం, శోధన మరియు ప్రకటనలు వంటి ఇతర Google సేవలను వ్యక్తిగతీకరించడానికి, మీరు సందర్శించే సైట్లలోని కంటెంట్ను, అలాగే బ్రౌజర్ పరస్పర చర్యలు మరియు కార్యకలాపాన్ని Google ఉపయోగించవచ్చు.</translation> <translation id="8586442755830160949">కాపీరైట్ <ph name="YEAR" /> Chromium రచయితలు. అన్ని హక్కులు రిజర్వ్ చేయబడ్డాయి.</translation> <translation id="8809780021347235332">చిత్రాలను సేవ్ చేసేందుకు, Chromium మీ ఫోటోలను ఉపయోగించేలా అనుమతించడానికి సెట్టింగ్లపై నొక్కండి</translation> <translation id="9022552996538154597">Chromiumకి సైన్ ఇన్ చేయండి</translation>
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_te.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_te.xtb index 6c38d35b..0998aa0 100644 --- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_te.xtb +++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_te.xtb
@@ -29,10 +29,10 @@ <translation id="415767770115540173">మీ స్థానం ఆధారంగా Chromeలో మెరుగైన Google అనుభవాన్ని పొందండి.</translation> <translation id="424864128008805179">Chrome నుండి సైన్ అవుట్ చేయాలా?</translation> <translation id="447252321002412580">Chrome ఫీచర్లు మరియు పనితీరును మెరుగుపరచడంలో సహాయపడండి</translation> -<translation id="4523886039239821078">కొన్ని యాడ్-ఆన్లు Chrome క్రాష్ అయ్యేలా చేశాయి. దయచేసి వీటిని అన్ఇన్స్టాల్ చేయండి:</translation> +<translation id="4523886039239821078">కొన్ని యాడ్-ఆన్లు Chrome క్రాష్ అయ్యేలా చేసాయి. దయచేసి వీటిని అన్ఇన్స్టాల్ చేయండి:</translation> <translation id="4615174829807303908">మీరు <ph name="SIGNOUT_MANAGED_DOMAIN" /> నిర్వహణలో ఉన్న ఖాతా నుండి సైన్ అవుట్ చేస్తున్నారు. దీని వలన మీ Chrome డేటా ఈ పరికరం నుండి తొలగించబడుతుంది, కానీ మీ డేటా మీ Google ఖాతాలో అలాగే ఉంటుంది.</translation> <translation id="5389212809648216794">మీ కెమెరాను మరొక అప్లికేషన్ ఉపయోగిస్తున్నందున Google Chrome దాన్ని ఉపయోగించలేదు</translation> -<translation id="5489543008378040943"><ph name="BEGIN_LINK" />సెట్టింగ్లను<ph name="END_LINK" /> ఎప్పుడైనా అనుకూలీకరించవచ్చు. Google మీరు సందర్శించే సైట్ల్లోని కంటెంట్, బ్రౌజర్ పరస్పర చర్యలు మరియు కార్యకలాపం ఉపయోగించడం ద్వారా Chromeని మరియు అనువాదం, శోధన మరియు ప్రకటనలు వంటి Google సేవలను వ్యక్తిగతీకరించవచ్చు.</translation> +<translation id="5489543008378040943"><ph name="BEGIN_LINK" />సెట్టింగ్లను<ph name="END_LINK" /> ఎప్పుడైనా అనుకూలీకరించవచ్చు. Google మీరు సందర్శించే సైట్లలోని కంటెంట్, బ్రౌజర్ పరస్పర చర్యలు మరియు కార్యకలాపం ఉపయోగించడం ద్వారా Chromeతో పాటు అనువాదం, శోధన మరియు ప్రకటనలు వంటి Google సేవలను వ్యక్తిగతీకరించవచ్చు.</translation> <translation id="5639704535586432836">సెట్టింగ్లు > గోప్యత > కెమెరా > Google Chromeని తెరిచి, కెమెరాను ఆన్ చేయండి.</translation> <translation id="5642200033778930880">Google Chrome విభజన వీక్షణ మోడ్లో మీ కెమెరాను ఉపయోగించలేదు</translation> <translation id="5854621639439811139">Chrome చిట్కా. వెనకకు, ముందుకు మరియు శోధన వంటి కొన్ని బటన్లు ఇప్పుడు మీ స్క్రీన్ దిగువున ఉన్నాయి.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb index 8059c7c..22f8f0a3 100644 --- a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
@@ -14,7 +14,7 @@ <translation id="1165039591588034296">Error</translation> <translation id="1172898394251786223">Campo siguiente</translation> <translation id="1176932207622159128">Error al guardar imagen</translation> -<translation id="1181037720776840403">Eliminar</translation> +<translation id="1181037720776840403">Quitar</translation> <translation id="1201530049782216880">Nueva pestaña de incógnito</translation> <translation id="1209206284964581585">Ocultar por el momento</translation> <translation id="1219674500290482172">No se puede establecer conexión con Internet.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es.xtb b/ios/chrome/app/strings/resources/ios_strings_es.xtb index 2b6dd85b..e123c268 100644 --- a/ios/chrome/app/strings/resources/ios_strings_es.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_es.xtb
@@ -14,7 +14,7 @@ <translation id="1165039591588034296">Error</translation> <translation id="1172898394251786223">Siguiente campo</translation> <translation id="1176932207622159128">Error al guardar imagen</translation> -<translation id="1181037720776840403">Eliminar</translation> +<translation id="1181037720776840403">Quitar</translation> <translation id="1201530049782216880">Nueva pestaña de incógnito</translation> <translation id="1209206284964581585">Ocultar por ahora</translation> <translation id="1219674500290482172">No se ha podido establecer conexión a Internet.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_strings_gu.xtb index f02b34f..35c2599f 100644 --- a/ios/chrome/app/strings/resources/ios_strings_gu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
@@ -14,7 +14,7 @@ <translation id="1165039591588034296">ભૂલ</translation> <translation id="1172898394251786223">આગલું ફીલ્ડ</translation> <translation id="1176932207622159128">ફોટા સાચવી શકતું નથી</translation> -<translation id="1181037720776840403">દૂર કરો</translation> +<translation id="1181037720776840403">કાઢી નાખો</translation> <translation id="1201530049782216880">નવું છુપું ટૅબ</translation> <translation id="1209206284964581585">હમણાં માટે છુપાવો</translation> <translation id="1219674500290482172">ઇન્ટરનેટથી કનેક્ટ કરવામાં અક્ષમ.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_strings_hi.xtb index 7d1e6b03e..912521f3 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
@@ -14,7 +14,7 @@ <translation id="1165039591588034296">गड़बड़ी</translation> <translation id="1172898394251786223">अगला फ़ील्ड</translation> <translation id="1176932207622159128">चित्र नहीं सहेज सकता</translation> -<translation id="1181037720776840403">निकालें</translation> +<translation id="1181037720776840403">हटाएं</translation> <translation id="1201530049782216880">नया गुप्त टैब</translation> <translation id="1209206284964581585">अभी छिपाएं</translation> <translation id="1219674500290482172">इंटरनेट से कनेक्ट होने में असमर्थ.</translation> @@ -306,7 +306,7 @@ <translation id="6021332621416007159">इसमें खोलें...</translation> <translation id="6039429417015973673"><ph name="TITLE" />, <ph name="PUBLISHER_INFORMATION" />, <ph name="PUBLICATION_DATE" /></translation> <translation id="6040143037577758943">बंद करें</translation> -<translation id="6042308850641462728">अधिक</translation> +<translation id="6042308850641462728">और ज़्यादा</translation> <translation id="605721222689873409">YY</translation> <translation id="6066301408025741299">रद्द करने के लिए टैप करें.</translation> <translation id="6122191549521593678">ऑनलाइन</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_strings_hu.xtb index d7f3cc3..03ca895 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
@@ -306,7 +306,7 @@ <translation id="6021332621416007159">Megnyitás itt:</translation> <translation id="6039429417015973673"><ph name="TITLE" />, <ph name="PUBLISHER_INFORMATION" />, <ph name="PUBLICATION_DATE" /></translation> <translation id="6040143037577758943">Bezárás</translation> -<translation id="6042308850641462728">Hosszabban</translation> +<translation id="6042308850641462728">Továbbiak</translation> <translation id="605721222689873409">ÉÉ</translation> <translation id="6066301408025741299">Érintse meg a visszavonáshoz</translation> <translation id="6122191549521593678">Online</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_strings_iw.xtb index c30002d..747e1464 100644 --- a/ios/chrome/app/strings/resources/ios_strings_iw.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
@@ -14,7 +14,7 @@ <translation id="1165039591588034296">שגיאה</translation> <translation id="1172898394251786223">השדה הבא</translation> <translation id="1176932207622159128">לא ניתן לשמור את התמונה</translation> -<translation id="1181037720776840403">הסר</translation> +<translation id="1181037720776840403">הסרה</translation> <translation id="1201530049782216880">כרטיסייה חדשה לגלישה בסתר</translation> <translation id="1209206284964581585">הסתר בינתיים</translation> <translation id="1219674500290482172">לא ניתן להתחבר לאינטרנט.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_strings_kn.xtb index a28c3b6..b5aaedf 100644 --- a/ios/chrome/app/strings/resources/ios_strings_kn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
@@ -14,7 +14,7 @@ <translation id="1165039591588034296">ದೋಷ</translation> <translation id="1172898394251786223">ಮುಂದಿನ ಕ್ಷೇತ್ರ</translation> <translation id="1176932207622159128">ಚಿತ್ರವನ್ನು ಉಳಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ</translation> -<translation id="1181037720776840403">ತೆಗೆದುಹಾಕು</translation> +<translation id="1181037720776840403">ತೆಗೆದುಹಾಕಿ</translation> <translation id="1201530049782216880">ಹೊಸ ಅದೃಶ್ಯ ಟ್ಯಾಬ್</translation> <translation id="1209206284964581585">ಸದ್ಯಕ್ಕೆ ಮರೆಮಾಡಿ</translation> <translation id="1219674500290482172">ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕ ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb index 797bd4f3..44d80125 100644 --- a/ios/chrome/app/strings/resources/ios_strings_te.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -29,7 +29,7 @@ <translation id="1375321115329958930">సేవ్ చెయ్యబడిన పాస్వర్డ్లు</translation> <translation id="1377255359165588604">సమకాలీకరణ పని చేయడం ఆపివేయబడింది.</translation> <translation id="1377321085342047638">కార్డ్ సంఖ్య</translation> -<translation id="1383876407941801731">శోధించు</translation> +<translation id="1383876407941801731">వెతుకు</translation> <translation id="1389974829397082527">ఇక్కడ బుక్మార్క్లు ఏవీ లేవు</translation> <translation id="1400642268715879018">గత 4 వారాలు</translation> <translation id="1407135791313364759">అన్నీ తెరువు</translation> @@ -283,7 +283,7 @@ <translation id="5737974891429562743">ఖాతా సైన్-ఇన్ వివరాలు పాతవి. సింక్ను ప్రారంభించడానికి అప్డేట్ చేయండి.</translation> <translation id="5738887413654608789">దీని వలన మీరు మీ పరిసరాల ఆధారంగా సంబంధిత వెబ్ పేజీలను కనుగొనగలుగుతారు.</translation> <translation id="5771816112378578655">సెటప్ పురోగమనంలో ఉంది...</translation> -<translation id="5816228676161003208">దీని వలన మీ వాయిస్ని ఉపయోగించి వేగంగా శోధించగలుగుతారు.</translation> +<translation id="5816228676161003208">దీని వలన మీ వాయిస్ను ఉపయోగించి వేగంగా వెతకగలుగుతారు.</translation> <translation id="5846482154967366008">శోధన ఇంజిన్</translation> <translation id="5854790677617711513">30 రోజుల కన్నా పాతవి</translation> <translation id="5857090052475505287">క్రొత్త ఫోల్డర్</translation> @@ -472,7 +472,7 @@ <translation id="8820817407110198400">బుక్మార్క్లు</translation> <translation id="8840513115188359703">మీరు మీ Google ఖాతా నుండి సైన్ అవుట్ చేయబడరు.</translation> <translation id="8870413625673593573">ఇటీవల మూసివేసినవి</translation> -<translation id="8881801611828450202">ఈ చిత్రం కోసం <ph name="SEARCH_ENGINE" />ను వెతకండి</translation> +<translation id="8881801611828450202">ఈ చిత్రం కోసం <ph name="SEARCH_ENGINE" />ని వెతకండి</translation> <translation id="8904976895050290827">Chrome Sync</translation> <translation id="895541991026785598">ఒక సమస్యను నివేదించండి</translation> <translation id="8971089644512329999">సరే, అర్థమైంది</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_vi.xtb b/ios/chrome/app/strings/resources/ios_strings_vi.xtb index e6cd852..1650289 100644 --- a/ios/chrome/app/strings/resources/ios_strings_vi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
@@ -306,7 +306,7 @@ <translation id="6021332621416007159">Mở trong...</translation> <translation id="6039429417015973673"><ph name="TITLE" />, <ph name="PUBLISHER_INFORMATION" />, <ph name="PUBLICATION_DATE" /></translation> <translation id="6040143037577758943">Đóng</translation> -<translation id="6042308850641462728">Thêm</translation> +<translation id="6042308850641462728">Xem thêm</translation> <translation id="605721222689873409">YY</translation> <translation id="6066301408025741299">Nhấn để hủy.</translation> <translation id="6122191549521593678">Trực tuyến</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb index 351736d..a29f194 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
@@ -14,7 +14,7 @@ <translation id="1165039591588034296">错误</translation> <translation id="1172898394251786223">下一个字段</translation> <translation id="1176932207622159128">无法保存图片</translation> -<translation id="1181037720776840403">删除</translation> +<translation id="1181037720776840403">移除</translation> <translation id="1201530049782216880">打开新的无痕式标签页</translation> <translation id="1209206284964581585">暂时隐藏</translation> <translation id="1219674500290482172">无法连接到互联网。</translation>
diff --git a/ios/chrome/browser/autofill/form_structure_browsertest.mm b/ios/chrome/browser/autofill/form_structure_browsertest.mm index b5b94f1..266bde9c 100644 --- a/ios/chrome/browser/autofill/form_structure_browsertest.mm +++ b/ios/chrome/browser/autofill/form_structure_browsertest.mm
@@ -247,8 +247,8 @@ is_expected_to_pass); } -INSTANTIATE_TEST_CASE_P(AllForms, - FormStructureBrowserTest, - testing::ValuesIn(GetTestFiles())); +INSTANTIATE_TEST_SUITE_P(AllForms, + FormStructureBrowserTest, + testing::ValuesIn(GetTestFiles())); } // namespace autofill
diff --git a/ios/chrome/browser/metrics/mobile_session_shutdown_metrics_provider_unittest.mm b/ios/chrome/browser/metrics/mobile_session_shutdown_metrics_provider_unittest.mm index 088a6da..c96a5f1 100644 --- a/ios/chrome/browser/metrics/mobile_session_shutdown_metrics_provider_unittest.mm +++ b/ios/chrome/browser/metrics/mobile_session_shutdown_metrics_provider_unittest.mm
@@ -175,6 +175,6 @@ expected_buckets[GetParam()], 1); } -INSTANTIATE_TEST_CASE_P(/* No InstantiationName */, - MobileSessionShutdownMetricsProviderTest, - testing::Range(0, 32)); +INSTANTIATE_TEST_SUITE_P(/* No InstantiationName */, + MobileSessionShutdownMetricsProviderTest, + testing::Range(0, 32));
diff --git a/ios/chrome/browser/tabs/tab_model_list.mm b/ios/chrome/browser/tabs/tab_model_list.mm index 501572d..51dae495 100644 --- a/ios/chrome/browser/tabs/tab_model_list.mm +++ b/ios/chrome/browser/tabs/tab_model_list.mm
@@ -4,9 +4,9 @@ #import "ios/chrome/browser/tabs/tab_model_list.h" -#include "base/lazy_instance.h" #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/no_destructor.h" #include "base/supports_user_data.h" #include "ios/chrome/browser/application_context.h" #include "ios/chrome/browser/browser_state/chrome_browser_state.h" @@ -65,19 +65,22 @@ return tab_model_list_user_data; } -base::LazyInstance<base::ObserverList<TabModelListObserver>::Unchecked>::Leaky - g_observer_list; +base::ObserverList<TabModelListObserver>::Unchecked& GetObserverList() { + static base::NoDestructor<base::ObserverList<TabModelListObserver>::Unchecked> + observer_list; + return *observer_list; +} } // namespace // static void TabModelList::AddObserver(TabModelListObserver* observer) { - g_observer_list.Get().AddObserver(observer); + GetObserverList().AddObserver(observer); } // static void TabModelList::RemoveObserver(TabModelListObserver* observer) { - g_observer_list.Get().RemoveObserver(observer); + GetObserverList().RemoveObserver(observer); } // static @@ -90,7 +93,7 @@ DCHECK(![tab_models containsObject:tab_model]); [tab_models addObject:tab_model]; - for (auto& observer : g_observer_list.Get()) + for (auto& observer : GetObserverList()) observer.TabModelRegisteredWithBrowserState(tab_model, browser_state); } @@ -104,7 +107,7 @@ DCHECK([tab_models containsObject:tab_model]); [tab_models removeObject:tab_model]; - for (auto& observer : g_observer_list.Get()) + for (auto& observer : GetObserverList()) observer.TabModelUnregisteredFromBrowserState(tab_model, browser_state); }
diff --git a/ios/chrome/browser/ui/DEPS b/ios/chrome/browser/ui/DEPS index 9fff5f37..26909e7 100644 --- a/ios/chrome/browser/ui/DEPS +++ b/ios/chrome/browser/ui/DEPS
@@ -1,10 +1,4 @@ specific_include_rules = { - # TODO(crbug.com/620134): Remove these exceptions. - "^chrome_web_view_factory.*\.mm$": [ - "+ios/web/net/request_group_util.h", - "+ios/web/net/request_tracker_impl.h", - ], - # TODO(crbug.com/620489): Remove these exceptions. "^browser_view_controller\.mm$": [ "+ios/web/web_state/ui/crw_web_controller.h",
diff --git a/ios/chrome/browser/ui/authentication/BUILD.gn b/ios/chrome/browser/ui/authentication/BUILD.gn index 78b4323..c0388b4 100644 --- a/ios/chrome/browser/ui/authentication/BUILD.gn +++ b/ios/chrome/browser/ui/authentication/BUILD.gn
@@ -57,6 +57,7 @@ "//ios/chrome/browser/ui/colors", "//ios/chrome/browser/ui/commands", "//ios/chrome/browser/ui/material_components", + "//ios/chrome/browser/ui/settings:settings_root", "//ios/chrome/browser/ui/signin_interaction/public", "//ios/chrome/browser/unified_consent", "//ios/chrome/common",
diff --git a/ios/chrome/browser/ui/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view_controller.mm index f9aa4e9a..4a7755a 100644 --- a/ios/chrome/browser/ui/browser_view_controller.mm +++ b/ios/chrome/browser/ui/browser_view_controller.mm
@@ -4522,6 +4522,8 @@ - (void)tabModel:(TabModel*)model didRemoveTab:(Tab*)tab atIndex:(NSUInteger)index { + tab.webState->WasHidden(); + [self uninstallDelegatesForTab:tab]; // Cancel dialogs for |tab|'s WebState.
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_egtest.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_egtest.mm index b59cedc..de262151e 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_egtest.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_egtest.mm
@@ -195,9 +195,6 @@ // Tests that the additional items (when more is pressed) are kept when // switching tabs. - (void)testAdditionalItemsKept { - // TODO(crbug.com/925657): re-enable when fixed. - EARL_GREY_TEST_DISABLED(@"Failing randomly on the bots."); - // Set server up. self.testServer->RegisterRequestHandler(base::Bind(&StandardResponse)); GREYAssertTrue(self.testServer->Start(), @"Test server failed to start."); @@ -258,9 +255,6 @@ // disposition of the collection takes into account the previous scroll, even // when more is tapped. - (void)testOpenPageAndGoBackWithMoreContent { - // TODO(crbug.com/925657): re-enable when fixed. - EARL_GREY_TEST_DISABLED(@"Failing randomly on the bots."); - // Set server up. self.testServer->RegisterRequestHandler(base::Bind(&StandardResponse)); GREYAssertTrue(self.testServer->Start(), @"Test server failed to start."); @@ -317,9 +311,6 @@ // Tests that the "Learn More" cell is present only if there is a suggestion in // the section. - (void)testLearnMore { - // TODO(crbug.com/925657): re-enable when fixed. - EARL_GREY_TEST_DISABLED(@"Failing randomly on the bots."); - id<GREYAction> action = grey_scrollInDirectionWithStartPoint(kGREYDirectionDown, 200, 0.5, 0.5); [[[EarlGrey selectElementWithMatcher:grey_accessibilityID(
diff --git a/ios/chrome/browser/ui/content_suggestions/ntp_home_egtest.mm b/ios/chrome/browser/ui/content_suggestions/ntp_home_egtest.mm index 5293674..fb68015 100644 --- a/ios/chrome/browser/ui/content_suggestions/ntp_home_egtest.mm +++ b/ios/chrome/browser/ui/content_suggestions/ntp_home_egtest.mm
@@ -200,9 +200,6 @@ // Tests that the collections shortcut are displayed and working. - (void)testCollectionShortcuts { - // TODO(crbug.com/925657): re-enable when fixed. - EARL_GREY_TEST_DISABLED(@"Failing randomly on the bots."); - // Check the Bookmarks. [[EarlGrey selectElementWithMatcher:chrome_test_util::ButtonWithAccessibilityLabelId( @@ -677,9 +674,6 @@ } - (void)testFavicons { - // TODO(crbug.com/925657): re-enable when fixed. - EARL_GREY_TEST_DISABLED(@"Failing randomly on the bots."); - for (NSInteger index = 0; index < 8; index++) { [[EarlGrey selectElementWithMatcher:
diff --git a/ios/chrome/browser/ui/history/BUILD.gn b/ios/chrome/browser/ui/history/BUILD.gn index 21e213f..98bb8841 100644 --- a/ios/chrome/browser/ui/history/BUILD.gn +++ b/ios/chrome/browser/ui/history/BUILD.gn
@@ -103,6 +103,7 @@ "//ios/chrome/browser/ui/coordinators:chrome_coordinators", "//ios/chrome/browser/ui/history/public", "//ios/chrome/browser/ui/settings", + "//ios/chrome/browser/ui/settings/clear_browsing_data", "//ios/chrome/browser/ui/table_view", "//ios/chrome/browser/ui/table_view:presentation", "//ios/web/public",
diff --git a/ios/chrome/browser/ui/history/history_clear_browsing_data_coordinator.h b/ios/chrome/browser/ui/history/history_clear_browsing_data_coordinator.h index b19a0b7..9429de58 100644 --- a/ios/chrome/browser/ui/history/history_clear_browsing_data_coordinator.h +++ b/ios/chrome/browser/ui/history/history_clear_browsing_data_coordinator.h
@@ -6,7 +6,7 @@ #define IOS_CHROME_BROWSER_UI_HISTORY_HISTORY_CLEAR_BROWSING_DATA_COORDINATOR_H_ #import "ios/chrome/browser/ui/coordinators/chrome_coordinator.h" -#import "ios/chrome/browser/ui/settings/clear_browsing_data_local_commands.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_local_commands.h" @protocol ApplicationCommands; @protocol UrlLoader;
diff --git a/ios/chrome/browser/ui/history/history_clear_browsing_data_coordinator.mm b/ios/chrome/browser/ui/history/history_clear_browsing_data_coordinator.mm index 87d7d3e..81f2cc7 100644 --- a/ios/chrome/browser/ui/history/history_clear_browsing_data_coordinator.mm +++ b/ios/chrome/browser/ui/history/history_clear_browsing_data_coordinator.mm
@@ -10,8 +10,8 @@ #import "ios/chrome/browser/ui/commands/open_new_tab_command.h" #include "ios/chrome/browser/ui/history/history_local_commands.h" #import "ios/chrome/browser/ui/history/public/history_presentation_delegate.h" -#import "ios/chrome/browser/ui/settings/clear_browsing_data_local_commands.h" -#import "ios/chrome/browser/ui/settings/clear_browsing_data_table_view_controller.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_local_commands.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.h" #import "ios/chrome/browser/ui/table_view/table_view_navigation_controller.h" #import "ios/chrome/browser/ui/table_view/table_view_presentation_controller.h" #import "ios/chrome/browser/ui/table_view/table_view_presentation_controller_delegate.h"
diff --git a/ios/chrome/browser/ui/orchestrator/BUILD.gn b/ios/chrome/browser/ui/orchestrator/BUILD.gn index aa10b06..d7b2a2f 100644 --- a/ios/chrome/browser/ui/orchestrator/BUILD.gn +++ b/ios/chrome/browser/ui/orchestrator/BUILD.gn
@@ -13,6 +13,7 @@ "toolbar_animatee.h", ] deps = [ + "//base", "//ios/chrome/common:timing", ] libs = [ "UIKit.framework" ]
diff --git a/ios/chrome/browser/ui/orchestrator/omnibox_focus_orchestrator.mm b/ios/chrome/browser/ui/orchestrator/omnibox_focus_orchestrator.mm index 7f04e86..8363277 100644 --- a/ios/chrome/browser/ui/orchestrator/omnibox_focus_orchestrator.mm +++ b/ios/chrome/browser/ui/orchestrator/omnibox_focus_orchestrator.mm
@@ -4,6 +4,7 @@ #import "ios/chrome/browser/ui/orchestrator/omnibox_focus_orchestrator.h" +#include "base/logging.h" #import "ios/chrome/browser/ui/orchestrator/edit_view_animatee.h" #import "ios/chrome/browser/ui/orchestrator/location_bar_animatee.h" #import "ios/chrome/browser/ui/orchestrator/toolbar_animatee.h" @@ -16,31 +17,40 @@ @interface OmniboxFocusOrchestrator () @property(nonatomic, assign) BOOL isAnimating; +@property(nonatomic, assign) BOOL stateChangedDuringAnimation; +@property(nonatomic, assign) BOOL finalOmniboxFocusedState; +@property(nonatomic, assign) BOOL finalToolbarExpandedState; +@property(nonatomic, assign) int inProgressAnimationCount; @end @implementation OmniboxFocusOrchestrator -@synthesize toolbarAnimatee = _toolbarAnimatee; -@synthesize locationBarAnimatee = _locationBarAnimatee; -@synthesize editViewAnimatee = _editViewAnimatee; -@synthesize isAnimating = _isAnimating; - - (void)transitionToStateOmniboxFocused:(BOOL)omniboxFocused toolbarExpanded:(BOOL)toolbarExpanded animated:(BOOL)animated { + // If a new transition is requested while one is ongoing, we don't want + // to start the new one immediately. However, we do want the omnibox to end + // up in whatever state was requested last. Therefore, we cache the last + // requested state and set the omnibox to that state (without animation) at + // the end of the animations. This may look jerky, but will cause the + // final state to be a valid one. + if (self.isAnimating) { + self.stateChangedDuringAnimation = YES; + self.finalOmniboxFocusedState = omniboxFocused; + self.finalToolbarExpandedState = toolbarExpanded; + return; + } + + self.isAnimating = animated; + self.inProgressAnimationCount = 0; + if (toolbarExpanded) { [self updateUIToExpandedState:animated]; } else { [self updateUIToContractedState:animated]; } - if (self.isAnimating) { - return; - } - - self.isAnimating = animated; - // Make the rest of the animation happen on the next runloop when this // animation have calculated the final frame for the location bar. // This is necessary because expanding/contracting the toolbar is actually @@ -64,9 +74,7 @@ - (void)focusOmniboxAnimated:(BOOL)animated { // Cleans up after the animation. - // The argument is necessary as this is used as |completion| in UIView - // animateWithBlock: call. - auto cleanup = ^(BOOL __unused complete) { + void (^cleanup)() = ^{ [self.locationBarAnimatee setEditViewHidden:NO]; [self.locationBarAnimatee setSteadyViewHidden:YES]; [self.locationBarAnimatee resetTransforms]; @@ -74,7 +82,6 @@ [self.locationBarAnimatee setEditViewFaded:NO]; [self.editViewAnimatee setLeadingIconFaded:NO]; [self.editViewAnimatee setClearButtonFaded:NO]; - self.isAnimating = NO; }; if (animated) { @@ -88,14 +95,18 @@ CGFloat duration = ios::material::kDuration1; + self.inProgressAnimationCount += 1; [UIView animateWithDuration:duration - delay:0 - options:UIViewAnimationCurveEaseInOut - animations:^{ - [self.locationBarAnimatee - resetEditViewOffsetAndOffsetSteadyViewToMatch]; - } - completion:cleanup]; + delay:0 + options:UIViewAnimationCurveEaseInOut + animations:^{ + [self.locationBarAnimatee + resetEditViewOffsetAndOffsetSteadyViewToMatch]; + } + completion:^(BOOL complete) { + cleanup(); + [self animationFinished]; + }]; // Fading the views happens with a different timing for a better visual // effect. The steady view looks like an ordinary label, and it fades before @@ -103,43 +114,49 @@ // looks like selected text. Since the selection is blue, it looks // overwhelming if faded in at the same time as the steady view. So it fades // in faster and later into the animation to look better. + self.inProgressAnimationCount += 1; [UIView animateWithDuration:duration * 0.8 - delay:duration * 0.1 - options:UIViewAnimationCurveEaseInOut - animations:^{ - [self.locationBarAnimatee setSteadyViewFaded:YES]; - } - completion:nil]; + delay:duration * 0.1 + options:UIViewAnimationCurveEaseInOut + animations:^{ + [self.locationBarAnimatee setSteadyViewFaded:YES]; + } + completion:^(BOOL complete) { + [self animationFinished]; + }]; + self.inProgressAnimationCount += 1; [UIView animateWithDuration:duration * 0.6 - delay:duration * 0.4 - options:UIViewAnimationCurveEaseInOut - animations:^{ - [self.locationBarAnimatee setEditViewFaded:NO]; - } - completion:nil]; + delay:duration * 0.4 + options:UIViewAnimationCurveEaseInOut + animations:^{ + [self.locationBarAnimatee setEditViewFaded:NO]; + } + completion:^(BOOL _) { + [self animationFinished]; + }]; + self.inProgressAnimationCount += 1; [UIView animateWithDuration:duration * 0.2 - delay:duration * 0.8 - options:UIViewAnimationCurveLinear - animations:^{ - [self.editViewAnimatee setLeadingIconFaded:NO]; - [self.editViewAnimatee setClearButtonFaded:NO]; - } - completion:nil]; + delay:duration * 0.8 + options:UIViewAnimationCurveLinear + animations:^{ + [self.editViewAnimatee setLeadingIconFaded:NO]; + [self.editViewAnimatee setClearButtonFaded:NO]; + } + completion:^(BOOL _) { + [self animationFinished]; + }]; } else { - cleanup(YES); + cleanup(); } } - (void)defocusOmniboxAnimated:(BOOL)animated { // Cleans up after the animation. - // The argument is necessary as this is used as |completion| in UIView - // animateWithBlock: call. - void (^cleanup)(BOOL _) = ^(BOOL _) { + void (^cleanup)() = ^{ [self.locationBarAnimatee setEditViewHidden:YES]; [self.locationBarAnimatee setSteadyViewHidden:NO]; [self.locationBarAnimatee resetTransforms]; - self.isAnimating = NO; [self.locationBarAnimatee setSteadyViewFaded:NO]; [self.editViewAnimatee setLeadingIconFaded:NO]; [self.editViewAnimatee setClearButtonFaded:NO]; @@ -156,41 +173,55 @@ CGFloat duration = ios::material::kDuration1; + self.inProgressAnimationCount += 1; [UIView animateWithDuration:duration - delay:0 - options:UIViewAnimationCurveEaseInOut - animations:^{ - [self.locationBarAnimatee - resetSteadyViewOffsetAndOffsetEditViewToMatch]; - } - completion:cleanup]; + delay:0 + options:UIViewAnimationCurveEaseInOut + animations:^{ + [self.locationBarAnimatee + resetSteadyViewOffsetAndOffsetEditViewToMatch]; + } + completion:^(BOOL _) { + cleanup(); + [self animationFinished]; + }]; // These timings are explained in a comment in // focusOmniboxAnimated:shouldExpand:. + self.inProgressAnimationCount += 1; [UIView animateWithDuration:0.2 * duration - animations:^{ - [self.editViewAnimatee setLeadingIconFaded:YES]; - [self.editViewAnimatee setClearButtonFaded:YES]; - }]; + animations:^{ + [self.editViewAnimatee setLeadingIconFaded:YES]; + [self.editViewAnimatee setClearButtonFaded:YES]; + } + completion:^(BOOL _) { + [self animationFinished]; + }]; + self.inProgressAnimationCount += 1; [UIView animateWithDuration:duration * 0.8 - delay:duration * 0.1 - options:UIViewAnimationCurveEaseInOut - animations:^{ - [self.locationBarAnimatee setEditViewFaded:YES]; - } - completion:nil]; + delay:duration * 0.1 + options:UIViewAnimationCurveEaseInOut + animations:^{ + [self.locationBarAnimatee setEditViewFaded:YES]; + } + completion:^(BOOL _) { + [self animationFinished]; + }]; + self.inProgressAnimationCount += 1; [UIView animateWithDuration:duration * 0.6 - delay:duration * 0.4 - options:UIViewAnimationCurveEaseInOut - animations:^{ - [self.locationBarAnimatee setSteadyViewFaded:NO]; - } - completion:nil]; + delay:duration * 0.4 + options:UIViewAnimationCurveEaseInOut + animations:^{ + [self.locationBarAnimatee setSteadyViewFaded:NO]; + } + completion:^(BOOL _) { + [self animationFinished]; + }]; } else { - cleanup(YES); + cleanup(); } } @@ -209,17 +240,23 @@ if (animated) { // Use UIView animateWithDuration instead of UIViewPropertyAnimator to // avoid UIKit bug. See https://crbug.com/856155. + self.inProgressAnimationCount += 1; [UIView animateWithDuration:ios::material::kDuration1 delay:0 options:UIViewAnimationCurveEaseInOut animations:expansion - completion:nil]; + completion:^(BOOL _) { + [self animationFinished]; + }]; + self.inProgressAnimationCount += 1; [UIView animateWithDuration:ios::material::kDuration2 delay:0 options:UIViewAnimationCurveEaseInOut animations:hideControls - completion:nil]; + completion:^(BOOL _) { + [self animationFinished]; + }]; } else { expansion(); hideControls(); @@ -248,6 +285,7 @@ ios::material::kDuration1 + ios::material::kDuration2; CGFloat relativeDurationAnimation1 = ios::material::kDuration1 / totalDuration; + self.inProgressAnimationCount += 1; [UIView animateKeyframesWithDuration:totalDuration delay:0 options:UIViewAnimationCurveEaseInOut @@ -264,7 +302,8 @@ showControls(); }]; } - completion:^(BOOL finished) { + completion:^(BOOL _) { + [self animationFinished]; hideCancel(); }]; } else { @@ -274,4 +313,24 @@ } } +- (void)animationFinished { + self.inProgressAnimationCount -= 1; + if (self.inProgressAnimationCount > 0) { + return; + } + + // inProgressAnimation count should never be negative because it should + // always be incremented before starting an animation and decremented + // when the animation finishes. + DCHECK(self.inProgressAnimationCount == 0); + + self.isAnimating = NO; + if (self.stateChangedDuringAnimation) { + [self transitionToStateOmniboxFocused:self.finalOmniboxFocusedState + toolbarExpanded:self.finalToolbarExpandedState + animated:NO]; + } + self.stateChangedDuringAnimation = NO; +} + @end
diff --git a/ios/chrome/browser/ui/reading_list/reading_list_mediator_unittest.mm b/ios/chrome/browser/ui/reading_list/reading_list_mediator_unittest.mm index 0ef99f3..3f8d306 100644 --- a/ios/chrome/browser/ui/reading_list/reading_list_mediator_unittest.mm +++ b/ios/chrome/browser/ui/reading_list/reading_list_mediator_unittest.mm
@@ -109,7 +109,7 @@ EXPECT_TRUE([rlReadArray[1].title isEqualToString:@"read1"]); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( , // Empty instatiation name. ReadingListMediatorTest, ::testing::Values(FaviconServiceType::FAVICON_LOADER,
diff --git a/ios/chrome/browser/ui/settings/BUILD.gn b/ios/chrome/browser/ui/settings/BUILD.gn index ec8b29c..60df24e 100644 --- a/ios/chrome/browser/ui/settings/BUILD.gn +++ b/ios/chrome/browser/ui/settings/BUILD.gn
@@ -2,6 +2,40 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +source_set("settings_root") { + configs += [ "//build/config/compiler:enable_arc" ] + sources = [ + "bar_button_activity_indicator.h", + "bar_button_activity_indicator.mm", + "settings_navigation_controller.h", + "settings_root_collection_view_controller.h", + "settings_root_collection_view_controller.mm", + "settings_root_table_view_controller.h", + "settings_root_table_view_controller.mm", + "settings_root_view_controlling.h", + ] + deps = [ + "//ios/chrome/app/strings", + "//ios/chrome/browser/browser_state", + "//ios/chrome/browser/ui:feature_flags", + "//ios/chrome/browser/ui/collection_view", + "//ios/chrome/browser/ui/collection_view/cells", + "//ios/chrome/browser/ui/collection_view/cells", + "//ios/chrome/browser/ui/commands", + "//ios/chrome/browser/ui/material_components", + "//ios/chrome/browser/ui/settings/cells", + "//ios/chrome/browser/ui/table_view", + "//ios/chrome/browser/ui/table_view:styler", + "//ios/chrome/browser/ui/table_view/cells", + "//ios/chrome/browser/ui/util", + "//ios/chrome/common/ui_util", + "//ios/public/provider/chrome/browser", + "//ios/public/provider/chrome/browser/user_feedback", + "//ios/third_party/material_components_ios", + "//ui/base", + ] +} + source_set("settings") { configs += [ "//build/config/compiler:enable_arc" ] sources = [ @@ -22,20 +56,8 @@ "autofill_profile_table_view_controller.mm", "bandwidth_management_table_view_controller.h", "bandwidth_management_table_view_controller.mm", - "bar_button_activity_indicator.h", - "bar_button_activity_indicator.mm", "block_popups_table_view_controller.h", "block_popups_table_view_controller.mm", - "clear_browsing_data_collection_view_controller.h", - "clear_browsing_data_collection_view_controller.mm", - "clear_browsing_data_consumer.h", - "clear_browsing_data_local_commands.h", - "clear_browsing_data_manager.h", - "clear_browsing_data_manager.mm", - "clear_browsing_data_table_view_controller.h", - "clear_browsing_data_table_view_controller.mm", - "clear_browsing_data_ui_constants.h", - "clear_browsing_data_ui_constants.mm", "content_settings_table_view_controller.h", "content_settings_table_view_controller.mm", "dataplan_usage_table_view_controller.h", @@ -56,10 +78,14 @@ "handoff_table_view_controller.mm", "import_data_table_view_controller.h", "import_data_table_view_controller.mm", + "manage_sync_settings_consumer.h", "manage_sync_settings_coordinator.h", "manage_sync_settings_coordinator.mm", + "manage_sync_settings_mediator.h", + "manage_sync_settings_mediator.mm", "manage_sync_settings_table_view_controller.h", "manage_sync_settings_table_view_controller.mm", + "manage_sync_settings_view_controller_model_delegate.h", "material_cell_catalog_view_controller.h", "material_cell_catalog_view_controller.mm", "password_details_table_view_controller.h", @@ -76,13 +102,7 @@ "reauthentication_protocol.h", "search_engine_table_view_controller.h", "search_engine_table_view_controller.mm", - "settings_navigation_controller.h", "settings_navigation_controller.mm", - "settings_root_collection_view_controller.h", - "settings_root_collection_view_controller.mm", - "settings_root_table_view_controller.h", - "settings_root_table_view_controller.mm", - "settings_root_view_controlling.h", "settings_table_view_controller.h", "settings_table_view_controller.mm", "settings_utils.h", @@ -97,14 +117,13 @@ "sync_settings_collection_view_controller.mm", "table_cell_catalog_view_controller.h", "table_cell_catalog_view_controller.mm", - "time_range_selector_collection_view_controller.h", - "time_range_selector_collection_view_controller.mm", "translate_table_view_controller.h", "translate_table_view_controller.mm", "voice_search_table_view_controller.h", "voice_search_table_view_controller.mm", ] deps = [ + ":settings_root", "resources:app_icon_placeholder", "resources:encryption_error", "resources:settings_about_chrome", @@ -189,6 +208,7 @@ "//ios/chrome/browser/ui/material_components", "//ios/chrome/browser/ui/payments/cells", "//ios/chrome/browser/ui/settings/cells", + "//ios/chrome/browser/ui/settings/clear_browsing_data", "//ios/chrome/browser/ui/settings/sync_utils", "//ios/chrome/browser/ui/settings/utils", "//ios/chrome/browser/ui/signin_interaction", @@ -215,6 +235,7 @@ "//url", ] public_deps = [ + ":settings_root", "//ios/chrome/browser/ui/collection_view/cells", ] allow_circular_includes_from = [ "//ios/chrome/browser/ui/authentication" ] @@ -239,6 +260,7 @@ ] deps = [ ":settings", + ":settings_root", "//base", "//components/autofill/core/browser", "//components/browser_sync", @@ -273,8 +295,6 @@ "autofill_profile_table_view_controller_unittest.mm", "bandwidth_management_table_view_controller_unittest.mm", "block_popups_table_view_controller_unittest.mm", - "clear_browsing_data_collection_view_controller_unittest.mm", - "clear_browsing_data_manager_unittest.mm", "content_settings_table_view_controller_unittest.mm", "dataplan_usage_table_view_controller_unittest.mm", "import_data_table_view_controller_unittest.mm", @@ -291,19 +311,18 @@ "sync_encryption_passphrase_table_view_controller_unittest.mm", "sync_encryption_table_view_controller_unittest.mm", "sync_settings_collection_view_controller_unittest.mm", - "time_range_selector_collection_view_controller_unittest.mm", "translate_table_view_controller_unittest.mm", "voice_search_table_view_controller_unittest.mm", ] deps = [ ":settings", + ":settings_root", ":test_support", "//base", "//base/test:test_support", "//components/autofill/core/browser", "//components/autofill/core/common", "//components/browser_sync:test_support", - "//components/browsing_data/core", "//components/content_settings/core/browser", "//components/google/core/browser", "//components/handoff", @@ -375,7 +394,6 @@ "autofill_credit_card_settings_egtest.mm", "autofill_profile_settings_egtest.mm", "block_popups_egtest.mm", - "clear_browsing_data_egtest.mm", "passwords_settings_egtest.mm", "settings_egtest.mm", "signin_settings_egtest.mm",
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn b/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn new file mode 100644 index 0000000..4c1499be --- /dev/null +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/BUILD.gn
@@ -0,0 +1,107 @@ +# Copyright 2019 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +source_set("clear_browsing_data") { + configs += [ "//build/config/compiler:enable_arc" ] + sources = [ + "clear_browsing_data_collection_view_controller.h", + "clear_browsing_data_collection_view_controller.mm", + "clear_browsing_data_consumer.h", + "clear_browsing_data_local_commands.h", + "clear_browsing_data_manager.h", + "clear_browsing_data_manager.mm", + "clear_browsing_data_table_view_controller.h", + "clear_browsing_data_table_view_controller.mm", + "clear_browsing_data_ui_constants.h", + "clear_browsing_data_ui_constants.mm", + "time_range_selector_collection_view_controller.h", + "time_range_selector_collection_view_controller.mm", + ] + deps = [ + "//components/browsing_data/core", + "//components/feature_engagement/public", + "//components/history/core/browser", + "//components/strings", + "//ios/chrome/app/strings", + "//ios/chrome/browser", + "//ios/chrome/browser/browser_state", + "//ios/chrome/browser/browsing_data", + "//ios/chrome/browser/feature_engagement", + "//ios/chrome/browser/history", + "//ios/chrome/browser/signin", + "//ios/chrome/browser/sync", + "//ios/chrome/browser/ui/alert_coordinator", + "//ios/chrome/browser/ui/collection_view", + "//ios/chrome/browser/ui/colors", + "//ios/chrome/browser/ui/commands", + "//ios/chrome/browser/ui/elements:elements_internal", + "//ios/chrome/browser/ui/icons", + "//ios/chrome/browser/ui/list_model", + "//ios/chrome/browser/ui/settings:settings_root", + "//ios/chrome/browser/ui/settings/cells", + "//ios/chrome/browser/ui/settings/cells/legacy", + "//ios/chrome/browser/ui/table_view", + "//ios/chrome/browser/ui/table_view:styler", + "//ios/chrome/browser/ui/table_view/cells", + "//ios/chrome/common", + "//ios/public/provider/chrome/browser", + "//ios/public/provider/chrome/browser/images", + "//services/identity/public/cpp", + "//ui/base", + ] +} + +source_set("unit_tests") { + configs += [ "//build/config/compiler:enable_arc" ] + testonly = true + sources = [ + "clear_browsing_data_collection_view_controller_unittest.mm", + "clear_browsing_data_manager_unittest.mm", + "time_range_selector_collection_view_controller_unittest.mm", + ] + deps = [ + ":clear_browsing_data", + "//base", + "//base/test:test_support", + "//components/browser_sync:test_support", + "//components/browsing_data/core", + "//components/pref_registry", + "//components/prefs", + "//components/sync_preferences", + "//components/sync_preferences:test_support", + "//ios/chrome/app/strings", + "//ios/chrome/browser", + "//ios/chrome/browser/browser_state:test_support", + "//ios/chrome/browser/browsing_data:counters", + "//ios/chrome/browser/prefs:browser_prefs", + "//ios/chrome/browser/signin:test_support", + "//ios/chrome/browser/sync", + "//ios/chrome/browser/sync:test_support", + "//ios/chrome/browser/ui/collection_view", + "//ios/chrome/browser/ui/collection_view:test_support", + "//ios/chrome/browser/ui/settings/cells", + "//ios/chrome/common", + "//ios/web/public/test", + "//services/identity/public/cpp:test_support", + "//testing/gtest", + "//third_party/ocmock", + "//ui/base", + ] +} + +source_set("eg_tests") { + configs += [ "//build/config/compiler:enable_arc" ] + testonly = true + sources = [ + "clear_browsing_data_egtest.mm", + ] + deps = [ + "//base/test:test_support", + "//components/strings", + "//ios/chrome/app/strings", + "//ios/chrome/browser/browsing_data:feature_flags", + "//ios/chrome/test/earl_grey:test_support", + "//ui/base", + ] +}
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.h b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_collection_view_controller.h similarity index 60% rename from ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.h rename to ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_collection_view_controller.h index 917bbd5..507456ee 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_collection_view_controller.h
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_COLLECTION_VIEW_CONTROLLER_H_ -#define IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_COLLECTION_VIEW_CONTROLLER_H_ +#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_COLLECTION_VIEW_CONTROLLER_H_ +#define IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_COLLECTION_VIEW_CONTROLLER_H_ #import "ios/chrome/browser/ui/settings/settings_root_collection_view_controller.h" -#import "ios/chrome/browser/ui/settings/clear_browsing_data_consumer.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_consumer.h" namespace ios { class ChromeBrowserState; @@ -16,7 +16,7 @@ // CollectionView for clearing browsing data (including history, // cookies, caches, passwords, and autofill). @interface ClearBrowsingDataCollectionViewController - : SettingsRootCollectionViewController<ClearBrowsingDataConsumer> + : SettingsRootCollectionViewController <ClearBrowsingDataConsumer> - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState NS_DESIGNATED_INITIALIZER; @@ -27,4 +27,4 @@ @end -#endif // IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_COLLECTION_VIEW_CONTROLLER_H_ +#endif // IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_COLLECTION_VIEW_CONTROLLER_H_
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_collection_view_controller.mm similarity index 98% rename from ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.mm rename to ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_collection_view_controller.mm index 35f648d..c62c473a 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_collection_view_controller.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_collection_view_controller.h" #include <memory> #include <string> @@ -33,8 +33,8 @@ #import "ios/chrome/browser/ui/icons/chrome_icon.h" #import "ios/chrome/browser/ui/settings/cells/clear_browsing_data_constants.h" #import "ios/chrome/browser/ui/settings/cells/clear_browsing_data_item.h" -#import "ios/chrome/browser/ui/settings/clear_browsing_data_manager.h" -#import "ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_collection_view_controller.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" #include "ios/chrome/grit/ios_chromium_strings.h" @@ -142,7 +142,6 @@ kClearBrowsingDataCollectionViewAccessibilityIdentifier; if (experimental_flags::IsNewClearBrowsingDataUIEnabled()) { - __weak ClearBrowsingDataCollectionViewController* weakSelf = self; observer_ = std::make_unique<BrowsingDataRemoverObserverWrapper>( ^(BrowsingDataRemoveMask mask) { @@ -269,7 +268,6 @@ if (completionBlock) completionBlock(); }); - }; [self.dispatcher removeBrowsingDataForBrowserState:browserState
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller_unittest.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_collection_view_controller_unittest.mm similarity index 97% rename from ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller_unittest.mm rename to ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_collection_view_controller_unittest.mm index e85b86e..678852da 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_collection_view_controller_unittest.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_collection_view_controller.h" #include <memory> @@ -94,8 +94,8 @@ } void SelectItem(int item, int section) { - NSIndexPath* indexPath = - [NSIndexPath indexPathForItem:item inSection:section]; + NSIndexPath* indexPath = [NSIndexPath indexPathForItem:item + inSection:section]; [controller() collectionView:[controller() collectionView] didSelectItemAtIndexPath:indexPath]; }
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data_consumer.h b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_consumer.h similarity index 78% rename from ios/chrome/browser/ui/settings/clear_browsing_data_consumer.h rename to ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_consumer.h index 723d74f..1f20b30f 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data_consumer.h +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_consumer.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CONSUMER_H_ -#define IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CONSUMER_H_ +#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_CONSUMER_H_ +#define IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_CONSUMER_H_ #import <Foundation/Foundation.h> @@ -21,7 +21,7 @@ enum class BrowsingDataRemoveMask; -@protocol ClearBrowsingDataConsumer<NSObject> +@protocol ClearBrowsingDataConsumer <NSObject> // Execute action to clear browsing data. - (void)removeBrowsingDataForBrowserState:(ios::ChromeBrowserState*)browserState timePeriod:(browsing_data::TimePeriod)timePeriod @@ -40,4 +40,4 @@ - (void)updateCounter:(NSInteger)itemType detailText:(NSString*)detailText; @end -#endif // IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CONSUMER_H_ +#endif // IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_CONSUMER_H_
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data_egtest.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_egtest.mm similarity index 100% rename from ios/chrome/browser/ui/settings/clear_browsing_data_egtest.mm rename to ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_egtest.mm
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data_local_commands.h b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_local_commands.h similarity index 65% rename from ios/chrome/browser/ui/settings/clear_browsing_data_local_commands.h rename to ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_local_commands.h index 568e9ffe8..fabef39 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data_local_commands.h +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_local_commands.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_LOCAL_COMMANDS_H_ -#define IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_LOCAL_COMMANDS_H_ +#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_LOCAL_COMMANDS_H_ +#define IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_LOCAL_COMMANDS_H_ #include "base/ios/block_types.h" @@ -20,4 +20,4 @@ @end -#endif // IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_LOCAL_COMMANDS_H_ +#endif // IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_LOCAL_COMMANDS_H_
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data_manager.h b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.h similarity index 78% rename from ios/chrome/browser/ui/settings/clear_browsing_data_manager.h rename to ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.h index 52b384cc..ccd7208 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data_manager.h +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.h
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_MANAGER_H_ -#define IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_MANAGER_H_ +#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_MANAGER_H_ +#define IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_MANAGER_H_ #import <Foundation/Foundation.h> -#import "ios/chrome/browser/ui/settings/clear_browsing_data_consumer.h" -#import "ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_consumer.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_collection_view_controller.h" @class ListModel; @class ActionSheetCoordinator; @@ -68,7 +68,7 @@ // Manager that serves as the bulk of the logic for // ClearBrowsingDataConsumer. @interface ClearBrowsingDataManager - : NSObject<TimeRangeSelectorCollectionViewControllerDelegate> + : NSObject <TimeRangeSelectorCollectionViewControllerDelegate> // The manager's consumer. @property(nonatomic, assign) id<ClearBrowsingDataConsumer> consumer; @@ -87,16 +87,16 @@ // Returns a ActionSheetCoordinator that has action block to clear data of type // |dataTypeMaskToRemove|. - (ActionSheetCoordinator*) -actionSheetCoordinatorWithDataTypesToRemove: - (BrowsingDataRemoveMask)dataTypeMaskToRemove - baseViewController: - (UIViewController*)baseViewController - sourceRect:(CGRect)sourceRect - sourceView:(UIView*)sourceView; + actionSheetCoordinatorWithDataTypesToRemove: + (BrowsingDataRemoveMask)dataTypeMaskToRemove + baseViewController: + (UIViewController*)baseViewController + sourceRect:(CGRect)sourceRect + sourceView:(UIView*)sourceView; // Get the text to be displayed by a counter from the given |result| - (NSString*)counterTextFromResult: (const browsing_data::BrowsingDataCounter::Result&)result; @end -#endif // IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_MANAGER_H_ +#endif // IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_MANAGER_H_
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data_manager.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm similarity index 97% rename from ios/chrome/browser/ui/settings/clear_browsing_data_manager.mm rename to ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm index c9a793b..c384c08c 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data_manager.mm +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/ui/settings/clear_browsing_data_manager.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.h" #include "base/bind.h" #include "base/mac/foundation_util.h" @@ -39,7 +39,7 @@ #import "ios/chrome/browser/ui/settings/cells/clear_browsing_data_item.h" #import "ios/chrome/browser/ui/settings/cells/legacy/legacy_settings_detail_item.h" #import "ios/chrome/browser/ui/settings/cells/table_view_clear_browsing_data_item.h" -#import "ios/chrome/browser/ui/settings/clear_browsing_data_ui_constants.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_ui_constants.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_text_button_item.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_text_item.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_text_link_item.h" @@ -220,12 +220,12 @@ } - (ActionSheetCoordinator*) -actionSheetCoordinatorWithDataTypesToRemove: - (BrowsingDataRemoveMask)dataTypeMaskToRemove - baseViewController: - (UIViewController*)baseViewController - sourceRect:(CGRect)sourceRect - sourceView:(UIView*)sourceView { + actionSheetCoordinatorWithDataTypesToRemove: + (BrowsingDataRemoveMask)dataTypeMaskToRemove + baseViewController: + (UIViewController*)baseViewController + sourceRect:(CGRect)sourceRect + sourceView:(UIView*)sourceView { if (dataTypeMaskToRemove == BrowsingDataRemoveMask::REMOVE_NOTHING) { // Nothing to clear (no data types selected). return nil;
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data_manager_unittest.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager_unittest.mm similarity index 98% rename from ios/chrome/browser/ui/settings/clear_browsing_data_manager_unittest.mm rename to ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager_unittest.mm index 538fd89e..cdb7a603 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data_manager_unittest.mm +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager_unittest.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/ui/settings/clear_browsing_data_manager.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.h" #include "base/bind.h" #include "components/browser_sync/profile_sync_service_mock.h"
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data_table_view_controller.h b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.h similarity index 86% rename from ios/chrome/browser/ui/settings/clear_browsing_data_table_view_controller.h rename to ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.h index 3ec73e3..8ebb234 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data_table_view_controller.h +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_TABLE_VIEW_CONTROLLER_H_ -#define IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_TABLE_VIEW_CONTROLLER_H_ +#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_TABLE_VIEW_CONTROLLER_H_ +#define IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_TABLE_VIEW_CONTROLLER_H_ #import "ios/chrome/browser/ui/table_view/chrome_table_view_controller.h"
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data_table_view_controller.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm similarity index 95% rename from ios/chrome/browser/ui/settings/clear_browsing_data_table_view_controller.mm rename to ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm index 99dbb06..95f397f 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/ui/settings/clear_browsing_data_table_view_controller.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.h" #include "base/mac/foundation_util.h" #include "base/metrics/user_metrics.h" @@ -14,9 +14,9 @@ #import "ios/chrome/browser/ui/commands/application_commands.h" #import "ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator.h" #import "ios/chrome/browser/ui/settings/cells/table_view_clear_browsing_data_item.h" -#include "ios/chrome/browser/ui/settings/clear_browsing_data_local_commands.h" -#import "ios/chrome/browser/ui/settings/clear_browsing_data_manager.h" -#import "ios/chrome/browser/ui/settings/settings_table_view_controller.h" +#include "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_local_commands.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.h" +#import "ios/chrome/browser/ui/settings/settings_navigation_controller.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_cells_constants.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_text_button_item.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_text_link_item.h" @@ -38,7 +38,7 @@ class ChromeBrowserState; } -@interface ClearBrowsingDataTableViewController ()< +@interface ClearBrowsingDataTableViewController () < TableViewTextLinkCellDelegate, ClearBrowsingDataConsumer> @@ -155,8 +155,8 @@ - (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath { - UITableViewCell* cellToReturn = - [super tableView:tableView cellForRowAtIndexPath:indexPath]; + UITableViewCell* cellToReturn = [super tableView:tableView + cellForRowAtIndexPath:indexPath]; TableViewItem* item = [self.tableViewModel itemAtIndexPath:indexPath]; switch (item.type) { case ItemTypeFooterSavedSiteData:
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_ui_constants.h b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_ui_constants.h new file mode 100644 index 0000000..d7e49b4 --- /dev/null +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_ui_constants.h
@@ -0,0 +1,12 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_UI_CONSTANTS_H_ +#define IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_UI_CONSTANTS_H_ + +#import <Foundation/Foundation.h> + +extern NSString* const kClearBrowsingDataButtonIdentifier; + +#endif // IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_CLEAR_BROWSING_DATA_UI_CONSTANTS_H_
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data_ui_constants.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_ui_constants.mm similarity index 79% rename from ios/chrome/browser/ui/settings/clear_browsing_data_ui_constants.mm rename to ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_ui_constants.mm index f7c6bc9..d7347fa9 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data_ui_constants.mm +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_ui_constants.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/ui/settings/clear_browsing_data_ui_constants.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_ui_constants.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.h b/ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_collection_view_controller.h similarity index 65% rename from ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.h rename to ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_collection_view_controller.h index ee4bdeb2..252d964 100644 --- a/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_collection_view_controller.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_TIME_RANGE_SELECTOR_COLLECTION_VIEW_CONTROLLER_H_ -#define IOS_CHROME_BROWSER_UI_SETTINGS_TIME_RANGE_SELECTOR_COLLECTION_VIEW_CONTROLLER_H_ +#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_TIME_RANGE_SELECTOR_COLLECTION_VIEW_CONTROLLER_H_ +#define IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_TIME_RANGE_SELECTOR_COLLECTION_VIEW_CONTROLLER_H_ #include "components/browsing_data/core/browsing_data_utils.h" #import "ios/chrome/browser/ui/settings/settings_root_collection_view_controller.h" @@ -11,7 +11,7 @@ class PrefService; @class TimeRangeSelectorCollectionViewController; -@protocol TimeRangeSelectorCollectionViewControllerDelegate<NSObject> +@protocol TimeRangeSelectorCollectionViewControllerDelegate <NSObject> // Informs the delegate that |timePeriod| was selected. - (void)timeRangeSelectorViewController: @@ -24,10 +24,10 @@ @interface TimeRangeSelectorCollectionViewController : SettingsRootCollectionViewController -- (instancetype) -initWithPrefs:(PrefService*)prefs - delegate:(id<TimeRangeSelectorCollectionViewControllerDelegate>)delegate - NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithPrefs:(PrefService*)prefs + delegate: + (id<TimeRangeSelectorCollectionViewControllerDelegate>) + delegate NS_DESIGNATED_INITIALIZER; - (instancetype)initWithLayout:(UICollectionViewLayout*)layout style:(CollectionViewControllerStyle)style @@ -40,4 +40,4 @@ @end -#endif // IOS_CHROME_BROWSER_UI_SETTINGS_TIME_RANGE_SELECTOR_COLLECTION_VIEW_CONTROLLER_H_ +#endif // IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_TIME_RANGE_SELECTOR_COLLECTION_VIEW_CONTROLLER_H_
diff --git a/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_collection_view_controller.mm similarity index 94% rename from ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.mm rename to ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_collection_view_controller.mm index 934e702..59769a8 100644 --- a/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_collection_view_controller.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_collection_view_controller.h" #import "base/mac/foundation_util.h" #include "base/stl_util.h" @@ -66,9 +66,10 @@ #pragma mark Initialization -- (instancetype) -initWithPrefs:(PrefService*)prefs - delegate:(id<TimeRangeSelectorCollectionViewControllerDelegate>)delegate { +- (instancetype)initWithPrefs:(PrefService*)prefs + delegate: + (id<TimeRangeSelectorCollectionViewControllerDelegate>) + delegate { UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; self = [super initWithLayout:layout style:CollectionViewControllerStyleDefault];
diff --git a/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller_unittest.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_collection_view_controller_unittest.mm similarity index 95% rename from ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller_unittest.mm rename to ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_collection_view_controller_unittest.mm index 1e4915d..de5d59fa 100644 --- a/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_collection_view_controller_unittest.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/time_range_selector_collection_view_controller.h" #include "base/files/file_path.h" #include "base/test/scoped_task_environment.h" @@ -125,8 +125,8 @@ UICollectionView* collectionView = time_range_selector_controller_.collectionView; for (NSInteger checkedItem = 0; checkedItem < kNumberOfItems; ++checkedItem) { - NSIndexPath* indexPath = - [NSIndexPath indexPathForItem:checkedItem inSection:0]; + NSIndexPath* indexPath = [NSIndexPath indexPathForItem:checkedItem + inSection:0]; [[delegate_ expect] timeRangeSelectorViewController:time_range_selector_controller_ didSelectTimePeriod:static_cast<browsing_data::TimePeriod>(
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data_ui_constants.h b/ios/chrome/browser/ui/settings/clear_browsing_data_ui_constants.h deleted file mode 100644 index 067115b..0000000 --- a/ios/chrome/browser/ui/settings/clear_browsing_data_ui_constants.h +++ /dev/null
@@ -1,12 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_UI_CONSTANTS_H_ -#define IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_UI_CONSTANTS_H_ - -#import <Foundation/Foundation.h> - -extern NSString* const kClearBrowsingDataButtonIdentifier; - -#endif // IOS_CHROME_BROWSER_UI_SETTINGS_CLEAR_BROWSING_DATA_UI_CONSTANTS_H_
diff --git a/ios/chrome/browser/ui/settings/google_services_settings_mediator.mm b/ios/chrome/browser/ui/settings/google_services_settings_mediator.mm index b2a7a76b..3af00e9 100644 --- a/ios/chrome/browser/ui/settings/google_services_settings_mediator.mm +++ b/ios/chrome/browser/ui/settings/google_services_settings_mediator.mm
@@ -227,7 +227,11 @@ self.accountItem.image = [self.resizedAvatarCache resizedAvatarForIdentity:identity]; self.accountItem.text = identity.userFullName; - self.accountItem.detailText = identity.userEmail; + if (self.syncSetupService->HasFinishedInitialSetup()) { + self.accountItem.detailText = identity.userEmail; + } else { + self.accountItem.detailText = GetNSString(IDS_IOS_SYNC_SETUP_IN_PROGRESS); + } } #pragma mark - Loads sync section @@ -609,6 +613,10 @@ - (void)onSyncStateChanged { [self updateSyncSection:YES]; + if (self.accountItem) { + [self configureIdentityAccountItem]; + [self.consumer reloadItem:self.accountItem]; + } } #pragma mark - IdentityManagerObserverBridgeDelegate
diff --git a/ios/chrome/browser/ui/settings/manage_sync_settings_consumer.h b/ios/chrome/browser/ui/settings/manage_sync_settings_consumer.h new file mode 100644 index 0000000..b5c7de99 --- /dev/null +++ b/ios/chrome/browser/ui/settings/manage_sync_settings_consumer.h
@@ -0,0 +1,21 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_MANAGE_SYNC_SETTINGS_CONSUMER_H_ +#define IOS_CHROME_BROWSER_UI_SETTINGS_MANAGE_SYNC_SETTINGS_CONSUMER_H_ + +#import <UIKit/UIKit.h> + +#import "ios/chrome/browser/ui/table_view/table_view_model.h" + +// Consumer protocol for manage sync settings. +@protocol ManageSyncSettingsConsumer <NSObject> + +// Returns the table view model. +@property(nonatomic, strong, readonly) + TableViewModel<TableViewItem*>* tableViewModel; + +@end + +#endif // IOS_CHROME_BROWSER_UI_SETTINGS_MANAGE_SYNC_SETTINGS_CONSUMER_H_
diff --git a/ios/chrome/browser/ui/settings/manage_sync_settings_coordinator.mm b/ios/chrome/browser/ui/settings/manage_sync_settings_coordinator.mm index 27318cd..73662393 100644 --- a/ios/chrome/browser/ui/settings/manage_sync_settings_coordinator.mm +++ b/ios/chrome/browser/ui/settings/manage_sync_settings_coordinator.mm
@@ -5,6 +5,7 @@ #import "ios/chrome/browser/ui/settings/manage_sync_settings_coordinator.h" #include "base/logging.h" +#import "ios/chrome/browser/ui/settings/manage_sync_settings_mediator.h" #import "ios/chrome/browser/ui/settings/manage_sync_settings_table_view_controller.h" #if !defined(__has_feature) || !__has_feature(objc_arc) @@ -17,16 +18,21 @@ // View controller. @property(nonatomic, strong) ManageSyncSettingsTableViewController* viewController; +// Mediator. +@property(nonatomic, strong) ManageSyncSettingsMediator* mediator; @end @implementation ManageSyncSettingsCoordinator - (void)start { + self.mediator = [[ManageSyncSettingsMediator alloc] init]; self.viewController = [[ManageSyncSettingsTableViewController alloc] initWithTableViewStyle:UITableViewStyleGrouped appBarStyle:ChromeTableViewControllerStyleNoAppBar]; self.viewController.presentationDelegate = self; + self.viewController.modelDelegate = self.mediator; + self.mediator.consumer = self.viewController; DCHECK(self.navigationController); [self.navigationController pushViewController:self.viewController animated:YES];
diff --git a/ios/chrome/browser/ui/settings/manage_sync_settings_mediator.h b/ios/chrome/browser/ui/settings/manage_sync_settings_mediator.h new file mode 100644 index 0000000..6103c24 --- /dev/null +++ b/ios/chrome/browser/ui/settings/manage_sync_settings_mediator.h
@@ -0,0 +1,22 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_MANAGE_SYNC_SETTINGS_MEDIATOR_H_ +#define IOS_CHROME_BROWSER_UI_SETTINGS_MANAGE_SYNC_SETTINGS_MEDIATOR_H_ + +#import <UIKit/UIKit.h> + +#import "ios/chrome/browser/ui/settings/manage_sync_settings_consumer.h" +#import "ios/chrome/browser/ui/settings/manage_sync_settings_view_controller_model_delegate.h" + +// Mediator for the manager sync settings. +@interface ManageSyncSettingsMediator + : NSObject <ManageSyncSettingsTableViewControllerModelDelegate> + +// Consumer. +@property(nonatomic, weak) id<ManageSyncSettingsConsumer> consumer; + +@end + +#endif // IOS_CHROME_BROWSER_UI_SETTINGS_MANAGE_SYNC_SETTINGS_MEDIATOR_H_
diff --git a/ios/chrome/browser/ui/settings/manage_sync_settings_mediator.mm b/ios/chrome/browser/ui/settings/manage_sync_settings_mediator.mm new file mode 100644 index 0000000..98f2411 --- /dev/null +++ b/ios/chrome/browser/ui/settings/manage_sync_settings_mediator.mm
@@ -0,0 +1,49 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/ui/settings/manage_sync_settings_mediator.h" + +#include "base/logging.h" +#include "ios/chrome/browser/sync/sync_setup_service.h" +#import "ios/chrome/browser/ui/list_model/list_model.h" +#import "ios/chrome/browser/ui/settings/cells/sync_switch_item.h" +#import "ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.h" +#include "ios/chrome/grit/ios_chromium_strings.h" +#include "ios/chrome/grit/ios_strings.h" +#include "ui/base/l10n/l10n_util.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +using l10n_util::GetNSString; + +namespace { + +// List of sections. +typedef NS_ENUM(NSInteger, SectionIdentifier) { + SyncDataTypeSectionIdentifier = kSectionIdentifierEnumZero, +}; + +} // namespace + +@implementation ManageSyncSettingsMediator + +#pragma mark - Loads sync data type section + +// Loads the sync data type section. +- (void)loadSyncDataTypeSection { + TableViewModel* model = self.consumer.tableViewModel; + [model addSectionWithIdentifier:SyncDataTypeSectionIdentifier]; +} + +#pragma mark - ManageSyncSettingsTableViewControllerModelDelegate + +- (void)manageSyncSettingsTableViewControllerLoadModel: + (id<ManageSyncSettingsConsumer>)controller { + DCHECK_EQ(self.consumer, controller); + [self loadSyncDataTypeSection]; +} + +@end
diff --git a/ios/chrome/browser/ui/settings/manage_sync_settings_table_view_controller.h b/ios/chrome/browser/ui/settings/manage_sync_settings_table_view_controller.h index 3395928..8b46d2a 100644 --- a/ios/chrome/browser/ui/settings/manage_sync_settings_table_view_controller.h +++ b/ios/chrome/browser/ui/settings/manage_sync_settings_table_view_controller.h
@@ -7,7 +7,10 @@ #import "ios/chrome/browser/ui/settings/settings_root_table_view_controller.h" +#import "ios/chrome/browser/ui/settings/manage_sync_settings_consumer.h" + @class ManageSyncSettingsTableViewController; +@protocol ManageSyncSettingsTableViewControllerModelDelegate; // Delegate for presentation events related to // ManageSyncSettingsTableViewController. @@ -21,12 +24,15 @@ // View controller to related to Manage sync settings view. @interface ManageSyncSettingsTableViewController - : SettingsRootTableViewController + : SettingsRootTableViewController <ManageSyncSettingsConsumer> // Presentation delegate. @property(nonatomic, weak) id<ManageSyncSettingsTableViewControllerPresentationDelegate> presentationDelegate; +@property(nonatomic, weak) + id<ManageSyncSettingsTableViewControllerModelDelegate> + modelDelegate; @end
diff --git a/ios/chrome/browser/ui/settings/manage_sync_settings_table_view_controller.mm b/ios/chrome/browser/ui/settings/manage_sync_settings_table_view_controller.mm index 1447ab2..1ad84ac 100644 --- a/ios/chrome/browser/ui/settings/manage_sync_settings_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/manage_sync_settings_table_view_controller.mm
@@ -4,6 +4,7 @@ #import "ios/chrome/browser/ui/settings/manage_sync_settings_table_view_controller.h" +#import "ios/chrome/browser/ui/settings/manage_sync_settings_view_controller_model_delegate.h" #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util_mac.h" @@ -22,6 +23,11 @@ self.title = l10n_util::GetNSString(IDS_IOS_MANAGE_SYNC_SETTINGS_TITLE); } +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self reloadData]; +} + #pragma mark - SettingsControllerProtocol - (void)viewControllerWasPopped { @@ -29,4 +35,11 @@ manageSyncSettingsTableViewControllerWasPopped:self]; } +#pragma mark - ChromeTableViewController + +- (void)loadModel { + [super loadModel]; + [self.modelDelegate manageSyncSettingsTableViewControllerLoadModel:self]; +} + @end
diff --git a/ios/chrome/browser/ui/settings/manage_sync_settings_view_controller_model_delegate.h b/ios/chrome/browser/ui/settings/manage_sync_settings_view_controller_model_delegate.h new file mode 100644 index 0000000..ec40581f --- /dev/null +++ b/ios/chrome/browser/ui/settings/manage_sync_settings_view_controller_model_delegate.h
@@ -0,0 +1,20 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_MANAGE_SYNC_SETTINGS_VIEW_CONTROLLER_MODEL_DELEGATE_H_ +#define IOS_CHROME_BROWSER_UI_SETTINGS_MANAGE_SYNC_SETTINGS_VIEW_CONTROLLER_MODEL_DELEGATE_H_ + +@protocol ManageSyncSettingsConsumer; + +// Delegate for ManageSyncSettingsTableViewController instance, to manage the +// model. +@protocol ManageSyncSettingsTableViewControllerModelDelegate <NSObject> + +// Called when the model should be loaded. +- (void)manageSyncSettingsTableViewControllerLoadModel: + (id<ManageSyncSettingsConsumer>)controller; + +@end + +#endif // IOS_CHROME_BROWSER_UI_SETTINGS_MANAGE_SYNC_SETTINGS_VIEW_CONTROLLER_MODEL_DELEGATE_H_
diff --git a/ios/chrome/browser/ui/settings/privacy_table_view_controller.mm b/ios/chrome/browser/ui/settings/privacy_table_view_controller.mm index 6814812..52bcbfa 100644 --- a/ios/chrome/browser/ui/settings/privacy_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/privacy_table_view_controller.mm
@@ -27,7 +27,7 @@ #import "ios/chrome/browser/ui/settings/cells/settings_detail_item.h" #import "ios/chrome/browser/ui/settings/cells/settings_switch_cell.h" #import "ios/chrome/browser/ui/settings/cells/settings_switch_item.h" -#import "ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_collection_view_controller.h" #import "ios/chrome/browser/ui/settings/dataplan_usage_table_view_controller.h" #import "ios/chrome/browser/ui/settings/handoff_table_view_controller.h" #import "ios/chrome/browser/ui/settings/settings_navigation_controller.h"
diff --git a/ios/chrome/browser/ui/settings/settings_navigation_controller.h b/ios/chrome/browser/ui/settings/settings_navigation_controller.h index 15a9994..d6613f6 100644 --- a/ios/chrome/browser/ui/settings/settings_navigation_controller.h +++ b/ios/chrome/browser/ui/settings/settings_navigation_controller.h
@@ -17,6 +17,9 @@ class ChromeBrowserState; } // namespace ios +// The accessibility identifier for the settings' "Done" button. +extern NSString* const kSettingsDoneButtonId; + @protocol SettingsControllerProtocol<NSObject> @optional
diff --git a/ios/chrome/browser/ui/settings/settings_navigation_controller.mm b/ios/chrome/browser/ui/settings/settings_navigation_controller.mm index 32738db..2aa1fff 100644 --- a/ios/chrome/browser/ui/settings/settings_navigation_controller.mm +++ b/ios/chrome/browser/ui/settings/settings_navigation_controller.mm
@@ -37,6 +37,8 @@ #error "This file requires ARC support." #endif +NSString* const kSettingsDoneButtonId = @"kSettingsDoneButtonId"; + @interface SettingsNavigationController () < GoogleServicesSettingsCoordinatorDelegate>
diff --git a/ios/chrome/browser/ui/settings/settings_root_collection_view_controller.mm b/ios/chrome/browser/ui/settings/settings_root_collection_view_controller.mm index 902e9675..83b61fd 100644 --- a/ios/chrome/browser/ui/settings/settings_root_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/settings_root_collection_view_controller.mm
@@ -14,7 +14,6 @@ #import "ios/chrome/browser/ui/material_components/chrome_app_bar_view_controller.h" #import "ios/chrome/browser/ui/settings/bar_button_activity_indicator.h" #import "ios/chrome/browser/ui/settings/settings_navigation_controller.h" -#import "ios/chrome/browser/ui/settings/settings_utils.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h" #include "ios/chrome/grit/ios_strings.h"
diff --git a/ios/chrome/browser/ui/settings/settings_table_view_controller.h b/ios/chrome/browser/ui/settings/settings_table_view_controller.h index 2b156f4..da528ab 100644 --- a/ios/chrome/browser/ui/settings/settings_table_view_controller.h +++ b/ios/chrome/browser/ui/settings/settings_table_view_controller.h
@@ -18,9 +18,6 @@ // The accessibility identifier of the settings TableView. extern NSString* const kSettingsTableViewId; -// The accessibility identifier for the settings' "Done" button. -extern NSString* const kSettingsDoneButtonId; - // The accessibility identifier of the sign in cell. extern NSString* const kSettingsSignInCellId;
diff --git a/ios/chrome/browser/ui/settings/settings_table_view_controller.mm b/ios/chrome/browser/ui/settings/settings_table_view_controller.mm index da447b0..79d97c1 100644 --- a/ios/chrome/browser/ui/settings/settings_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/settings_table_view_controller.mm
@@ -80,7 +80,6 @@ #endif NSString* const kSettingsTableViewId = @"kSettingsTableViewId"; -NSString* const kSettingsDoneButtonId = @"kSettingsDoneButtonId"; NSString* const kSettingsSignInCellId = @"kSettingsSignInCellId"; NSString* const kSettingsAccountCellId = @"kSettingsAccountCellId"; NSString* const kSettingsSearchEngineCellId = @"Search Engine";
diff --git a/ios/chrome/browser/web/navigation_egtest.mm b/ios/chrome/browser/web/navigation_egtest.mm index 4298eac0..59b25c15 100644 --- a/ios/chrome/browser/web/navigation_egtest.mm +++ b/ios/chrome/browser/web/navigation_egtest.mm
@@ -327,15 +327,7 @@ } // Test back-and-forward navigation from and to NTP. -// TODO(crbug.com/876449): Fix flakiness and re-enable. -#if TARGET_IPHONE_SIMULATOR -#define MAYBE_testHistoryBackAndForwardAroundNTP \ - testOpenImageInNewTabFromContextMenu -#else -#define MAYBE_testHistoryBackAndForwardAroundNTP \ - FLAKY_testHistoryBackAndForwardAroundNTP -#endif -- (void)MAYBE_testHistoryBackAndForwardAroundNTP { +- (void)testHistoryBackAndForwardAroundNTP { GREYAssertTrue(self.testServer->Start(), @"Test server failed to start."); const GURL testURL = self.testServer->GetURL(kSimpleFileBasedTestURL); [ChromeEarlGrey loadURL:testURL];
diff --git a/ios/chrome/test/BUILD.gn b/ios/chrome/test/BUILD.gn index edfb0b2a..f13c7ba 100644 --- a/ios/chrome/test/BUILD.gn +++ b/ios/chrome/test/BUILD.gn
@@ -227,6 +227,7 @@ "//ios/chrome/browser/ui/settings:unit_tests", "//ios/chrome/browser/ui/settings/cells:unit_tests", "//ios/chrome/browser/ui/settings/cells/legacy:unit_tests", + "//ios/chrome/browser/ui/settings/clear_browsing_data:unit_tests", "//ios/chrome/browser/ui/side_swipe:unit_tests", "//ios/chrome/browser/ui/snackbar:unit_tests", "//ios/chrome/browser/ui/static_content:unit_tests",
diff --git a/ios/chrome/test/app/BUILD.gn b/ios/chrome/test/app/BUILD.gn index 6391c65..6f34eac 100644 --- a/ios/chrome/test/app/BUILD.gn +++ b/ios/chrome/test/app/BUILD.gn
@@ -71,6 +71,7 @@ "//ios/chrome/browser/ui/main:tab_switcher", "//ios/chrome/browser/ui/ntp:ntp_controller", "//ios/chrome/browser/ui/settings", + "//ios/chrome/browser/ui/settings:settings_root", "//ios/chrome/browser/ui/settings:test_support", "//ios/chrome/browser/ui/static_content", "//ios/chrome/browser/ui/tabs",
diff --git a/ios/chrome/test/earl_grey/BUILD.gn b/ios/chrome/test/earl_grey/BUILD.gn index 3ee84360..b8cb504 100644 --- a/ios/chrome/test/earl_grey/BUILD.gn +++ b/ios/chrome/test/earl_grey/BUILD.gn
@@ -70,6 +70,7 @@ chrome_ios_eg_test("ios_chrome_settings_egtests") { deps = [ "//ios/chrome/browser/ui/settings:eg_tests", + "//ios/chrome/browser/ui/settings/clear_browsing_data:eg_tests", ] } @@ -242,6 +243,7 @@ "//ios/chrome/browser/ui/popup_menu:constants", "//ios/chrome/browser/ui/settings:settings", "//ios/chrome/browser/ui/settings/cells", + "//ios/chrome/browser/ui/settings/clear_browsing_data", "//ios/chrome/browser/ui/static_content", "//ios/chrome/browser/ui/table_view/cells", "//ios/chrome/browser/ui/toolbar/buttons",
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey_ui.mm b/ios/chrome/test/earl_grey/chrome_earl_grey_ui.mm index a867b99..457d8ad 100644 --- a/ios/chrome/test/earl_grey/chrome_earl_grey_ui.mm +++ b/ios/chrome/test/earl_grey/chrome_earl_grey_ui.mm
@@ -9,7 +9,7 @@ #import "ios/chrome/browser/ui/history/history_ui_constants.h" #import "ios/chrome/browser/ui/popup_menu/popup_menu_constants.h" #import "ios/chrome/browser/ui/settings/accounts_table_view_controller.h" -#import "ios/chrome/browser/ui/settings/clear_browsing_data_ui_constants.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_ui_constants.h" #import "ios/chrome/browser/ui/settings/privacy_table_view_controller.h" #import "ios/chrome/browser/ui/settings/settings_table_view_controller.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_url_item.h"
diff --git a/ios/chrome/test/earl_grey/chrome_matchers.mm b/ios/chrome/test/earl_grey/chrome_matchers.mm index dca2ce6..1dfaf332 100644 --- a/ios/chrome/test/earl_grey/chrome_matchers.mm +++ b/ios/chrome/test/earl_grey/chrome_matchers.mm
@@ -26,8 +26,8 @@ #import "ios/chrome/browser/ui/settings/cells/clear_browsing_data_constants.h" #import "ios/chrome/browser/ui/settings/cells/settings_switch_cell.h" #import "ios/chrome/browser/ui/settings/cells/settings_switch_item.h" -#import "ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.h" -#import "ios/chrome/browser/ui/settings/clear_browsing_data_ui_constants.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_collection_view_controller.h" +#import "ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_ui_constants.h" #import "ios/chrome/browser/ui/settings/import_data_table_view_controller.h" #import "ios/chrome/browser/ui/settings/settings_table_view_controller.h" #import "ios/chrome/browser/ui/settings/sync_settings_collection_view_controller.h"
diff --git a/ios/web/navigation/history_state_operations_inttest.mm b/ios/web/navigation/history_state_operations_inttest.mm index 4ab19cb..4766184 100644 --- a/ios/web/navigation/history_state_operations_inttest.mm +++ b/ios/web/navigation/history_state_operations_inttest.mm
@@ -489,7 +489,7 @@ EXPECT_TRUE(completed); } -INSTANTIATE_TEST_CASE_P(ProgrammaticHistoryStateOperationsTest, - HistoryStateOperationsTest, - ::testing::Values(NavigationManagerChoice::LEGACY, - NavigationManagerChoice::WK_BASED)); +INSTANTIATE_TEST_SUITE_P(ProgrammaticHistoryStateOperationsTest, + HistoryStateOperationsTest, + ::testing::Values(NavigationManagerChoice::LEGACY, + NavigationManagerChoice::WK_BASED));
diff --git a/ios/web/navigation/navigation_manager_impl_unittest.mm b/ios/web/navigation/navigation_manager_impl_unittest.mm index eeac0fc..638a01f 100644 --- a/ios/web/navigation/navigation_manager_impl_unittest.mm +++ b/ios/web/navigation/navigation_manager_impl_unittest.mm
@@ -2589,7 +2589,7 @@ last_committed_item->GetReferrer().url); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ProgrammaticNavigationManagerTest, NavigationManagerTest, ::testing::Values(
diff --git a/ios/web/navigation/navigation_manager_util_unittest.mm b/ios/web/navigation/navigation_manager_util_unittest.mm index a908f84b..b8df4db 100644 --- a/ios/web/navigation/navigation_manager_util_unittest.mm +++ b/ios/web/navigation/navigation_manager_util_unittest.mm
@@ -89,7 +89,7 @@ EXPECT_EQ(-1, GetCommittedItemIndexWithUniqueID(manager_.get(), unique_id)); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ProgrammaticNavigationManagerUtilTest, NavigationManagerUtilTest, ::testing::Values(true /* test_legacy_navigation_manager */));
diff --git a/ios/web/navigation/wk_navigation_util.mm b/ios/web/navigation/wk_navigation_util.mm index b684a59f..55fc4d3 100644 --- a/ios/web/navigation/wk_navigation_util.mm +++ b/ios/web/navigation/wk_navigation_util.mm
@@ -77,9 +77,24 @@ } bool URLNeedsUserAgentType(const GURL& url) { - return !web::GetWebClient()->IsAppSpecificURL(url) && - !(url.SchemeIs(url::kFileScheme) && !IsRestoreSessionUrl(url)) && - !(url.SchemeIs(url::kAboutScheme) && !IsPlaceholderUrl(url)); + if (web::GetWebClient()->IsAppSpecificURL(url)) + return false; + + if (url.SchemeIs(url::kAboutScheme) && IsPlaceholderUrl(url)) { + return !web::GetWebClient()->IsAppSpecificURL( + ExtractUrlFromPlaceholderUrl(url)); + } + + if (url.SchemeIs(url::kAboutScheme)) + return false; + + if (url.SchemeIs(url::kFileScheme) && IsRestoreSessionUrl(url)) + return true; + + if (url.SchemeIs(url::kFileScheme)) + return false; + + return true; } GURL GetRestoreSessionBaseUrl() {
diff --git a/ios/web/navigation/wk_navigation_util_unittest.mm b/ios/web/navigation/wk_navigation_util_unittest.mm index 20dd44b..08320c5 100644 --- a/ios/web/navigation/wk_navigation_util_unittest.mm +++ b/ios/web/navigation/wk_navigation_util_unittest.mm
@@ -18,6 +18,7 @@ #import "net/base/mac/url_conversions.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h" +#include "url/scheme_host_port.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." @@ -306,6 +307,12 @@ // file:// URL. EXPECT_FALSE(URLNeedsUserAgentType(GURL("file://foo.pdf"))); + + // App specific URL or a placeholder for an app specific URL. + GURL app_specific( + url::SchemeHostPort(kTestAppSpecificScheme, "foo", 0).Serialize()); + EXPECT_FALSE(URLNeedsUserAgentType(app_specific)); + EXPECT_FALSE(URLNeedsUserAgentType(CreatePlaceholderUrlForUrl(app_specific))); } } // namespace wk_navigation_util
diff --git a/ios/web/net/cookies/wk_http_system_cookie_store_unittest.mm b/ios/web/net/cookies/wk_http_system_cookie_store_unittest.mm index ad1c1da2..88363fe 100644 --- a/ios/web/net/cookies/wk_http_system_cookie_store_unittest.mm +++ b/ios/web/net/cookies/wk_http_system_cookie_store_unittest.mm
@@ -104,8 +104,8 @@ }; API_AVAILABLE(ios(11.0)) -INSTANTIATE_TYPED_TEST_CASE_P(WKHTTPSystemCookieStore, - SystemCookieStoreTest, - WKHTTPSystemCookieStoreTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(WKHTTPSystemCookieStore, + SystemCookieStoreTest, + WKHTTPSystemCookieStoreTestDelegate); } // namespace net
diff --git a/ios/web/web_state/bad_ssl_response_inttest.mm b/ios/web/web_state/bad_ssl_response_inttest.mm index 4b9db73..cd52253 100644 --- a/ios/web/web_state/bad_ssl_response_inttest.mm +++ b/ios/web/web_state/bad_ssl_response_inttest.mm
@@ -85,7 +85,7 @@ EXPECT_EQ(url.host(), ssl_info.cert->subject().GetDisplayName()); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ProgrammaticBadSslResponseTest, BadSslResponseTest, ::testing::Values(
diff --git a/ios/web/web_state/error_page_inttest.mm b/ios/web/web_state/error_page_inttest.mm index f58df42b..6cca6c83 100644 --- a/ios/web/web_state/error_page_inttest.mm +++ b/ios/web/web_state/error_page_inttest.mm
@@ -257,8 +257,8 @@ web_state(), "domain: NSURLErrorDomain code: -1005 post: 1 otr: 0")); } -INSTANTIATE_TEST_CASE_P(ProgrammaticErrorPageTest, - ErrorPageTest, - ::testing::Values(NavigationManagerChoice::LEGACY, - NavigationManagerChoice::WK_BASED)); +INSTANTIATE_TEST_SUITE_P(ProgrammaticErrorPageTest, + ErrorPageTest, + ::testing::Values(NavigationManagerChoice::LEGACY, + NavigationManagerChoice::WK_BASED)); } // namespace web
diff --git a/ios/web/web_state/web_frame_web_state_observer_inttest.mm b/ios/web/web_state/web_frame_web_state_observer_inttest.mm index d8a2d63..decd65d 100644 --- a/ios/web/web_state/web_frame_web_state_observer_inttest.mm +++ b/ios/web/web_state/web_frame_web_state_observer_inttest.mm
@@ -153,9 +153,9 @@ web_state()->RemoveObserver(&observer); } -INSTANTIATE_TEST_CASE_P(ProgrammaticWebFrameWebStateObserverInttest, - WebFrameWebStateObserverInttest, - ::testing::Values(NavigationManagerChoice::LEGACY, - NavigationManagerChoice::WK_BASED)); +INSTANTIATE_TEST_SUITE_P(ProgrammaticWebFrameWebStateObserverInttest, + WebFrameWebStateObserverInttest, + ::testing::Values(NavigationManagerChoice::LEGACY, + NavigationManagerChoice::WK_BASED)); } // namespace web
diff --git a/ios/web/web_state/web_frames_manager_inttest.mm b/ios/web/web_state/web_frames_manager_inttest.mm index e490a29..6c10944 100644 --- a/ios/web/web_state/web_frames_manager_inttest.mm +++ b/ios/web/web_state/web_frames_manager_inttest.mm
@@ -227,9 +227,9 @@ EXPECT_EQ(main_web_frame, frames_manager->GetMainWebFrame()); }; -INSTANTIATE_TEST_CASE_P(ProgrammaticWebFramesManagerTest, - WebFramesManagerTest, - ::testing::Values(NavigationManagerChoice::LEGACY, - NavigationManagerChoice::WK_BASED)); +INSTANTIATE_TEST_SUITE_P(ProgrammaticWebFramesManagerTest, + WebFramesManagerTest, + ::testing::Values(NavigationManagerChoice::LEGACY, + NavigationManagerChoice::WK_BASED)); } // namespace web
diff --git a/ios/web/web_state/web_state_impl_unittest.mm b/ios/web/web_state/web_state_impl_unittest.mm index 1623f522..d84b1f69 100644 --- a/ios/web/web_state/web_state_impl_unittest.mm +++ b/ios/web/web_state/web_state_impl_unittest.mm
@@ -1041,9 +1041,9 @@ EXPECT_FALSE(observer.did_change_visible_security_state_info()); } -INSTANTIATE_TEST_CASE_P(ProgrammaticWebStateImplTest, - WebStateImplTest, - ::testing::Values(NavigationManagerChoice::LEGACY, - NavigationManagerChoice::WK_BASED)); +INSTANTIATE_TEST_SUITE_P(ProgrammaticWebStateImplTest, + WebStateImplTest, + ::testing::Values(NavigationManagerChoice::LEGACY, + NavigationManagerChoice::WK_BASED)); } // namespace web
diff --git a/ios/web/web_state/web_state_observer_inttest.mm b/ios/web/web_state/web_state_observer_inttest.mm index 5ee2eea8..35f3561 100644 --- a/ios/web/web_state/web_state_observer_inttest.mm +++ b/ios/web/web_state/web_state_observer_inttest.mm
@@ -2451,7 +2451,7 @@ ASSERT_TRUE(LoadWithParams(params)); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ProgrammaticWebStateObserverTest, WebStateObserverTest, ::testing::Values(
diff --git a/ios/web/web_state/web_state_unittest.mm b/ios/web/web_state/web_state_unittest.mm index d5c1a60..5682e39 100644 --- a/ios/web/web_state/web_state_unittest.mm +++ b/ios/web/web_state/web_state_unittest.mm
@@ -625,7 +625,7 @@ kTestSessionStoragePageText)); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( ProgrammaticWebStateTest, WebStateTest, ::testing::Values(
diff --git a/ipc/ipc_mojo_perftest.cc b/ipc/ipc_mojo_perftest.cc index 0f66ee53..373d2a3 100644 --- a/ipc/ipc_mojo_perftest.cc +++ b/ipc/ipc_mojo_perftest.cc
@@ -635,10 +635,10 @@ RunPingPongServer(server_handle, "SingleProcess"); } -INSTANTIATE_TEST_CASE_P(, - MojoInProcessInterfacePerfTest, - testing::Values(InProcessMessageMode::kSerialized, - InProcessMessageMode::kUnserialized)); +INSTANTIATE_TEST_SUITE_P(, + MojoInProcessInterfacePerfTest, + testing::Values(InProcessMessageMode::kSerialized, + InProcessMessageMode::kUnserialized)); TEST_P(MojoInProcessInterfacePassingPerfTest, MultiThreadInterfacePassing) { MojoHandle server_handle, client_handle; @@ -700,10 +700,10 @@ true /* associated */); } -INSTANTIATE_TEST_CASE_P(, - MojoInProcessInterfacePassingPerfTest, - testing::Values(InProcessMessageMode::kSerialized, - InProcessMessageMode::kUnserialized)); +INSTANTIATE_TEST_SUITE_P(, + MojoInProcessInterfacePassingPerfTest, + testing::Values(InProcessMessageMode::kSerialized, + InProcessMessageMode::kUnserialized)); class CallbackPerfTest : public testing::Test { public:
diff --git a/net/cert/cert_verify_proc_unittest.cc b/net/cert/cert_verify_proc_unittest.cc index 914427d..bdc3df2 100644 --- a/net/cert/cert_verify_proc_unittest.cc +++ b/net/cert/cert_verify_proc_unittest.cc
@@ -773,10 +773,10 @@ scoped_refptr<CertVerifyProc> verify_proc_; }; -INSTANTIATE_TEST_CASE_P(, - CertVerifyProcInternalTest, - testing::ValuesIn(kAllCertVerifiers), - VerifyProcTypeToName); +INSTANTIATE_TEST_SUITE_P(, + CertVerifyProcInternalTest, + testing::ValuesIn(kAllCertVerifiers), + VerifyProcTypeToName); // Tests that a certificate is recognized as EV, when the valid EV policy OID // for the trust anchor is the second candidate EV oid in the target @@ -2707,10 +2707,10 @@ request_handlers_; }; -INSTANTIATE_TEST_CASE_P(, - CertVerifyProcInternalWithNetFetchingTest, - testing::ValuesIn(kAllCertVerifiers), - VerifyProcTypeToName); +INSTANTIATE_TEST_SUITE_P(, + CertVerifyProcInternalWithNetFetchingTest, + testing::ValuesIn(kAllCertVerifiers), + VerifyProcTypeToName); // Tries verifying a certificate chain that is missing an intermediate. The // intermediate is available via AIA, however the server responds with a 404. @@ -3234,9 +3234,9 @@ {"weak_digest_md2_root.pem", "weak_digest_sha1_intermediate.pem", "weak_digest_sha1_ee.pem", EXPECT_SHA1 | EXPECT_SHA1_LEAF}, }; -INSTANTIATE_TEST_CASE_P(VerifyRoot, - CertVerifyProcWeakDigestTest, - testing::ValuesIn(kVerifyRootCATestData)); +INSTANTIATE_TEST_SUITE_P(VerifyRoot, + CertVerifyProcWeakDigestTest, + testing::ValuesIn(kVerifyRootCATestData)); // The signature algorithm of intermediates should be properly detected. const WeakDigestTestData kVerifyIntermediateCATestData[] = { @@ -3248,9 +3248,9 @@ "weak_digest_sha1_ee.pem", EXPECT_MD2 | EXPECT_SHA1 | EXPECT_SHA1_LEAF}, }; -INSTANTIATE_TEST_CASE_P(VerifyIntermediate, - CertVerifyProcWeakDigestTest, - testing::ValuesIn(kVerifyIntermediateCATestData)); +INSTANTIATE_TEST_SUITE_P(VerifyIntermediate, + CertVerifyProcWeakDigestTest, + testing::ValuesIn(kVerifyIntermediateCATestData)); // The signature algorithm of end-entity should be properly detected. const WeakDigestTestData kVerifyEndEntityTestData[] = { @@ -3262,9 +3262,9 @@ "weak_digest_md2_ee.pem", EXPECT_MD2 | EXPECT_SHA1}, }; -INSTANTIATE_TEST_CASE_P(VerifyEndEntity, - CertVerifyProcWeakDigestTest, - testing::ValuesIn(kVerifyEndEntityTestData)); +INSTANTIATE_TEST_SUITE_P(VerifyEndEntity, + CertVerifyProcWeakDigestTest, + testing::ValuesIn(kVerifyEndEntityTestData)); // Incomplete chains do not report the status of the intermediate. // Note: really each of these tests should also expect the digest algorithm of @@ -3280,7 +3280,7 @@ /*EXPECT_MD2 |*/ EXPECT_SHA1 | EXPECT_SHA1_LEAF}, }; -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( MAYBE_VerifyIncompleteIntermediate, CertVerifyProcWeakDigestTest, testing::ValuesIn(kVerifyIncompleteIntermediateTestData)); @@ -3299,9 +3299,9 @@ /*EXPECT_SHA1 |*/ EXPECT_MD2}, }; -INSTANTIATE_TEST_CASE_P(VerifyIncompleteEndEntity, - CertVerifyProcWeakDigestTest, - testing::ValuesIn(kVerifyIncompleteEETestData)); +INSTANTIATE_TEST_SUITE_P(VerifyIncompleteEndEntity, + CertVerifyProcWeakDigestTest, + testing::ValuesIn(kVerifyIncompleteEETestData)); // Differing algorithms between the intermediate and the EE should still be // reported. @@ -3314,9 +3314,9 @@ "weak_digest_md2_ee.pem", EXPECT_MD2 | EXPECT_MD4}, }; -INSTANTIATE_TEST_CASE_P(VerifyMixed, - CertVerifyProcWeakDigestTest, - testing::ValuesIn(kVerifyMixedTestData)); +INSTANTIATE_TEST_SUITE_P(VerifyMixed, + CertVerifyProcWeakDigestTest, + testing::ValuesIn(kVerifyMixedTestData)); // The EE is a trusted certificate. Even though it uses weak hashes, these // should not be reported. @@ -3327,9 +3327,9 @@ {NULL, NULL, "weak_digest_sha1_ee.pem", 0}, }; -INSTANTIATE_TEST_CASE_P(VerifyTrustedEE, - CertVerifyProcWeakDigestTest, - testing::ValuesIn(kVerifyTrustedEETestData)); +INSTANTIATE_TEST_SUITE_P(VerifyTrustedEE, + CertVerifyProcWeakDigestTest, + testing::ValuesIn(kVerifyTrustedEETestData)); // Test fixture for verifying certificate names. class CertVerifyProcNameTest : public ::testing::Test {
diff --git a/net/cert/ct_log_verifier_unittest.cc b/net/cert/ct_log_verifier_unittest.cc index 01f0c0e..fb95e22c 100644 --- a/net/cert/ct_log_verifier_unittest.cc +++ b/net/cert/ct_log_verifier_unittest.cc
@@ -543,10 +543,10 @@ HexToBytes(new_root), proof); } -INSTANTIATE_TEST_CASE_P(KnownGoodProofs, - CTLogVerifierConsistencyProofTest, - ::testing::Range(size_t(0), - base::size(kConsistencyProofs))); +INSTANTIATE_TEST_SUITE_P(KnownGoodProofs, + CTLogVerifierConsistencyProofTest, + ::testing::Range(size_t(0), + base::size(kConsistencyProofs))); class CTLogVerifierAuditProofTest : public CTLogVerifierTest, @@ -563,9 +563,9 @@ HexToBytes(kLeafHashes[test_vector.leaf])); } -INSTANTIATE_TEST_CASE_P(KnownGoodProofs, - CTLogVerifierAuditProofTest, - ::testing::Range(size_t(0), base::size(kAuditProofs))); +INSTANTIATE_TEST_SUITE_P(KnownGoodProofs, + CTLogVerifierAuditProofTest, + ::testing::Range(size_t(0), base::size(kAuditProofs))); TEST_F(CTLogVerifierTest, VerifiesAuditProofEdgeCases_InvalidLeafIndex) { std::vector<std::string> proof; @@ -753,9 +753,9 @@ // Test verification of consistency proofs and audit proofs for all tree sizes // from 0 to 128. -INSTANTIATE_TEST_CASE_P(RangeOfTreeSizes, - CTLogVerifierTestUsingGenerator, - testing::Range(size_t(0), size_t(129))); +INSTANTIATE_TEST_SUITE_P(RangeOfTreeSizes, + CTLogVerifierTestUsingGenerator, + testing::Range(size_t(0), size_t(129))); } // namespace
diff --git a/net/cert/internal/cert_issuer_source_static_unittest.cc b/net/cert/internal/cert_issuer_source_static_unittest.cc index 627757f6..9dd45d0 100644 --- a/net/cert/internal/cert_issuer_source_static_unittest.cc +++ b/net/cert/internal/cert_issuer_source_static_unittest.cc
@@ -24,13 +24,13 @@ CertIssuerSourceStatic source_; }; -INSTANTIATE_TYPED_TEST_CASE_P(CertIssuerSourceStaticTest, - CertIssuerSourceSyncTest, - CertIssuerSourceStaticTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(CertIssuerSourceStaticTest, + CertIssuerSourceSyncTest, + CertIssuerSourceStaticTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(CertIssuerSourceStaticNormalizationTest, - CertIssuerSourceSyncNormalizationTest, - CertIssuerSourceStaticTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(CertIssuerSourceStaticNormalizationTest, + CertIssuerSourceSyncNormalizationTest, + CertIssuerSourceStaticTestDelegate); } // namespace
diff --git a/net/cert/internal/cert_issuer_source_sync_unittest.h b/net/cert/internal/cert_issuer_source_sync_unittest.h index cf3eb426..b8f148c 100644 --- a/net/cert/internal/cert_issuer_source_sync_unittest.h +++ b/net/cert/internal/cert_issuer_source_sync_unittest.h
@@ -124,7 +124,7 @@ scoped_refptr<ParsedCertificate> e2_; }; -TYPED_TEST_CASE_P(CertIssuerSourceSyncTest); +TYPED_TEST_SUITE_P(CertIssuerSourceSyncTest); TYPED_TEST_P(CertIssuerSourceSyncTest, NoMatch) { this->AddCert(this->root_); @@ -166,17 +166,17 @@ // These are all the tests that should have the same result with or without // normalization. -REGISTER_TYPED_TEST_CASE_P(CertIssuerSourceSyncTest, - NoMatch, - OneMatch, - MultipleMatches, - SelfIssued, - IsNotAsync); +REGISTER_TYPED_TEST_SUITE_P(CertIssuerSourceSyncTest, + NoMatch, + OneMatch, + MultipleMatches, + SelfIssued, + IsNotAsync); template <typename TestDelegate> class CertIssuerSourceSyncNormalizationTest : public CertIssuerSourceSyncTest<TestDelegate> {}; -TYPED_TEST_CASE_P(CertIssuerSourceSyncNormalizationTest); +TYPED_TEST_SUITE_P(CertIssuerSourceSyncNormalizationTest); TYPED_TEST_P(CertIssuerSourceSyncNormalizationTest, MultipleMatchesAfterNormalization) { @@ -187,13 +187,13 @@ } // These tests require (utf8) normalization. -REGISTER_TYPED_TEST_CASE_P(CertIssuerSourceSyncNormalizationTest, - MultipleMatchesAfterNormalization); +REGISTER_TYPED_TEST_SUITE_P(CertIssuerSourceSyncNormalizationTest, + MultipleMatchesAfterNormalization); template <typename TestDelegate> class CertIssuerSourceSyncNotNormalizedTest : public CertIssuerSourceSyncTest<TestDelegate> {}; -TYPED_TEST_CASE_P(CertIssuerSourceSyncNotNormalizedTest); +TYPED_TEST_SUITE_P(CertIssuerSourceSyncNotNormalizedTest); TYPED_TEST_P(CertIssuerSourceSyncNotNormalizedTest, OneMatchWithoutNormalization) { @@ -206,8 +206,8 @@ } // These tests are for implementations which do not do utf8 normalization. -REGISTER_TYPED_TEST_CASE_P(CertIssuerSourceSyncNotNormalizedTest, - OneMatchWithoutNormalization); +REGISTER_TYPED_TEST_SUITE_P(CertIssuerSourceSyncNotNormalizedTest, + OneMatchWithoutNormalization); } // namespace net
diff --git a/net/cert/internal/certificate_policies_unittest.cc b/net/cert/internal/certificate_policies_unittest.cc index c9c1995..ce142b12 100644 --- a/net/cert/internal/certificate_policies_unittest.cc +++ b/net/cert/internal/certificate_policies_unittest.cc
@@ -34,9 +34,9 @@ // Run the tests with all possible values for // |fail_parsing_unknown_qualifier_oids|. -INSTANTIATE_TEST_CASE_P(, - ParseCertificatePoliciesExtensionTest, - testing::Bool()); +INSTANTIATE_TEST_SUITE_P(, + ParseCertificatePoliciesExtensionTest, + testing::Bool()); TEST_P(ParseCertificatePoliciesExtensionTest, InvalidEmpty) { std::string der;
diff --git a/net/cert/internal/name_constraints_unittest.cc b/net/cert/internal/name_constraints_unittest.cc index e98e21d..c5c556e 100644 --- a/net/cert/internal/name_constraints_unittest.cc +++ b/net/cert/internal/name_constraints_unittest.cc
@@ -82,9 +82,9 @@ // Run the tests with the name constraints marked critical and non-critical. For // supported name types, the results should be the same for both. -INSTANTIATE_TEST_CASE_P(InstantiationName, - ParseNameConstraints, - ::testing::Values(true, false)); +INSTANTIATE_TEST_SUITE_P(InstantiationName, + ParseNameConstraints, + ::testing::Values(true, false)); TEST_P(ParseNameConstraints, DNSNames) { std::string a;
diff --git a/net/cert/internal/nist_pkits_unittest.h b/net/cert/internal/nist_pkits_unittest.h index 18d924a..4202e9d 100644 --- a/net/cert/internal/nist_pkits_unittest.h +++ b/net/cert/internal/nist_pkits_unittest.h
@@ -79,8 +79,8 @@ // Parameterized test class for PKITS tests. // The instantiating code should define a PkitsTestDelegate with an appropriate -// static RunTest method, and then INSTANTIATE_TYPED_TEST_CASE_P for each -// testcase (each TYPED_TEST_CASE_P in pkits_testcases-inl.h). +// static RunTest method, and then INSTANTIATE_TYPED_TEST_SUITE_P for each +// testcase (each TYPED_TEST_SUITE_P in pkits_testcases-inl.h). template <typename PkitsTestDelegate> class PkitsTest : public ::testing::Test { public:
diff --git a/net/cert/internal/ocsp_unittest.cc b/net/cert/internal/ocsp_unittest.cc index c84048a..03d6d5e 100644 --- a/net/cert/internal/ocsp_unittest.cc +++ b/net/cert/internal/ocsp_unittest.cc
@@ -123,10 +123,10 @@ } }; -INSTANTIATE_TEST_CASE_P(, - CheckOCSPTest, - ::testing::ValuesIn(kTestParams), - PrintTestName()); +INSTANTIATE_TEST_SUITE_P(, + CheckOCSPTest, + ::testing::ValuesIn(kTestParams), + PrintTestName()); TEST_P(CheckOCSPTest, FromFile) { const TestParams& params = GetParam(); @@ -308,9 +308,9 @@ class CreateOCSPGetURLTest : public ::testing::TestWithParam<base::StringPiece> {}; -INSTANTIATE_TEST_CASE_P(, - CreateOCSPGetURLTest, - ::testing::ValuesIn(kGetURLTestParams)); +INSTANTIATE_TEST_SUITE_P(, + CreateOCSPGetURLTest, + ::testing::ValuesIn(kGetURLTestParams)); TEST_P(CreateOCSPGetURLTest, Basic) { std::string ca_data;
diff --git a/net/cert/internal/path_builder_pkits_unittest.cc b/net/cert/internal/path_builder_pkits_unittest.cc index 5bec8a6..9c0d90e 100644 --- a/net/cert/internal/path_builder_pkits_unittest.cc +++ b/net/cert/internal/path_builder_pkits_unittest.cc
@@ -80,43 +80,42 @@ } // namespace - -INSTANTIATE_TYPED_TEST_CASE_P(PathBuilder, - PkitsTest01SignatureVerification, - PathBuilderPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(PathBuilder, - PkitsTest02ValidityPeriods, - PathBuilderPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(PathBuilder, - PkitsTest03VerifyingNameChaining, - PathBuilderPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(PathBuilder, - PkitsTest06VerifyingBasicConstraints, - PathBuilderPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(PathBuilder, - PkitsTest07KeyUsage, - PathBuilderPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(PathBuilder, - PkitsTest08CertificatePolicies, - PathBuilderPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(PathBuilder, - PkitsTest09RequireExplicitPolicy, - PathBuilderPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(PathBuilder, - PkitsTest10PolicyMappings, - PathBuilderPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(PathBuilder, - PkitsTest11InhibitPolicyMapping, - PathBuilderPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(PathBuilder, - PkitsTest12InhibitAnyPolicy, - PathBuilderPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(PathBuilder, - PkitsTest13NameConstraints, - PathBuilderPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(PathBuilder, - PkitsTest16PrivateCertificateExtensions, - PathBuilderPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, + PkitsTest01SignatureVerification, + PathBuilderPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, + PkitsTest02ValidityPeriods, + PathBuilderPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, + PkitsTest03VerifyingNameChaining, + PathBuilderPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, + PkitsTest06VerifyingBasicConstraints, + PathBuilderPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, + PkitsTest07KeyUsage, + PathBuilderPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, + PkitsTest08CertificatePolicies, + PathBuilderPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, + PkitsTest09RequireExplicitPolicy, + PathBuilderPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, + PkitsTest10PolicyMappings, + PathBuilderPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, + PkitsTest11InhibitPolicyMapping, + PathBuilderPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, + PkitsTest12InhibitAnyPolicy, + PathBuilderPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, + PkitsTest13NameConstraints, + PathBuilderPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, + PkitsTest16PrivateCertificateExtensions, + PathBuilderPkitsTestDelegate); // TODO(mattm): CRL support: PkitsTest04BasicCertificateRevocationTests, // PkitsTest05VerifyingPathswithSelfIssuedCertificates,
diff --git a/net/cert/internal/path_builder_verify_certificate_chain_unittest.cc b/net/cert/internal/path_builder_verify_certificate_chain_unittest.cc index 3fb8451..0e93720 100644 --- a/net/cert/internal/path_builder_verify_certificate_chain_unittest.cc +++ b/net/cert/internal/path_builder_verify_certificate_chain_unittest.cc
@@ -58,8 +58,8 @@ } // namespace -INSTANTIATE_TYPED_TEST_CASE_P(PathBuilder, - VerifyCertificateChainSingleRootTest, - PathBuilderTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(PathBuilder, + VerifyCertificateChainSingleRootTest, + PathBuilderTestDelegate); } // namespace net
diff --git a/net/cert/internal/simple_path_builder_delegate_unittest.cc b/net/cert/internal/simple_path_builder_delegate_unittest.cc index dd222a4..68dcd32 100644 --- a/net/cert/internal/simple_path_builder_delegate_unittest.cc +++ b/net/cert/internal/simple_path_builder_delegate_unittest.cc
@@ -60,9 +60,9 @@ "ecdsa-prime256v1-sha512.pem", }; -INSTANTIATE_TEST_CASE_P(, - SimplePathBuilderDelegate1024SuccessTest, - ::testing::ValuesIn(kSuccess1024Filenames)); +INSTANTIATE_TEST_SUITE_P(, + SimplePathBuilderDelegate1024SuccessTest, + ::testing::ValuesIn(kSuccess1024Filenames)); TEST_P(SimplePathBuilderDelegate1024SuccessTest, IsAcceptableSignatureAndKey) { std::unique_ptr<SignatureAlgorithm> signature_algorithm; @@ -87,9 +87,9 @@ const char* kFail2048Filenames[] = {"rsa-pkcs1-sha1.pem", "rsa-pkcs1-sha256.pem"}; -INSTANTIATE_TEST_CASE_P(, - SimplePathBuilderDelegate2048FailTest, - ::testing::ValuesIn(kFail2048Filenames)); +INSTANTIATE_TEST_SUITE_P(, + SimplePathBuilderDelegate2048FailTest, + ::testing::ValuesIn(kFail2048Filenames)); TEST_P(SimplePathBuilderDelegate2048FailTest, RsaKeySmallerThan2048) { std::unique_ptr<SignatureAlgorithm> signature_algorithm;
diff --git a/net/cert/internal/trust_store_nss_unittest.cc b/net/cert/internal/trust_store_nss_unittest.cc index d61267c..3ac8dd9f 100644 --- a/net/cert/internal/trust_store_nss_unittest.cc +++ b/net/cert/internal/trust_store_nss_unittest.cc
@@ -331,15 +331,15 @@ unsigned int nickname_counter_ = 0; }; -INSTANTIATE_TYPED_TEST_CASE_P(TrustStoreNSSTest2, - CertIssuerSourceSyncTest, - TrustStoreNSSTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(TrustStoreNSSTest2, + CertIssuerSourceSyncTest, + TrustStoreNSSTestDelegate); // NSS doesn't normalize UTF8String values, so use the not-normalized version of // those tests. -INSTANTIATE_TYPED_TEST_CASE_P(TrustStoreNSSNotNormalizedTest, - CertIssuerSourceSyncNotNormalizedTest, - TrustStoreNSSTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(TrustStoreNSSNotNormalizedTest, + CertIssuerSourceSyncNotNormalizedTest, + TrustStoreNSSTestDelegate); } // namespace
diff --git a/net/cert/internal/verify_certificate_chain_pkits_unittest.cc b/net/cert/internal/verify_certificate_chain_pkits_unittest.cc index 1040f3c3..2c8bf0b 100644 --- a/net/cert/internal/verify_certificate_chain_pkits_unittest.cc +++ b/net/cert/internal/verify_certificate_chain_pkits_unittest.cc
@@ -82,42 +82,42 @@ } // namespace -INSTANTIATE_TYPED_TEST_CASE_P(VerifyCertificateChain, - PkitsTest01SignatureVerification, - VerifyCertificateChainPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(VerifyCertificateChain, - PkitsTest02ValidityPeriods, - VerifyCertificateChainPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(VerifyCertificateChain, - PkitsTest03VerifyingNameChaining, - VerifyCertificateChainPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(VerifyCertificateChain, - PkitsTest06VerifyingBasicConstraints, - VerifyCertificateChainPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(VerifyCertificateChain, - PkitsTest07KeyUsage, - VerifyCertificateChainPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(VerifyCertificateChain, - PkitsTest08CertificatePolicies, - VerifyCertificateChainPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(VerifyCertificateChain, - PkitsTest09RequireExplicitPolicy, - VerifyCertificateChainPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(VerifyCertificateChain, - PkitsTest10PolicyMappings, - VerifyCertificateChainPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(VerifyCertificateChain, - PkitsTest11InhibitPolicyMapping, - VerifyCertificateChainPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(VerifyCertificateChain, - PkitsTest12InhibitAnyPolicy, - VerifyCertificateChainPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(VerifyCertificateChain, - PkitsTest13NameConstraints, - VerifyCertificateChainPkitsTestDelegate); -INSTANTIATE_TYPED_TEST_CASE_P(VerifyCertificateChain, - PkitsTest16PrivateCertificateExtensions, - VerifyCertificateChainPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain, + PkitsTest01SignatureVerification, + VerifyCertificateChainPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain, + PkitsTest02ValidityPeriods, + VerifyCertificateChainPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain, + PkitsTest03VerifyingNameChaining, + VerifyCertificateChainPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain, + PkitsTest06VerifyingBasicConstraints, + VerifyCertificateChainPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain, + PkitsTest07KeyUsage, + VerifyCertificateChainPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain, + PkitsTest08CertificatePolicies, + VerifyCertificateChainPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain, + PkitsTest09RequireExplicitPolicy, + VerifyCertificateChainPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain, + PkitsTest10PolicyMappings, + VerifyCertificateChainPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain, + PkitsTest11InhibitPolicyMapping, + VerifyCertificateChainPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain, + PkitsTest12InhibitAnyPolicy, + VerifyCertificateChainPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain, + PkitsTest13NameConstraints, + VerifyCertificateChainPkitsTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain, + PkitsTest16PrivateCertificateExtensions, + VerifyCertificateChainPkitsTestDelegate); // TODO(mattm): CRL support: PkitsTest04BasicCertificateRevocationTests, // PkitsTest05VerifyingPathswithSelfIssuedCertificates,
diff --git a/net/cert/internal/verify_certificate_chain_typed_unittest.h b/net/cert/internal/verify_certificate_chain_typed_unittest.h index 77cc633c..a9fcb14e 100644 --- a/net/cert/internal/verify_certificate_chain_typed_unittest.h +++ b/net/cert/internal/verify_certificate_chain_typed_unittest.h
@@ -41,7 +41,7 @@ class VerifyCertificateChainSingleRootTest : public VerifyCertificateChainTest<TestDelegate> {}; -TYPED_TEST_CASE_P(VerifyCertificateChainSingleRootTest); +TYPED_TEST_SUITE_P(VerifyCertificateChainSingleRootTest); TYPED_TEST_P(VerifyCertificateChainSingleRootTest, Simple) { this->RunTest("target-and-intermediate/main.test"); @@ -196,25 +196,25 @@ // TODO(eroman): Add test that invalid validity dates where the day or month // ordinal not in range, like "March 39, 2016" are rejected. -REGISTER_TYPED_TEST_CASE_P(VerifyCertificateChainSingleRootTest, - Simple, - BasicConstraintsCa, - BasicConstraintsPathlen, - UnknownExtension, - WeakSignature, - WrongSignature, - LastCertificateNotTrusted, - WeakPublicKey, - TargetSignedUsingEcdsa, - Expired, - TargetNotEndEntity, - KeyUsage, - ExtendedKeyUsage, - IssuerAndSubjectNotByteForByteEqual, - TrustAnchorNotSelfSigned, - KeyRollover, - Policies, - ManyNames); +REGISTER_TYPED_TEST_SUITE_P(VerifyCertificateChainSingleRootTest, + Simple, + BasicConstraintsCa, + BasicConstraintsPathlen, + UnknownExtension, + WeakSignature, + WrongSignature, + LastCertificateNotTrusted, + WeakPublicKey, + TargetSignedUsingEcdsa, + Expired, + TargetNotEndEntity, + KeyUsage, + ExtendedKeyUsage, + IssuerAndSubjectNotByteForByteEqual, + TrustAnchorNotSelfSigned, + KeyRollover, + Policies, + ManyNames); } // namespace net
diff --git a/net/cert/internal/verify_certificate_chain_unittest.cc b/net/cert/internal/verify_certificate_chain_unittest.cc index 0a53bef..e82f1d8 100644 --- a/net/cert/internal/verify_certificate_chain_unittest.cc +++ b/net/cert/internal/verify_certificate_chain_unittest.cc
@@ -35,8 +35,8 @@ } // namespace -INSTANTIATE_TYPED_TEST_CASE_P(VerifyCertificateChain, - VerifyCertificateChainSingleRootTest, - VerifyCertificateChainTestDelegate); +INSTANTIATE_TYPED_TEST_SUITE_P(VerifyCertificateChain, + VerifyCertificateChainSingleRootTest, + VerifyCertificateChainTestDelegate); } // namespace net
diff --git a/net/cert/internal/verify_name_match_unittest.cc b/net/cert/internal/verify_name_match_unittest.cc index e706d9c..f71ff31 100644 --- a/net/cert/internal/verify_name_match_unittest.cc +++ b/net/cert/internal/verify_name_match_unittest.cc
@@ -137,10 +137,10 @@ // Runs VerifyNameMatchSimpleTest for all combinations of value_type and and // suffix. -INSTANTIATE_TEST_CASE_P(InstantiationName, - VerifyNameMatchSimpleTest, - ::testing::Combine(::testing::ValuesIn(kValueTypes), - ::testing::ValuesIn(kMangleTypes))); +INSTANTIATE_TEST_SUITE_P(InstantiationName, + VerifyNameMatchSimpleTest, + ::testing::Combine(::testing::ValuesIn(kValueTypes), + ::testing::ValuesIn(kMangleTypes))); class VerifyNameMatchNormalizationTest : public ::testing::TestWithParam<::testing::tuple<bool, const char*>> { @@ -182,7 +182,7 @@ // Runs VerifyNameMatchNormalizationTest for each (expected_result, value_type) // tuple. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( InstantiationName, VerifyNameMatchNormalizationTest, ::testing::Values( @@ -270,10 +270,10 @@ // Runs VerifyNameMatchDifferingTypesTest for all combinations of value types in // value_type1 and value_type_2. -INSTANTIATE_TEST_CASE_P(InstantiationName, - VerifyNameMatchDifferingTypesTest, - ::testing::Combine(::testing::ValuesIn(kValueTypes), - ::testing::ValuesIn(kValueTypes))); +INSTANTIATE_TEST_SUITE_P(InstantiationName, + VerifyNameMatchDifferingTypesTest, + ::testing::Combine(::testing::ValuesIn(kValueTypes), + ::testing::ValuesIn(kValueTypes))); class VerifyNameMatchUnicodeConversionTest : public ::testing::TestWithParam< @@ -301,7 +301,7 @@ // Runs VerifyNameMatchUnicodeConversionTest with prefix="unicode_bmp" for all // combinations of Basic Multilingual Plane-capable value types in value_type1 // and value_type_2. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( BMPConversion, VerifyNameMatchUnicodeConversionTest, ::testing::Combine( @@ -312,7 +312,7 @@ // Runs VerifyNameMatchUnicodeConversionTest with prefix="unicode_supplementary" // for all combinations of Unicode Supplementary Plane-capable value types in // value_type1 and value_type_2. -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( SMPConversion, VerifyNameMatchUnicodeConversionTest, ::testing::Combine(
diff --git a/net/cert/x509_cert_types_unittest.cc b/net/cert/x509_cert_types_unittest.cc index d269cbe..333887e3 100644 --- a/net/cert/x509_cert_types_unittest.cc +++ b/net/cert/x509_cert_types_unittest.cc
@@ -190,9 +190,9 @@ base::Time::FromUTCExploded(test_data_.expected_result, &out_time)); EXPECT_EQ(out_time.ToInternalValue(), parsed_date.ToInternalValue()); } -INSTANTIATE_TEST_CASE_P(, - X509CertTypesDateTest, - testing::ValuesIn(kCertDateTimeData)); +INSTANTIATE_TEST_SUITE_P(, + X509CertTypesDateTest, + testing::ValuesIn(kCertDateTimeData)); } // namespace
diff --git a/net/cert/x509_certificate_unittest.cc b/net/cert/x509_certificate_unittest.cc index 31358cf..3922cf94 100644 --- a/net/cert/x509_certificate_unittest.cc +++ b/net/cert/x509_certificate_unittest.cc
@@ -1130,8 +1130,9 @@ } } -INSTANTIATE_TEST_CASE_P(, X509CertificateParseTest, - testing::ValuesIn(kFormatTestData)); +INSTANTIATE_TEST_SUITE_P(, + X509CertificateParseTest, + testing::ValuesIn(kFormatTestData)); struct CertificateNameVerifyTestData { // true iff we expect hostname to match an entry in cert_names. @@ -1328,8 +1329,9 @@ ip_addressses)); } -INSTANTIATE_TEST_CASE_P(, X509CertificateNameVerifyTest, - testing::ValuesIn(kNameVerifyTestData)); +INSTANTIATE_TEST_SUITE_P(, + X509CertificateNameVerifyTest, + testing::ValuesIn(kNameVerifyTestData)); const struct PublicKeyInfoTestData { const char* cert_file; @@ -1367,7 +1369,8 @@ EXPECT_EQ(data.expected_type, actual_type); } -INSTANTIATE_TEST_CASE_P(, X509CertificatePublicKeyInfoTest, - testing::ValuesIn(kPublicKeyInfoTestData)); +INSTANTIATE_TEST_SUITE_P(, + X509CertificatePublicKeyInfoTest, + testing::ValuesIn(kPublicKeyInfoTestData)); } // namespace net
diff --git a/net/dns/host_resolver.cc b/net/dns/host_resolver.cc index 275d4e5..329e44a 100644 --- a/net/dns/host_resolver.cc +++ b/net/dns/host_resolver.cc
@@ -4,11 +4,16 @@ #include "net/dns/host_resolver.h" +#include <utility> + +#include "base/bind.h" #include "base/logging.h" +#include "base/macros.h" #include "base/metrics/field_trial.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_split.h" #include "base/values.h" +#include "net/base/address_list.h" #include "net/base/net_errors.h" #include "net/dns/dns_client.h" #include "net/dns/dns_util.h" @@ -26,6 +31,76 @@ // that limit this to 6, so we're temporarily holding it at that level. const size_t kDefaultMaxProcTasks = 6u; +// Wraps a ResolveHostRequest to implement Request objects from the legacy +// Resolve() API. The wrapped request must not yet have been started. +// +// TODO(crbug.com/821021): Delete this class once all usage has been +// converted to the new CreateRequest() API. +class LegacyRequestImpl : public HostResolver::Request { + public: + LegacyRequestImpl( + std::unique_ptr<HostResolver::ResolveHostRequest> inner_request, + bool is_speculative) + : inner_request_(std::move(inner_request)), + is_speculative_(is_speculative) {} + + ~LegacyRequestImpl() override {} + + void ChangeRequestPriority(RequestPriority priority) override { + inner_request_->ChangeRequestPriority(priority); + } + + int Start() { + return inner_request_->Start(base::BindOnce( + &LegacyRequestImpl::LegacyApiCallback, base::Unretained(this))); + } + + // Do not call to assign the callback until we are running an async job (after + // Start() returns ERR_IO_PENDING) and before completion. Until then, the + // legacy HostResolverImpl::Resolve() needs to hang onto |callback| to ensure + // it stays alive for the duration of the method call, as some callers may be + // binding objects, eg the AddressList, with the callback. + void AssignCallback(CompletionOnceCallback callback, + AddressList* addresses_result_ptr) { + DCHECK(callback); + DCHECK(addresses_result_ptr); + + callback_ = std::move(callback); + addresses_result_ptr_ = addresses_result_ptr; + } + + const HostResolver::ResolveHostRequest& inner_request() const { + return *inner_request_; + } + + private: + // Result callback to bridge results handled entirely via ResolveHostRequest + // to legacy API styles where AddressList was a separate method out parameter. + void LegacyApiCallback(int error) { + // Must call AssignCallback() before async results. + DCHECK(callback_); + + if (error == OK && !is_speculative_) { + // Legacy API does not allow non-address results (eg TXT), so AddressList + // is always expected to be present on OK. + DCHECK(inner_request_->GetAddressResults()); + *addresses_result_ptr_ = inner_request_->GetAddressResults().value(); + } + addresses_result_ptr_ = nullptr; + std::move(callback_).Run(error); + } + + const std::unique_ptr<HostResolver::ResolveHostRequest> inner_request_; + const bool is_speculative_; + + CompletionOnceCallback callback_; + // This is a caller-provided pointer and should not be used once |callback_| + // is invoked. + AddressList* addresses_result_ptr_; + + DISALLOW_COPY_AND_ASSIGN(LegacyRequestImpl); +}; + } // namespace PrioritizedDispatcher::Limits HostResolver::Options::GetDispatcherLimits() @@ -250,6 +325,33 @@ return flags; } +// static +int HostResolver::LegacyResolve( + std::unique_ptr<ResolveHostRequest> inner_request, + bool is_speculative, + AddressList* addresses, + CompletionOnceCallback callback, + std::unique_ptr<Request>* out_req) { + auto wrapped_request = std::make_unique<LegacyRequestImpl>( + std::move(inner_request), is_speculative); + + int rv = wrapped_request->Start(); + + if (rv == OK && !is_speculative) { + DCHECK(addresses); + DCHECK(wrapped_request->inner_request().GetAddressResults()); + *addresses = wrapped_request->inner_request().GetAddressResults().value(); + } else if (rv == ERR_IO_PENDING) { + DCHECK(addresses); + DCHECK(callback); + DCHECK(out_req); + wrapped_request->AssignCallback(std::move(callback), addresses); + *out_req = std::move(wrapped_request); + } + + return rv; +} + HostResolver::HostResolver() = default; } // namespace net
diff --git a/net/dns/host_resolver.h b/net/dns/host_resolver.h index 5f56be9..f65ce5786 100644 --- a/net/dns/host_resolver.h +++ b/net/dns/host_resolver.h
@@ -118,6 +118,11 @@ // |ERR_IO_PENDING|. virtual const base::Optional<HostCache::EntryStaleness>& GetStaleInfo() const = 0; + + // Changes the priority of the specified request. Can only be called while + // the request is running (after Start() returns |ERR_IO_PENDING| and before + // the callback is invoked). + virtual void ChangeRequestPriority(RequestPriority priority) {} }; // |max_concurrent_resolves| is how many resolve requests will be allowed to @@ -473,6 +478,19 @@ static HostResolverFlags ParametersToHostResolverFlags( const ResolveHostParameters& parameters); + // Use legacy Resolve()-style semantics to run the new-style |inner_request|. + // Useful to implement legacy Resolve() in HostResolver implementations. + // + // |inner_request| must be newly-created and not yet started. + // + // TODO(crbug.com/922699): Delete this once all usage has been converted to + // the new CreateRequest() API and HostResolver::Resolve() is removed. + static int LegacyResolve(std::unique_ptr<ResolveHostRequest> inner_request, + bool is_speculative, + AddressList* addresses, + CompletionOnceCallback callback, + std::unique_ptr<Request>* out_req); + protected: HostResolver();
diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc index 131a8f0..cef8a59 100644 --- a/net/dns/host_resolver_impl.cc +++ b/net/dns/host_resolver_impl.cc
@@ -589,6 +589,8 @@ return stale_info_; } + void ChangeRequestPriority(RequestPriority priority) override; + void set_results(HostCache::Entry results) { // Should only be called at most once and before request is marked // completed. @@ -609,8 +611,6 @@ stale_info_ = std::move(stale_info); } - void ChangeRequestPriority(RequestPriority priority); - void AssignJob(Job* job) { DCHECK(job); DCHECK(!job_); @@ -694,75 +694,6 @@ DISALLOW_COPY_AND_ASSIGN(RequestImpl); }; -// Wraps a RequestImpl to implement Request objects from the legacy Resolve() -// API. The wrapped request must not yet have been started. -// -// TODO(crbug.com/821021): Delete this class once all usage has been -// converted to the new CreateRequest() API. -class HostResolverImpl::LegacyRequestImpl : public HostResolver::Request { - public: - explicit LegacyRequestImpl(std::unique_ptr<RequestImpl> inner_request) - : inner_request_(std::move(inner_request)) { - DCHECK(!inner_request_->job()); - DCHECK(!inner_request_->complete()); - } - - ~LegacyRequestImpl() override {} - - void ChangeRequestPriority(RequestPriority priority) override { - inner_request_->ChangeRequestPriority(priority); - } - - int Start() { - return inner_request_->Start(base::BindOnce( - &LegacyRequestImpl::LegacyApiCallback, base::Unretained(this))); - } - - // Do not call to assign the callback until we are running an async job (after - // Start() returns ERR_IO_PENDING) and before completion. Until then, the - // legacy HostResolverImpl::Resolve() needs to hang onto |callback| to ensure - // it stays alive for the duration of the method call, as some callers may be - // binding objects, eg the AddressList, with the callback. - void AssignCallback(CompletionOnceCallback callback, - AddressList* addresses_result_ptr) { - DCHECK(callback); - DCHECK(addresses_result_ptr); - DCHECK(inner_request_->job()); - DCHECK(!inner_request_->complete()); - - callback_ = std::move(callback); - addresses_result_ptr_ = addresses_result_ptr; - } - - const RequestImpl& inner_request() const { return *inner_request_; } - - private: - // Result callback to bridge results handled entirely via ResolveHostRequest - // to legacy API styles where AddressList was a separate method out parameter. - void LegacyApiCallback(int error) { - // Must call AssignCallback() before async results. - DCHECK(callback_); - - if (error == OK && !inner_request_->parameters().is_speculative) { - // Legacy API does not allow non-address results (eg TXT), so AddressList - // is always expected to be present on OK. - DCHECK(inner_request_->GetAddressResults()); - *addresses_result_ptr_ = inner_request_->GetAddressResults().value(); - } - addresses_result_ptr_ = nullptr; - std::move(callback_).Run(error); - } - - const std::unique_ptr<RequestImpl> inner_request_; - - CompletionOnceCallback callback_; - // This is a caller-provided pointer and should not be used once |callback_| - // is invoked. - AddressList* addresses_result_ptr_; - - DISALLOW_COPY_AND_ASSIGN(LegacyRequestImpl); -}; - //------------------------------------------------------------------------------ // Calls HostResolverProc in TaskScheduler. Performs retries if necessary. @@ -2316,20 +2247,8 @@ source_net_log, info.host_port_pair(), RequestInfoToResolveHostParameters(info, priority), weak_ptr_factory_.GetWeakPtr()); - auto wrapped_request = - std::make_unique<LegacyRequestImpl>(std::move(request)); - - int rv = wrapped_request->Start(); - - if (rv == OK && !info.is_speculative()) { - DCHECK(wrapped_request->inner_request().GetAddressResults()); - *addresses = wrapped_request->inner_request().GetAddressResults().value(); - } else if (rv == ERR_IO_PENDING) { - wrapped_request->AssignCallback(std::move(callback), addresses); - *out_req = std::move(wrapped_request); - } - - return rv; + return LegacyResolve(std::move(request), info.is_speculative(), addresses, + std::move(callback), out_req); } int HostResolverImpl::ResolveFromCache(const RequestInfo& info, @@ -3227,6 +3146,7 @@ void HostResolverImpl::RequestImpl::ChangeRequestPriority( RequestPriority priority) { + DCHECK(job_); job_->ChangeRequestPriority(this, priority); }
diff --git a/net/dns/host_resolver_impl.h b/net/dns/host_resolver_impl.h index 5d5f1bf..7f69da8 100644 --- a/net/dns/host_resolver_impl.h +++ b/net/dns/host_resolver_impl.h
@@ -216,7 +216,6 @@ class LoopbackProbeJob; class DnsTask; class RequestImpl; - class LegacyRequestImpl; using Key = HostCache::Key; using JobMap = std::map<Key, std::unique_ptr<Job>>;
diff --git a/net/dns/mock_host_resolver.cc b/net/dns/mock_host_resolver.cc index 28612c4..9de9469e 100644 --- a/net/dns/mock_host_resolver.cc +++ b/net/dns/mock_host_resolver.cc
@@ -134,6 +134,10 @@ return staleness_; } + void ChangeRequestPriority(RequestPriority priority) override { + priority_ = priority; + } + void set_address_results( const AddressList& address_results, base::Optional<HostCache::EntryStaleness> staleness) { @@ -168,8 +172,6 @@ RequestPriority priority() const { return priority_; } - void set_priority(RequestPriority priority) { priority_ = priority; } - void set_id(size_t id) { DCHECK_GT(id, 0u); DCHECK_EQ(0u, id_); @@ -200,63 +202,6 @@ DISALLOW_COPY_AND_ASSIGN(RequestImpl); }; -class MockHostResolverBase::LegacyRequestImpl : public HostResolver::Request { - public: - explicit LegacyRequestImpl(std::unique_ptr<RequestImpl> inner_request) - : inner_request_(std::move(inner_request)) { - DCHECK_EQ(0u, inner_request_->id()); - DCHECK(!inner_request_->complete()); - } - - ~LegacyRequestImpl() override {} - - void ChangeRequestPriority(RequestPriority priority) override { - inner_request_->set_priority(priority); - } - - int Start() { - return inner_request_->Start(base::BindOnce( - &LegacyRequestImpl::LegacyApiCallback, base::Unretained(this))); - } - - void AssignCallback(CompletionOnceCallback callback, - AddressList* addresses_result_ptr) { - DCHECK(callback); - DCHECK(addresses_result_ptr); - DCHECK_GT(inner_request_->id(), 0u); - DCHECK(!inner_request_->complete()); - - callback_ = std::move(callback); - addresses_result_ptr_ = addresses_result_ptr; - } - - const RequestImpl& inner_request() const { return *inner_request_; } - - private: - void LegacyApiCallback(int error) { - // Must call AssignCallback() before async results. - DCHECK(callback_); - - if (error == OK && !inner_request_->parameters().is_speculative) { - // Legacy API does not allow non-address results (eg TXT), so AddressList - // is always expected to be present on OK. - DCHECK(inner_request_->GetAddressResults()); - *addresses_result_ptr_ = inner_request_->GetAddressResults().value(); - } - addresses_result_ptr_ = nullptr; - std::move(callback_).Run(error); - } - - const std::unique_ptr<RequestImpl> inner_request_; - - CompletionOnceCallback callback_; - // This is a caller-provided pointer and should not be used once |callback_| - // is invoked. - AddressList* addresses_result_ptr_; - - DISALLOW_COPY_AND_ASSIGN(LegacyRequestImpl); -}; - class MockHostResolverBase::MdnsListenerImpl : public HostResolver::MdnsListener { public: @@ -345,20 +290,8 @@ auto request = std::make_unique<RequestImpl>( info.host_port_pair(), RequestInfoToResolveHostParameters(info, priority), AsWeakPtr()); - auto wrapped_request = - std::make_unique<LegacyRequestImpl>(std::move(request)); - - int rv = wrapped_request->Start(); - - if (rv == OK) { - DCHECK(wrapped_request->inner_request().GetAddressResults()); - *addresses = wrapped_request->inner_request().GetAddressResults().value(); - } else if (rv == ERR_IO_PENDING) { - wrapped_request->AssignCallback(std::move(callback), addresses); - *out_request = std::move(wrapped_request); - } - - return rv; + return LegacyResolve(std::move(request), info.is_speculative(), addresses, + std::move(callback), out_request); } int MockHostResolverBase::ResolveFromCache(const RequestInfo& info,
diff --git a/net/dns/mock_host_resolver.h b/net/dns/mock_host_resolver.h index f42da7bc2..c801a487 100644 --- a/net/dns/mock_host_resolver.h +++ b/net/dns/mock_host_resolver.h
@@ -81,7 +81,6 @@ public base::SupportsWeakPtr<MockHostResolverBase> { private: class RequestImpl; - class LegacyRequestImpl; class MdnsListenerImpl; public:
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc index fecabc1..d269eb84 100644 --- a/net/http/http_network_transaction_unittest.cc +++ b/net/http/http_network_transaction_unittest.cc
@@ -692,7 +692,20 @@ CaptureGroupNameSocketPool<ParentPool>::CaptureGroupNameSocketPool( HostResolver* host_resolver, CertVerifier* /* cert_verifier */) - : ParentPool(0, 0, host_resolver, NULL, NULL, NULL) {} + : ParentPool(0, + 0, + NULL, + host_resolver, + NULL, + NULL, + NULL, + NULL, + NULL, + "", + NULL, + NULL, + NULL, + NULL) {} template <> CaptureGroupNameHttpProxySocketPool::CaptureGroupNameSocketPool( @@ -14239,8 +14252,15 @@ TransportClientSocketPool* transport_pool = new TransportClientSocketPool( 50, // Max sockets for pool 1, // Max sockets per group - session_deps_.host_resolver.get(), session_deps_.socket_factory.get(), - NULL, session_deps_.net_log); + session_deps_.socket_factory.get(), session_deps_.host_resolver.get(), + session_deps_.cert_verifier.get(), session_deps_.channel_id_service.get(), + session_deps_.transport_security_state.get(), + session_deps_.cert_transparency_verifier.get(), + session_deps_.ct_policy_enforcer.get(), + std::string() /* ssl_cache_shard */, + session_deps_.ssl_config_service.get(), + nullptr /* socket_performance_watcher_factory */, + nullptr /* network_quality_estimator */, session_deps_.net_log); auto mock_pool_manager = std::make_unique<MockClientSocketPoolManager>(); mock_pool_manager->SetTransportSocketPool(transport_pool); session_peer.SetClientSocketPoolManager(std::move(mock_pool_manager));
diff --git a/net/http/http_stream_factory_unittest.cc b/net/http/http_stream_factory_unittest.cc index 5b38579..c43a683 100644 --- a/net/http/http_stream_factory_unittest.cc +++ b/net/http/http_stream_factory_unittest.cc
@@ -458,7 +458,20 @@ TransportSecurityState*, CTVerifier*, CTPolicyEnforcer*) - : ParentPool(0, 0, host_resolver, nullptr, nullptr, nullptr), + : ParentPool(0, + 0, + nullptr /* socket_factory */, + host_resolver, + nullptr /* cert_verifier */, + nullptr /* channel_id_server */, + nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, + nullptr /* socket_performance_watcher_factory */, + nullptr /* network_quality_estimator */, + nullptr /* netlog */), last_num_streams_(-1) {} template <>
diff --git a/net/socket/client_socket_pool_manager_impl.cc b/net/socket/client_socket_pool_manager_impl.cc index 2afd7d9..4edeb48 100644 --- a/net/socket/client_socket_pool_manager_impl.cc +++ b/net/socket/client_socket_pool_manager_impl.cc
@@ -74,16 +74,32 @@ ? new WebSocketTransportClientSocketPool( max_sockets_per_pool(pool_type), max_sockets_per_group(pool_type), - host_resolver, socket_factory_, + host_resolver, + cert_verifier, + channel_id_service, + transport_security_state, + cert_transparency_verifier, + ct_policy_enforcer, + ssl_session_cache_shard, + ssl_config_service, + network_quality_estimator, websocket_endpoint_lock_manager, net_log) : new TransportClientSocketPool( max_sockets_per_pool(pool_type), max_sockets_per_group(pool_type), - host_resolver, socket_factory_, + host_resolver, + cert_verifier, + channel_id_service, + transport_security_state, + cert_transparency_verifier, + ct_policy_enforcer, + ssl_session_cache_shard, + ssl_config_service, socket_performance_watcher_factory_, + network_quality_estimator, net_log)), ssl_socket_pool_(new SSLClientSocketPool(max_sockets_per_pool(pool_type), max_sockets_per_group(pool_type), @@ -198,9 +214,12 @@ proxy_socket_pools_.insert(std::make_pair( proxy_server, std::make_unique<TransportClientSocketPool>( - sockets_per_proxy_server, sockets_per_group, host_resolver_, - socket_factory_, nullptr /* socket_performance_watcher */, - net_log_))); + sockets_per_proxy_server, sockets_per_group, socket_factory_, + host_resolver_, cert_verifier_, channel_id_service_, + transport_security_state_, cert_transparency_verifier_, + ct_policy_enforcer_, ssl_session_cache_shard_, + ssl_config_service_, nullptr /* socket_performance_watcher */, + network_quality_estimator_, net_log_))); return ret.first->second.get(); } @@ -235,16 +254,24 @@ transport_socket_pools_for_http_proxies_.insert(std::make_pair( http_proxy, std::make_unique<TransportClientSocketPool>( - sockets_per_proxy_server, sockets_per_group, host_resolver_, - socket_factory_, socket_performance_watcher_factory_, net_log_))); + sockets_per_proxy_server, sockets_per_group, socket_factory_, + host_resolver_, cert_verifier_, channel_id_service_, + transport_security_state_, cert_transparency_verifier_, + ct_policy_enforcer_, ssl_session_cache_shard_, + ssl_config_service_, socket_performance_watcher_factory_, + network_quality_estimator_, net_log_))); DCHECK(tcp_http_ret.second); std::pair<TransportSocketPoolMap::iterator, bool> tcp_https_ret = transport_socket_pools_for_https_proxies_.insert(std::make_pair( http_proxy, std::make_unique<TransportClientSocketPool>( - sockets_per_proxy_server, sockets_per_group, host_resolver_, - socket_factory_, socket_performance_watcher_factory_, net_log_))); + sockets_per_proxy_server, sockets_per_group, socket_factory_, + host_resolver_, cert_verifier_, channel_id_service_, + transport_security_state_, cert_transparency_verifier_, + ct_policy_enforcer_, ssl_session_cache_shard_, + ssl_config_service_, socket_performance_watcher_factory_, + network_quality_estimator_, net_log_))); DCHECK(tcp_https_ret.second); std::pair<SSLSocketPoolMap::iterator, bool> ssl_https_ret =
diff --git a/net/socket/connect_job.cc b/net/socket/connect_job.cc index a0a280f..1937c62d 100644 --- a/net/socket/connect_job.cc +++ b/net/socket/connect_job.cc
@@ -19,16 +19,20 @@ const SocketTag& socket_tag, bool respect_limits, ClientSocketFactory* client_socket_factory, - SocketPerformanceWatcherFactory* socket_performance_watcher_factory, HostResolver* host_resolver, + const SSLClientSocketContext& ssl_client_socket_context, + SocketPerformanceWatcherFactory* socket_performance_watcher_factory, + NetworkQualityEstimator* network_quality_estimator, NetLog* net_log, WebSocketEndpointLockManager* websocket_endpoint_lock_manager) : group_name(group_name), socket_tag(socket_tag), respect_limits(respect_limits), client_socket_factory(client_socket_factory), - socket_performance_watcher_factory(socket_performance_watcher_factory), host_resolver(host_resolver), + ssl_client_socket_context(ssl_client_socket_context), + socket_performance_watcher_factory(socket_performance_watcher_factory), + network_quality_estimator(network_quality_estimator), net_log(net_log), websocket_endpoint_lock_manager(websocket_endpoint_lock_manager) { DCHECK(!group_name.empty()); @@ -72,8 +76,10 @@ socket_tag, respect_limits, nullptr /* client_socket_factory */, - nullptr /* socket_performance_watcher_factory */, nullptr /* host_resolver */, + SSLClientSocketContext(), + nullptr /* network_quality_estimator */, + nullptr /* socket_performance_watcher_factory */, nullptr /* net_log */, nullptr /* websocket_endpoint_lock_manager */), delegate,
diff --git a/net/socket/connect_job.h b/net/socket/connect_job.h index fd5dee7..3a43eda5 100644 --- a/net/socket/connect_job.h +++ b/net/socket/connect_job.h
@@ -14,9 +14,11 @@ #include "net/base/load_states.h" #include "net/base/load_timing_info.h" #include "net/base/net_export.h" +#include "net/base/privacy_mode.h" #include "net/base/request_priority.h" #include "net/log/net_log_with_source.h" #include "net/socket/socket_tag.h" +#include "net/socket/ssl_client_socket.h" namespace net { @@ -24,6 +26,7 @@ class ClientSocketHandle; class HostResolver; class NetLog; +class NetworkQualityEstimator; class SocketPerformanceWatcherFactory; class StreamSocket; class WebSocketEndpointLockManager; @@ -39,8 +42,10 @@ const SocketTag& socket_tag, bool respect_limits, ClientSocketFactory* client_socket_factory, - SocketPerformanceWatcherFactory* socket_performance_watcher_factory, HostResolver* host_resolver, + const SSLClientSocketContext& ssl_client_socket_context, + SocketPerformanceWatcherFactory* socket_performance_watcher_factory, + NetworkQualityEstimator* network_quality_estimator, NetLog* net_log, WebSocketEndpointLockManager* websocket_endpoint_lock_manager); CommonConnectJobParams(const CommonConnectJobParams& other); @@ -62,8 +67,10 @@ bool respect_limits; ClientSocketFactory* client_socket_factory; - SocketPerformanceWatcherFactory* socket_performance_watcher_factory; HostResolver* host_resolver; + SSLClientSocketContext ssl_client_socket_context; + SocketPerformanceWatcherFactory* socket_performance_watcher_factory; + NetworkQualityEstimator* network_quality_estimator; NetLog* net_log; // This must only be non-null for WebSockets. @@ -164,11 +171,17 @@ ClientSocketFactory* client_socket_factory() { return common_connect_job_params_.client_socket_factory; } + HostResolver* host_resolver() { + return common_connect_job_params_.host_resolver; + } + const SSLClientSocketContext& ssl_client_socket_context() { + return common_connect_job_params_.ssl_client_socket_context; + } SocketPerformanceWatcherFactory* socket_performance_watcher_factory() { return common_connect_job_params_.socket_performance_watcher_factory; } - HostResolver* host_resolver() { - return common_connect_job_params_.host_resolver; + NetworkQualityEstimator* network_quality_estimator() { + return common_connect_job_params_.network_quality_estimator; } WebSocketEndpointLockManager* websocket_endpoint_lock_manager() { return common_connect_job_params_.websocket_endpoint_lock_manager;
diff --git a/net/socket/connect_job_unittest.cc b/net/socket/connect_job_unittest.cc index b0c80076..b974170 100644 --- a/net/socket/connect_job_unittest.cc +++ b/net/socket/connect_job_unittest.cc
@@ -44,8 +44,10 @@ SocketTag(), true /* respect_limits */, nullptr /* client_socket_factory */, - nullptr /* socket_performance_watcher_factory */, nullptr /* host_resolver */, + SSLClientSocketContext(), + nullptr /* socket_performance_watcher_factory */, + nullptr /* network_quality_estimator */, nullptr /* net_log */, nullptr /* websocket_endpoint_lock_manager */), delegate,
diff --git a/net/socket/socket_test_util.cc b/net/socket/socket_test_util.cc index 2d1db66..646a5a5 100644 --- a/net/socket/socket_test_util.cc +++ b/net/socket/socket_test_util.cc
@@ -2075,12 +2075,21 @@ int max_sockets, int max_sockets_per_group, ClientSocketFactory* socket_factory) - : TransportClientSocketPool(max_sockets, - max_sockets_per_group, - nullptr /* host_resolver */, - socket_factory, - nullptr /* socket_performance_watcher_factory*/, - nullptr /* netlog */), + : TransportClientSocketPool( + max_sockets, + max_sockets_per_group, + socket_factory, + nullptr /* host_resolver */, + nullptr /* cert_verifier */, + nullptr /* channel_id_server */, + nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, + nullptr /* socket_performance_watcher_factory */, + nullptr /* network_quality_estimator */, + nullptr /* netlog */), client_socket_factory_(socket_factory), last_request_priority_(DEFAULT_PRIORITY), release_count_(0),
diff --git a/net/socket/socks_connect_job_unittest.cc b/net/socket/socks_connect_job_unittest.cc index 8ac0d79..d695952 100644 --- a/net/socket/socks_connect_job_unittest.cc +++ b/net/socket/socks_connect_job_unittest.cc
@@ -73,9 +73,10 @@ // Group name doesn't matter. return CommonConnectJobParams( "group_name", SocketTag(), true /* respect_limits */, - &client_socket_factory_, - nullptr /* socket_performance_watcher_factory */, &host_resolver_, - &net_log_, nullptr /* websocket_endpoint_lock_manager */); + &client_socket_factory_, &host_resolver_, SSLClientSocketContext(), + nullptr /* socket_performance_watcher_factory */, + nullptr /* network_quality_estimator */, &net_log_, + nullptr /* websocket_endpoint_lock_manager */); } protected:
diff --git a/net/socket/ssl_client_socket_pool.cc b/net/socket/ssl_client_socket_pool.cc index c3e0af4..bb79c46 100644 --- a/net/socket/ssl_client_socket_pool.cc +++ b/net/socket/ssl_client_socket_pool.cc
@@ -93,12 +93,17 @@ const std::string& group_name, const PoolBase::Request& request, ConnectJob::Delegate* delegate) const { - return std::unique_ptr<ConnectJob>(new SSLConnectJob( - group_name, request.priority(), request.socket_tag(), - request.respect_limits() == ClientSocketPool::RespectLimits::ENABLED, + return std::make_unique<SSLConnectJob>( + request.priority(), + CommonConnectJobParams( + group_name, request.socket_tag(), + request.respect_limits() == ClientSocketPool::RespectLimits::ENABLED, + client_socket_factory_, nullptr /* host_resolver */, context_, + nullptr /* socket_performance_watcher_factory */, + network_quality_estimator_, net_log_, + nullptr /* websocket_endpoint_lock_manager */), request.params(), transport_pool_, socks_pool_, http_proxy_pool_, - client_socket_factory_, context_, network_quality_estimator_, delegate, - net_log_)); + delegate); } int SSLClientSocketPool::RequestSocket(const std::string& group_name,
diff --git a/net/socket/ssl_client_socket_pool_unittest.cc b/net/socket/ssl_client_socket_pool_unittest.cc index 077407060..3eb4d7e 100644 --- a/net/socket/ssl_client_socket_pool_unittest.cc +++ b/net/socket/ssl_client_socket_pool_unittest.cc
@@ -393,8 +393,16 @@ ssl_config_.version_max = SSL_PROTOCOL_VERSION_TLS1_2; TransportClientSocketPool tcp_pool( - kMaxSockets, kMaxSocketsPerGroup, &host_resolver_, - ClientSocketFactory::GetDefaultFactory(), NULL, NULL); + kMaxSockets, kMaxSocketsPerGroup, + ClientSocketFactory::GetDefaultFactory(), &host_resolver_, + nullptr /* cert_verifier */, nullptr /* channel_id_server */, + nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, + nullptr /* socket_performance_watcher_factory */, + nullptr /* network_quality_estimator */, nullptr /* netlog */); cert_verifier_->set_default_result(OK); SSLClientSocketPool pool(kMaxSockets, kMaxSocketsPerGroup, cert_verifier_.get(), NULL /* channel_id_service */, @@ -463,8 +471,16 @@ ASSERT_TRUE(test_server.Start()); TransportClientSocketPool tcp_pool( - kMaxSockets, kMaxSocketsPerGroup, &host_resolver_, - ClientSocketFactory::GetDefaultFactory(), NULL, NULL); + kMaxSockets, kMaxSocketsPerGroup, + ClientSocketFactory::GetDefaultFactory(), &host_resolver_, + nullptr /* cert_verifier */, nullptr /* channel_id_server */, + nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, + nullptr /* socket_performance_watcher_factory */, + nullptr /* network_quality_estimator */, nullptr /* netlog */); cert_verifier_->set_default_result(OK); SSLClientSocketPool pool(kMaxSockets, kMaxSocketsPerGroup, cert_verifier_.get(), NULL /* channel_id_service */, @@ -525,8 +541,16 @@ ASSERT_TRUE(test_server.Start()); TransportClientSocketPool tcp_pool( - kMaxSockets, kMaxSocketsPerGroup, &host_resolver_, - ClientSocketFactory::GetDefaultFactory(), NULL, NULL); + kMaxSockets, kMaxSocketsPerGroup, + ClientSocketFactory::GetDefaultFactory(), &host_resolver_, + nullptr /* cert_verifier */, nullptr /* channel_id_server */, + nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, + nullptr /* socket_performance_watcher_factory */, + nullptr /* network_quality_estimator */, nullptr /* netlog */); cert_verifier_->set_default_result(OK); SSLClientSocketPool pool(kMaxSockets, kMaxSocketsPerGroup, cert_verifier_.get(), NULL /* channel_id_service */,
diff --git a/net/socket/ssl_connect_job.cc b/net/socket/ssl_connect_job.cc index 8f4a8624..ff182a9 100644 --- a/net/socket/ssl_connect_job.cc +++ b/net/socket/ssl_connect_job.cc
@@ -91,42 +91,26 @@ // Timeout for the SSL handshake portion of the connect. static const int kSSLHandshakeTimeoutInSeconds = 30; -SSLConnectJob::SSLConnectJob(const std::string& group_name, - RequestPriority priority, - const SocketTag& socket_tag, - bool respect_limits, - const scoped_refptr<SSLSocketParams>& params, - TransportClientSocketPool* transport_pool, - TransportClientSocketPool* socks_pool, - HttpProxyClientSocketPool* http_proxy_pool, - ClientSocketFactory* client_socket_factory, - const SSLClientSocketContext& context, - NetworkQualityEstimator* network_quality_estimator, - Delegate* delegate, - NetLog* net_log) - : ConnectJob( - group_name, - ConnectionTimeout(*params, network_quality_estimator), - priority, - socket_tag, - respect_limits, - delegate, - NetLogWithSource::Make(net_log, NetLogSourceType::SSL_CONNECT_JOB)), +SSLConnectJob::SSLConnectJob( + RequestPriority priority, + const CommonConnectJobParams& common_connect_job_params, + const scoped_refptr<SSLSocketParams>& params, + TransportClientSocketPool* transport_pool, + TransportClientSocketPool* socks_pool, + HttpProxyClientSocketPool* http_proxy_pool, + Delegate* delegate) + : ConnectJob(priority, + ConnectionTimeout( + *params, + common_connect_job_params.network_quality_estimator), + common_connect_job_params, + delegate, + NetLogWithSource::Make(common_connect_job_params.net_log, + NetLogSourceType::SSL_CONNECT_JOB)), params_(params), transport_pool_(transport_pool), socks_pool_(socks_pool), http_proxy_pool_(http_proxy_pool), - client_socket_factory_(client_socket_factory), - context_(context.cert_verifier, - context.channel_id_service, - context.transport_security_state, - context.cert_transparency_verifier, - context.ct_policy_enforcer, - (context.ssl_session_cache_shard.empty() - ? context.ssl_session_cache_shard - : (params->privacy_mode() == PRIVACY_MODE_ENABLED - ? "pm/" + context.ssl_session_cache_shard - : context.ssl_session_cache_shard))), callback_(base::BindRepeating(&SSLConnectJob::OnIOComplete, base::Unretained(this))) {} @@ -343,9 +327,23 @@ connect_timing_.ssl_start = base::TimeTicks::Now(); - ssl_socket_ = client_socket_factory_->CreateSSLClientSocket( + // If privacy mode is enabled and the session shard is non-empty, prefix the + // SSL session shard with "pm/" + // TODO(mmenke): Consider moving this up to the socket pool layer, after + // giving socket pools knowledge of privacy mode. + SSLClientSocketContext context_with_privacy_mode( + ssl_client_socket_context().cert_verifier, + ssl_client_socket_context().channel_id_service, + ssl_client_socket_context().transport_security_state, + ssl_client_socket_context().cert_transparency_verifier, + ssl_client_socket_context().ct_policy_enforcer, + (!ssl_client_socket_context().ssl_session_cache_shard.empty() && + params_->privacy_mode() == PRIVACY_MODE_ENABLED + ? "pm/" + ssl_client_socket_context().ssl_session_cache_shard + : ssl_client_socket_context().ssl_session_cache_shard)); + ssl_socket_ = client_socket_factory()->CreateSSLClientSocket( std::move(transport_socket_handle_), params_->host_and_port(), - params_->ssl_config(), context_); + params_->ssl_config(), context_with_privacy_mode); return ssl_socket_->Connect(callback_); }
diff --git a/net/socket/ssl_connect_job.h b/net/socket/ssl_connect_job.h index 28a64b9..e0301b6 100644 --- a/net/socket/ssl_connect_job.h +++ b/net/socket/ssl_connect_job.h
@@ -23,13 +23,10 @@ namespace net { -class ClientSocketFactory; class HostPortPair; class HttpProxyClientSocketPool; class HttpProxySocketParams; -class NetworkQualityEstimator; class SOCKSSocketParams; -class SSLClientSocket; class TransportClientSocketPool; class TransportSocketParams; @@ -84,19 +81,13 @@ public: // Note: the SSLConnectJob does not own |messenger| so it must outlive the // job. - SSLConnectJob(const std::string& group_name, - RequestPriority priority, - const SocketTag& socket_tag, - bool respect_limits, + SSLConnectJob(RequestPriority priority, + const CommonConnectJobParams& common_connect_job_params, const scoped_refptr<SSLSocketParams>& params, TransportClientSocketPool* transport_pool, TransportClientSocketPool* socks_pool, HttpProxyClientSocketPool* http_proxy_pool, - ClientSocketFactory* client_socket_factory, - const SSLClientSocketContext& context, - NetworkQualityEstimator* network_quality_estimator, - Delegate* delegate, - NetLog* net_log); + Delegate* delegate); ~SSLConnectJob() override; // ConnectJob methods. @@ -152,9 +143,6 @@ TransportClientSocketPool* const transport_pool_; TransportClientSocketPool* const socks_pool_; HttpProxyClientSocketPool* const http_proxy_pool_; - ClientSocketFactory* const client_socket_factory_; - - const SSLClientSocketContext context_; State next_state_; CompletionRepeatingCallback callback_;
diff --git a/net/socket/ssl_connect_job_unittest.cc b/net/socket/ssl_connect_job_unittest.cc index 86e4f657..d9986d55 100644 --- a/net/socket/ssl_connect_job_unittest.cc +++ b/net/socket/ssl_connect_job_unittest.cc
@@ -102,9 +102,17 @@ OnHostResolutionCallback())), transport_socket_pool_(kMaxSockets, kMaxSocketsPerGroup, - &host_resolver_, &socket_factory_, + &host_resolver_, + nullptr /* cert_verifier */, + nullptr /* channel_id_server */, + nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, nullptr /* socket_performance_watcher_factory */, + nullptr /* network_quality_estimator */, nullptr /* net_log */), proxy_transport_socket_params_( new TransportSocketParams(HostPortPair("proxy", 443), @@ -149,7 +157,13 @@ ProxyServer::Scheme proxy_scheme = ProxyServer::SCHEME_DIRECT, RequestPriority priority = DEFAULT_PRIORITY) { return std::make_unique<SSLConnectJob>( - kGroupName, priority, SocketTag(), true /* respect_limits */, + priority, + CommonConnectJobParams( + kGroupName, SocketTag(), true /* respect_limits */, + &socket_factory_, &host_resolver_, ssl_client_socket_context_, + nullptr /* socket_performance_watcher */, + nullptr /* network_quality_estimator */, nullptr /* net_log */, + nullptr /* websocket_lock_endpoint_manager */), SSLParams(proxy_scheme), proxy_scheme == ProxyServer::SCHEME_DIRECT ? &transport_socket_pool_ : nullptr, @@ -157,9 +171,7 @@ : nullptr, proxy_scheme == ProxyServer::SCHEME_HTTP ? &http_proxy_socket_pool_ : nullptr, - &socket_factory_, ssl_client_socket_context_, - nullptr /* network_quality_estimator */, test_delegate, - nullptr /* net_log */); + test_delegate); } scoped_refptr<SSLSocketParams> SSLParams(ProxyServer::Scheme proxy) {
diff --git a/net/socket/transport_client_socket_pool.cc b/net/socket/transport_client_socket_pool.cc index 9622ea5d..ae4a224 100644 --- a/net/socket/transport_client_socket_pool.cc +++ b/net/socket/transport_client_socket_pool.cc
@@ -72,33 +72,55 @@ CommonConnectJobParams( group_name, request.socket_tag(), request.respect_limits() == ClientSocketPool::RespectLimits::ENABLED, - client_socket_factory_, socket_performance_watcher_factory_, - host_resolver_, net_log_, - nullptr /* websocket_endpoint_lock_manager */), + client_socket_factory_, host_resolver_, ssl_client_socket_context_, + socket_performance_watcher_factory_, network_quality_estimator_, + net_log_, nullptr /* websocket_endpoint_lock_manager */), delegate); } TransportClientSocketPool::TransportClientSocketPool( int max_sockets, int max_sockets_per_group, - HostResolver* host_resolver, ClientSocketFactory* client_socket_factory, + HostResolver* host_resolver, + CertVerifier* cert_verifier, + ChannelIDService* channel_id_service, + TransportSecurityState* transport_security_state, + CTVerifier* cert_transparency_verifier, + CTPolicyEnforcer* ct_policy_enforcer, + const std::string& ssl_session_cache_shard, + SSLConfigService* ssl_config_service, SocketPerformanceWatcherFactory* socket_performance_watcher_factory, + NetworkQualityEstimator* network_quality_estimator, NetLog* net_log) - : base_(NULL, + : base_(nullptr, max_sockets, max_sockets_per_group, ClientSocketPool::unused_idle_socket_timeout(), ClientSocketPool::used_idle_socket_timeout(), - new TransportConnectJobFactory(client_socket_factory, - host_resolver, - socket_performance_watcher_factory, - net_log)), - client_socket_factory_(client_socket_factory) { + new TransportConnectJobFactory( + client_socket_factory, + host_resolver, + SSLClientSocketContext(cert_verifier, + channel_id_service, + transport_security_state, + cert_transparency_verifier, + ct_policy_enforcer, + ssl_session_cache_shard), + socket_performance_watcher_factory, + network_quality_estimator, + net_log)), + client_socket_factory_(client_socket_factory), + ssl_config_service_(ssl_config_service) { base_.EnableConnectBackupJobs(); + if (ssl_config_service_) + ssl_config_service_->AddObserver(this); } -TransportClientSocketPool::~TransportClientSocketPool() = default; +TransportClientSocketPool::~TransportClientSocketPool() { + if (ssl_config_service_) + ssl_config_service_->RemoveObserver(this); +} int TransportClientSocketPool::RequestSocket(const std::string& group_name, const void* params, @@ -212,4 +234,10 @@ base_.RemoveHigherLayeredPool(higher_pool); } +void TransportClientSocketPool::OnSSLConfigChanged() { + // When the user changes the SSL config, flush all idle sockets so they won't + // get re-used. + FlushWithError(ERR_NETWORK_CHANGED); +} + } // namespace net
diff --git a/net/socket/transport_client_socket_pool.h b/net/socket/transport_client_socket_pool.h index 2cc8e3c..c10ef1e0 100644 --- a/net/socket/transport_client_socket_pool.h +++ b/net/socket/transport_client_socket_pool.h
@@ -16,18 +16,28 @@ #include "net/socket/client_socket_pool_base.h" #include "net/socket/connection_attempts.h" #include "net/socket/socket_tag.h" +#include "net/socket/ssl_client_socket.h" +#include "net/ssl/ssl_config_service.h" namespace net { +class CertVerifier; +class ChannelIDService; class ClientSocketFactory; +class CTVerifier; +class CTPolicyEnforcer; class HostResolver; class NetLog; class NetLogWithSource; +class NetworkQualityEstimator; class SocketPerformanceWatcherFactory; class SOCKSSocketParams; +class TransportSecurityState; class TransportSocketParams; -class NET_EXPORT_PRIVATE TransportClientSocketPool : public ClientSocketPool { +class NET_EXPORT_PRIVATE TransportClientSocketPool + : public ClientSocketPool, + public SSLConfigService::Observer { public: // Callback to create a ConnectJob using the provided arguments. The lower // level parameters used to construct the ConnectJob (like hostname, type of @@ -73,9 +83,17 @@ TransportClientSocketPool( int max_sockets, int max_sockets_per_group, - HostResolver* host_resolver, ClientSocketFactory* client_socket_factory, + HostResolver* host_resolver, + CertVerifier* cert_verifier, + ChannelIDService* channel_id_service, + TransportSecurityState* transport_security_state, + CTVerifier* cert_transparency_verifier, + CTPolicyEnforcer* ct_policy_enforcer, + const std::string& ssl_session_cache_shard, + SSLConfigService* ssl_config_service, SocketPerformanceWatcherFactory* socket_performance_watcher_factory, + NetworkQualityEstimator* network_quality_estimator, NetLog* net_log); ~TransportClientSocketPool() override; @@ -137,12 +155,16 @@ TransportConnectJobFactory( ClientSocketFactory* client_socket_factory, HostResolver* host_resolver, + const SSLClientSocketContext& ssl_client_socket_context, SocketPerformanceWatcherFactory* socket_performance_watcher_factory, + NetworkQualityEstimator* network_quality_estimator, NetLog* net_log) : client_socket_factory_(client_socket_factory), + host_resolver_(host_resolver), + ssl_client_socket_context_(ssl_client_socket_context), socket_performance_watcher_factory_( socket_performance_watcher_factory), - host_resolver_(host_resolver), + network_quality_estimator_(network_quality_estimator), net_log_(net_log) {} ~TransportConnectJobFactory() override {} @@ -156,15 +178,21 @@ private: ClientSocketFactory* const client_socket_factory_; - SocketPerformanceWatcherFactory* socket_performance_watcher_factory_; HostResolver* const host_resolver_; - NetLog* net_log_; + const SSLClientSocketContext ssl_client_socket_context_; + SocketPerformanceWatcherFactory* const socket_performance_watcher_factory_; + NetworkQualityEstimator* const network_quality_estimator_; + NetLog* const net_log_; DISALLOW_COPY_AND_ASSIGN(TransportConnectJobFactory); }; + // SSLConfigService::Observer methods. + void OnSSLConfigChanged() override; + PoolBase base_; ClientSocketFactory* const client_socket_factory_; + SSLConfigService* const ssl_config_service_; DISALLOW_COPY_AND_ASSIGN(TransportClientSocketPool); };
diff --git a/net/socket/transport_client_socket_pool_unittest.cc b/net/socket/transport_client_socket_pool_unittest.cc index 57169cd..9865ac0 100644 --- a/net/socket/transport_client_socket_pool_unittest.cc +++ b/net/socket/transport_client_socket_pool_unittest.cc
@@ -27,6 +27,8 @@ #include "net/socket/stream_socket.h" #include "net/socket/transport_client_socket_pool_test_util.h" #include "net/socket/transport_connect_job.h" +#include "net/ssl/ssl_config_service.h" +#include "net/ssl/ssl_config_service_defaults.h" #include "net/test/embedded_test_server/embedded_test_server.h" #include "net/test/gtest_util.h" #include "net/test/test_with_scoped_task_environment.h" @@ -77,6 +79,7 @@ TransportClientSocketPoolTest() : connect_backup_jobs_enabled_( ClientSocketPoolBaseHelper::set_connect_backup_jobs_enabled(true)), + ssl_config_service_(std::make_unique<SSLConfigServiceDefaults>()), params_(TransportClientSocketPool::SocketParams:: CreateFromTransportSocketParams( base::MakeRefCounted<TransportSocketParams>( @@ -87,10 +90,18 @@ client_socket_factory_(&net_log_), pool_(kMaxSockets, kMaxSocketsPerGroup, - host_resolver_.get(), &client_socket_factory_, - NULL, - NULL) {} + host_resolver_.get(), + nullptr /* cert_verifier */, + nullptr /* channel_id_server */, + nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + ssl_config_service_.get(), + nullptr /* socket_performance_watcher_factory */, + nullptr /* network_quality_estimator */, + nullptr /* net_log */) {} ~TransportClientSocketPoolTest() override { internal::ClientSocketPoolBaseHelper::set_connect_backup_jobs_enabled( @@ -128,6 +139,7 @@ bool connect_backup_jobs_enabled_; TestNetLog net_log_; + std::unique_ptr<SSLConfigService> ssl_config_service_; scoped_refptr<TransportClientSocketPool::SocketParams> params_; std::unique_ptr<MockHostResolver> host_resolver_; MockTransportClientSocketFactory client_socket_factory_; @@ -396,8 +408,16 @@ } TEST_F(TransportClientSocketPoolTest, RequestIgnoringLimitsIsNotReprioritized) { - TransportClientSocketPool pool(kMaxSockets, 1, host_resolver_.get(), - &client_socket_factory_, nullptr, nullptr); + TransportClientSocketPool pool( + kMaxSockets, 1, &client_socket_factory_, host_resolver_.get(), + nullptr /* cert_verifier */, nullptr /* channel_id_server */, + nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, + nullptr /* socket_performance_watcher_factory */, + nullptr /* network_quality_estimator */, nullptr /* net_log */); // Creates a job which ignores limits whose priority is MAXIMUM_PRIORITY TestCompletionCallback callback1; @@ -839,7 +859,7 @@ TestLoadTimingInfoConnectedReused(handle); } -TEST_F(TransportClientSocketPoolTest, ResetIdleSocketsOnIPAddressChange) { +TEST_F(TransportClientSocketPoolTest, CloseIdleSocketsOnIPAddressChange) { TestCompletionCallback callback; ClientSocketHandle handle; int rv = handle.Init("a", params_, LOW, SocketTag(), @@ -868,6 +888,35 @@ EXPECT_EQ(0, pool_.IdleSocketCount()); } +TEST_F(TransportClientSocketPoolTest, CloseIdleSocketsOnSSLConfigChange) { + TestCompletionCallback callback; + ClientSocketHandle handle; + int rv = handle.Init("a", params_, LOW, SocketTag(), + ClientSocketPool::RespectLimits::ENABLED, + callback.callback(), &pool_, NetLogWithSource()); + EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); + EXPECT_FALSE(handle.is_initialized()); + EXPECT_FALSE(handle.socket()); + + EXPECT_THAT(callback.WaitForResult(), IsOk()); + EXPECT_TRUE(handle.is_initialized()); + EXPECT_TRUE(handle.socket()); + + handle.Reset(); + + // Need to run all pending to release the socket back to the pool. + base::RunLoop().RunUntilIdle(); + + // Now we should have 1 idle socket. + EXPECT_EQ(1, pool_.IdleSocketCount()); + + // After an SSL configuration change, we should have 0 idle sockets. + ssl_config_service_->NotifySSLConfigChange(); + base::RunLoop().RunUntilIdle(); // Notification happens async. + + EXPECT_EQ(0, pool_.IdleSocketCount()); +} + TEST_F(TransportClientSocketPoolTest, BackupSocketConnect) { // Case 1 tests the first socket stalling, and the backup connecting. MockTransportClientSocketFactory::ClientSocketType case1_types[] = { @@ -1073,8 +1122,15 @@ for (IoMode socket_io_mode : {SYNCHRONOUS, ASYNC}) { MockTaggingClientSocketFactory socket_factory; TransportClientSocketPool pool( - kMaxSockets, kMaxSocketsPerGroup, host_resolver_.get(), &socket_factory, - nullptr /* socket_performance_watcher_factory */, nullptr /* netlog */); + kMaxSockets, kMaxSocketsPerGroup, &socket_factory, host_resolver_.get(), + nullptr /* cert_verifier */, nullptr /* channel_id_server */, + nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, + nullptr /* socket_performance_watcher_factory */, + nullptr /* network_quality_estimator */, nullptr /* netlog */); scoped_refptr<TransportSocketParams> tcp_params(new TransportSocketParams( HostPortPair("proxy", 80), false, OnHostResolutionCallback())); @@ -1110,8 +1166,16 @@ ASSERT_TRUE(test_server.Start()); TransportClientSocketPool pool( - kMaxSockets, kMaxSocketsPerGroup, host_resolver_.get(), - ClientSocketFactory::GetDefaultFactory(), NULL, NULL); + kMaxSockets, kMaxSocketsPerGroup, + ClientSocketFactory::GetDefaultFactory(), host_resolver_.get(), + nullptr /* cert_verifier */, nullptr /* channel_id_server */, + nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, + nullptr /* socket_performance_watcher_factory */, + nullptr /* network_quality_estimator */, nullptr /* netlog */); ClientSocketHandle handle; int32_t tag_val1 = 0x12345678; SocketTag tag1(SocketTag::UNSET_UID, tag_val1); @@ -1228,8 +1292,15 @@ host_resolver_->set_synchronous_mode(true); MockTaggingClientSocketFactory socket_factory; TransportClientSocketPool pool( - kMaxSockets, kMaxSocketsPerGroup, host_resolver_.get(), &socket_factory, - nullptr /* socket_performance_watcher_factory */, nullptr /* netlog */); + kMaxSockets, kMaxSocketsPerGroup, &socket_factory, host_resolver_.get(), + nullptr /* cert_verifier */, nullptr /* channel_id_server */, + nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, + nullptr /* socket_performance_watcher_factory */, + nullptr /* network_quality_estimator */, nullptr /* netlog */); SocketTag tag1(SocketTag::UNSET_UID, 0x12345678); SocketTag tag2(getuid(), 0x87654321);
diff --git a/net/socket/transport_connect_job_unittest.cc b/net/socket/transport_connect_job_unittest.cc index 7a515a5..81c24694 100644 --- a/net/socket/transport_connect_job_unittest.cc +++ b/net/socket/transport_connect_job_unittest.cc
@@ -43,9 +43,10 @@ CommonConnectJobParams DefaultCommonConnectJobParams() { return CommonConnectJobParams( kHostName /* group_name */, SocketTag(), true /* respect_limits */, - &client_socket_factory_, - nullptr /* socket_performance_watcher_factory */, &host_resolver_, - &net_log_, nullptr /* websocket_endpoint_lock_manager */); + &client_socket_factory_, &host_resolver_, SSLClientSocketContext(), + nullptr /* socket_performance_watcher_factory */, + nullptr /* network_quality_estimator */, &net_log_, + nullptr /* websocket_endpoint_lock_manager */); } protected:
diff --git a/net/socket/websocket_transport_client_socket_pool.cc b/net/socket/websocket_transport_client_socket_pool.cc index 4d7117f..98833df 100644 --- a/net/socket/websocket_transport_client_socket_pool.cc +++ b/net/socket/websocket_transport_client_socket_pool.cc
@@ -29,19 +29,43 @@ WebSocketTransportClientSocketPool::WebSocketTransportClientSocketPool( int max_sockets, int max_sockets_per_group, - HostResolver* host_resolver, ClientSocketFactory* client_socket_factory, + HostResolver* host_resolver, + CertVerifier* cert_verifier, + ChannelIDService* channel_id_service, + TransportSecurityState* transport_security_state, + CTVerifier* cert_transparency_verifier, + CTPolicyEnforcer* ct_policy_enforcer, + const std::string& ssl_session_cache_shard, + SSLConfigService* ssl_config_service, + NetworkQualityEstimator* network_quality_estimator, WebSocketEndpointLockManager* websocket_endpoint_lock_manager, NetLog* net_log) - : TransportClientSocketPool(max_sockets, - max_sockets_per_group, - host_resolver, - client_socket_factory, - nullptr, - net_log), + : TransportClientSocketPool( + max_sockets, + max_sockets_per_group, + client_socket_factory, + host_resolver, + cert_verifier, + channel_id_service, + transport_security_state, + cert_transparency_verifier, + ct_policy_enforcer, + ssl_session_cache_shard, + ssl_config_service, + nullptr /* socket_performance_watcher_factory */, + network_quality_estimator, + net_log), pool_net_log_(net_log), client_socket_factory_(client_socket_factory), host_resolver_(host_resolver), + ssl_client_socket_context_(cert_verifier, + channel_id_service, + transport_security_state, + cert_transparency_verifier, + ct_policy_enforcer, + ssl_session_cache_shard), + network_quality_estimator_(network_quality_estimator), websocket_endpoint_lock_manager_(websocket_endpoint_lock_manager), max_sockets_(max_sockets), handed_out_socket_count_(0), @@ -113,11 +137,13 @@ std::unique_ptr<ConnectJob> connect_job = casted_params->create_connect_job_callback().Run( priority, - CommonConnectJobParams( - group_name, SocketTag(), respect_limits == RespectLimits::ENABLED, - client_socket_factory_, - nullptr /* SocketPerformanceWatcherFactory */, host_resolver_, - pool_net_log_, websocket_endpoint_lock_manager_), + CommonConnectJobParams(group_name, SocketTag(), + respect_limits == RespectLimits::ENABLED, + client_socket_factory_, host_resolver_, + ssl_client_socket_context_, + nullptr /* SocketPerformanceWatcherFactory */, + network_quality_estimator_, pool_net_log_, + websocket_endpoint_lock_manager_), connect_job_delegate.get()); int result = connect_job_delegate->Connect(std::move(connect_job));
diff --git a/net/socket/websocket_transport_client_socket_pool.h b/net/socket/websocket_transport_client_socket_pool.h index 6e14b88..afa0504a 100644 --- a/net/socket/websocket_transport_client_socket_pool.h +++ b/net/socket/websocket_transport_client_socket_pool.h
@@ -21,6 +21,7 @@ #include "net/log/net_log_with_source.h" #include "net/socket/client_socket_pool.h" #include "net/socket/client_socket_pool_base.h" +#include "net/socket/ssl_client_socket.h" #include "net/socket/transport_client_socket_pool.h" namespace base { @@ -32,6 +33,8 @@ class ClientSocketFactory; class HostResolver; class NetLog; +class NetworkQualityEstimator; +class SSLConfigService; class WebSocketEndpointLockManager; class WebSocketTransportConnectJob; @@ -41,8 +44,16 @@ WebSocketTransportClientSocketPool( int max_sockets, int max_sockets_per_group, - HostResolver* host_resolver, ClientSocketFactory* client_socket_factory, + HostResolver* host_resolver, + CertVerifier* cert_verifier, + ChannelIDService* channel_id_service, + TransportSecurityState* transport_security_state, + CTVerifier* cert_transparency_verifier, + CTPolicyEnforcer* ct_policy_enforcer, + const std::string& ssl_session_cache_shard, + SSLConfigService* ssl_config_service, + NetworkQualityEstimator* network_quality_estimator, WebSocketEndpointLockManager* websocket_endpoint_lock_manager, NetLog* net_log); @@ -186,6 +197,8 @@ NetLog* const pool_net_log_; ClientSocketFactory* const client_socket_factory_; HostResolver* const host_resolver_; + const SSLClientSocketContext ssl_client_socket_context_; + NetworkQualityEstimator* const network_quality_estimator_; WebSocketEndpointLockManager* websocket_endpoint_lock_manager_; const int max_sockets_; int handed_out_socket_count_;
diff --git a/net/socket/websocket_transport_client_socket_pool_unittest.cc b/net/socket/websocket_transport_client_socket_pool_unittest.cc index aa0693b8..d4fa8ca0 100644 --- a/net/socket/websocket_transport_client_socket_pool_unittest.cc +++ b/net/socket/websocket_transport_client_socket_pool_unittest.cc
@@ -69,10 +69,18 @@ client_socket_factory_(&net_log_), pool_(kMaxSockets, kMaxSocketsPerGroup, - host_resolver_.get(), &client_socket_factory_, + host_resolver_.get(), + nullptr /* cert_verifier */, + nullptr /* channel_id_server */, + nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, + nullptr /* network_quality_estimator */, &websocket_endpoint_lock_manager_, - nullptr) { + nullptr /* netlog */) { websocket_endpoint_lock_manager_.SetUnlockDelayForTesting( base::TimeDelta()); } @@ -529,8 +537,14 @@ TEST_F(WebSocketTransportClientSocketPoolTest, IPv6FallbackSocketIPv4FinishesFirst) { WebSocketTransportClientSocketPool pool( - kMaxSockets, kMaxSocketsPerGroup, host_resolver_.get(), - &client_socket_factory_, &websocket_endpoint_lock_manager_, nullptr); + kMaxSockets, kMaxSocketsPerGroup, &client_socket_factory_, + host_resolver_.get(), nullptr /* cert_verifier */, + nullptr /* channel_id_server */, nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */, + &websocket_endpoint_lock_manager_, nullptr /* netlog */); MockTransportClientSocketFactory::ClientSocketType case_types[] = { // This is the IPv6 socket. @@ -568,8 +582,14 @@ TEST_F(WebSocketTransportClientSocketPoolTest, IPv6FallbackSocketIPv6FinishesFirst) { WebSocketTransportClientSocketPool pool( - kMaxSockets, kMaxSocketsPerGroup, host_resolver_.get(), - &client_socket_factory_, &websocket_endpoint_lock_manager_, nullptr); + kMaxSockets, kMaxSocketsPerGroup, &client_socket_factory_, + host_resolver_.get(), nullptr /* cert_verifier */, + nullptr /* channel_id_server */, nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */, + &websocket_endpoint_lock_manager_, nullptr /* netlog */); MockTransportClientSocketFactory::ClientSocketType case_types[] = { // This is the IPv6 socket. @@ -606,8 +626,14 @@ TEST_F(WebSocketTransportClientSocketPoolTest, IPv6NoIPv4AddressesToFallbackTo) { WebSocketTransportClientSocketPool pool( - kMaxSockets, kMaxSocketsPerGroup, host_resolver_.get(), - &client_socket_factory_, &websocket_endpoint_lock_manager_, nullptr); + kMaxSockets, kMaxSocketsPerGroup, &client_socket_factory_, + host_resolver_.get(), nullptr /* cert_verifier */, + nullptr /* channel_id_server */, nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */, + &websocket_endpoint_lock_manager_, nullptr /* netlog */); client_socket_factory_.set_default_client_socket_type( MockTransportClientSocketFactory::MOCK_DELAYED_CLIENT_SOCKET); @@ -636,8 +662,14 @@ TEST_F(WebSocketTransportClientSocketPoolTest, IPv4HasNoFallback) { WebSocketTransportClientSocketPool pool( - kMaxSockets, kMaxSocketsPerGroup, host_resolver_.get(), - &client_socket_factory_, &websocket_endpoint_lock_manager_, nullptr); + kMaxSockets, kMaxSocketsPerGroup, &client_socket_factory_, + host_resolver_.get(), nullptr /* cert_verifier */, + nullptr /* channel_id_server */, nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */, + &websocket_endpoint_lock_manager_, nullptr /* netlog */); client_socket_factory_.set_default_client_socket_type( MockTransportClientSocketFactory::MOCK_DELAYED_CLIENT_SOCKET); @@ -667,8 +699,14 @@ // proceeed immediately. TEST_F(WebSocketTransportClientSocketPoolTest, IPv6InstantFail) { WebSocketTransportClientSocketPool pool( - kMaxSockets, kMaxSocketsPerGroup, host_resolver_.get(), - &client_socket_factory_, &websocket_endpoint_lock_manager_, nullptr); + kMaxSockets, kMaxSocketsPerGroup, &client_socket_factory_, + host_resolver_.get(), nullptr /* cert_verifier */, + nullptr /* channel_id_server */, nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */, + &websocket_endpoint_lock_manager_, nullptr /* netlog */); MockTransportClientSocketFactory::ClientSocketType case_types[] = { // First IPv6 socket. @@ -702,8 +740,14 @@ // connections proceed immediately. TEST_F(WebSocketTransportClientSocketPoolTest, IPv6RapidFail) { WebSocketTransportClientSocketPool pool( - kMaxSockets, kMaxSocketsPerGroup, host_resolver_.get(), - &client_socket_factory_, &websocket_endpoint_lock_manager_, nullptr); + kMaxSockets, kMaxSocketsPerGroup, &client_socket_factory_, + host_resolver_.get(), nullptr /* cert_verifier */, + nullptr /* channel_id_server */, nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */, + &websocket_endpoint_lock_manager_, nullptr /* netlog */); MockTransportClientSocketFactory::ClientSocketType case_types[] = { // First IPv6 socket. @@ -745,8 +789,14 @@ // type do not race). TEST_F(WebSocketTransportClientSocketPoolTest, FirstSuccessWins) { WebSocketTransportClientSocketPool pool( - kMaxSockets, kMaxSocketsPerGroup, host_resolver_.get(), - &client_socket_factory_, &websocket_endpoint_lock_manager_, nullptr); + kMaxSockets, kMaxSocketsPerGroup, &client_socket_factory_, + host_resolver_.get(), nullptr /* cert_verifier */, + nullptr /* channel_id_server */, nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */, + &websocket_endpoint_lock_manager_, nullptr /* netlog */); client_socket_factory_.set_default_client_socket_type( MockTransportClientSocketFactory::MOCK_TRIGGERABLE_CLIENT_SOCKET); @@ -782,8 +832,14 @@ // We should not report failure until all connections have failed. TEST_F(WebSocketTransportClientSocketPoolTest, LastFailureWins) { WebSocketTransportClientSocketPool pool( - kMaxSockets, kMaxSocketsPerGroup, host_resolver_.get(), - &client_socket_factory_, &websocket_endpoint_lock_manager_, nullptr); + kMaxSockets, kMaxSocketsPerGroup, &client_socket_factory_, + host_resolver_.get(), nullptr /* cert_verifier */, + nullptr /* channel_id_server */, nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */, + &websocket_endpoint_lock_manager_, nullptr /* netlog */); client_socket_factory_.set_default_client_socket_type( MockTransportClientSocketFactory::MOCK_DELAYED_FAILING_CLIENT_SOCKET); @@ -823,8 +879,14 @@ // want to run it. TEST_F(WebSocketTransportClientSocketPoolTest, DISABLED_OverallTimeoutApplies) { WebSocketTransportClientSocketPool pool( - kMaxSockets, kMaxSocketsPerGroup, host_resolver_.get(), - &client_socket_factory_, &websocket_endpoint_lock_manager_, nullptr); + kMaxSockets, kMaxSocketsPerGroup, &client_socket_factory_, + host_resolver_.get(), nullptr /* cert_verifier */, + nullptr /* channel_id_server */, nullptr /* transport_security_state */, + nullptr /* cert_transparency_verifier */, + nullptr /* ct_policy_enforcer */, + std::string() /* ssl_session_cache_shard */, + nullptr /* ssl_config_service */, nullptr /* network_quality_estimator */, + &websocket_endpoint_lock_manager_, nullptr /* netlog */); const base::TimeDelta connect_job_timeout = TransportConnectJob::ConnectionTimeout();
diff --git a/services/audio/input_controller_unittest.cc b/services/audio/input_controller_unittest.cc index 44396fd..9a962618 100644 --- a/services/audio/input_controller_unittest.cc +++ b/services/audio/input_controller_unittest.cc
@@ -270,9 +270,9 @@ } #if defined(AUDIO_PROCESSING_IN_AUDIO_SERVICE) -INSTANTIATE_TEST_CASE_P(, InputControllerTest, ::testing::Bool()); +INSTANTIATE_TEST_SUITE_P(, InputControllerTest, ::testing::Bool()); #else -INSTANTIATE_TEST_CASE_P(, InputControllerTest, testing::Values(false)); +INSTANTIATE_TEST_SUITE_P(, InputControllerTest, testing::Values(false)); #endif } // namespace audio
diff --git a/services/audio/output_controller_unittest.cc b/services/audio/output_controller_unittest.cc index 0e0e80e..c79b1be1 100644 --- a/services/audio/output_controller_unittest.cc +++ b/services/audio/output_controller_unittest.cc
@@ -707,10 +707,10 @@ EXPECT_EQ(mute_stream, last_closed_stream()); } -INSTANTIATE_TEST_CASE_P(OutputControllerSnoopingTest, - WithSnoopingMode, - ::testing::Values(Snoopable::SnoopingMode::kDeferred, - Snoopable::SnoopingMode::kRealtime)); +INSTANTIATE_TEST_SUITE_P(OutputControllerSnoopingTest, + WithSnoopingMode, + ::testing::Values(Snoopable::SnoopingMode::kDeferred, + Snoopable::SnoopingMode::kRealtime)); TEST_F(OutputControllerTest, InformsStreamMonitorsAlreadyInGroup) { MockStreamMonitor monitor;
diff --git a/services/audio/snooper_node_unittest.cc b/services/audio/snooper_node_unittest.cc index 145d56d..1501c28 100644 --- a/services/audio/snooper_node_unittest.cc +++ b/services/audio/snooper_node_unittest.cc
@@ -377,44 +377,45 @@ output_frames_per_buffer)}; } -INSTANTIATE_TEST_CASE_P(, - SnooperNodeTest, - testing::Values(MakeParams(media::CHANNEL_LAYOUT_STEREO, - 48000, - 480, - media::CHANNEL_LAYOUT_STEREO, - 48000, - 480), - MakeParams(media::CHANNEL_LAYOUT_STEREO, - 48000, - 64, - media::CHANNEL_LAYOUT_STEREO, - 48000, - 480), - MakeParams(media::CHANNEL_LAYOUT_STEREO, - 44100, - 64, - media::CHANNEL_LAYOUT_STEREO, - 48000, - 480), - MakeParams(media::CHANNEL_LAYOUT_STEREO, - 48000, - 512, - media::CHANNEL_LAYOUT_STEREO, - 44100, - 441), - MakeParams(media::CHANNEL_LAYOUT_MONO, - 8000, - 64, - media::CHANNEL_LAYOUT_STEREO, - 48000, - 480), - MakeParams(media::CHANNEL_LAYOUT_STEREO, - 48000, - 480, - media::CHANNEL_LAYOUT_MONO, - 8000, - 80))); +INSTANTIATE_TEST_SUITE_P( + , + SnooperNodeTest, + testing::Values(MakeParams(media::CHANNEL_LAYOUT_STEREO, + 48000, + 480, + media::CHANNEL_LAYOUT_STEREO, + 48000, + 480), + MakeParams(media::CHANNEL_LAYOUT_STEREO, + 48000, + 64, + media::CHANNEL_LAYOUT_STEREO, + 48000, + 480), + MakeParams(media::CHANNEL_LAYOUT_STEREO, + 44100, + 64, + media::CHANNEL_LAYOUT_STEREO, + 48000, + 480), + MakeParams(media::CHANNEL_LAYOUT_STEREO, + 48000, + 512, + media::CHANNEL_LAYOUT_STEREO, + 44100, + 441), + MakeParams(media::CHANNEL_LAYOUT_MONO, + 8000, + 64, + media::CHANNEL_LAYOUT_STEREO, + 48000, + 480), + MakeParams(media::CHANNEL_LAYOUT_STEREO, + 48000, + 480, + media::CHANNEL_LAYOUT_MONO, + 8000, + 80))); } // namespace } // namespace audio
diff --git a/services/audio/sync_reader_unittest.cc b/services/audio/sync_reader_unittest.cc index 1303bef..b4410fc 100644 --- a/services/audio/sync_reader_unittest.cc +++ b/services/audio/sync_reader_unittest.cc
@@ -112,8 +112,8 @@ reader.Read(output_bus.get()); } -INSTANTIATE_TEST_CASE_P(, - SyncReaderBitstreamTest, - ::testing::ValuesIn(overflow_test_case_values)); +INSTANTIATE_TEST_SUITE_P(, + SyncReaderBitstreamTest, + ::testing::ValuesIn(overflow_test_case_values)); } // namespace audio
diff --git a/services/audio/test/audio_system_to_service_adapter_test.cc b/services/audio/test/audio_system_to_service_adapter_test.cc index 5402f7f..c33239b9 100644 --- a/services/audio/test/audio_system_to_service_adapter_test.cc +++ b/services/audio/test/audio_system_to_service_adapter_test.cc
@@ -518,7 +518,7 @@ using AudioSystemToServiceAdapterTestVariations = testing::Types<audio::AudioSystemToServiceAdapterTestBase>; -INSTANTIATE_TYPED_TEST_CASE_P(AudioSystemToServiceAdapter, - AudioSystemTestTemplate, - AudioSystemToServiceAdapterTestVariations); +INSTANTIATE_TYPED_TEST_SUITE_P(AudioSystemToServiceAdapter, + AudioSystemTestTemplate, + AudioSystemToServiceAdapterTestVariations); } // namespace media
diff --git a/services/audio/test/in_process_service_test.cc b/services/audio/test/in_process_service_test.cc index e5ecefb..07506c0 100644 --- a/services/audio/test/in_process_service_test.cc +++ b/services/audio/test/in_process_service_test.cc
@@ -242,9 +242,9 @@ DISALLOW_COPY_AND_ASSIGN(InProcessServiceLifetimeTestBase); }; -INSTANTIATE_TYPED_TEST_CASE_P(InProcessAudioService, - ServiceLifetimeTestTemplate, - InProcessServiceLifetimeTestBase); +INSTANTIATE_TYPED_TEST_SUITE_P(InProcessAudioService, + ServiceLifetimeTestTemplate, + InProcessServiceLifetimeTestBase); } // namespace audio @@ -256,8 +256,8 @@ testing::Types<audio::InProcessServiceTest<false>, audio::InProcessServiceTest<true>>; -INSTANTIATE_TYPED_TEST_CASE_P(InProcessAudioService, - AudioSystemTestTemplate, - AudioSystemTestVariations); +INSTANTIATE_TYPED_TEST_SUITE_P(InProcessAudioService, + AudioSystemTestTemplate, + AudioSystemTestVariations); } // namespace media
diff --git a/services/audio/test/service_lifetime_test_template.h b/services/audio/test/service_lifetime_test_template.h index b87cabb3..c3cfa8a 100644 --- a/services/audio/test/service_lifetime_test_template.h +++ b/services/audio/test/service_lifetime_test_template.h
@@ -48,7 +48,7 @@ DISALLOW_COPY_AND_ASSIGN(ServiceLifetimeTestTemplate); }; -TYPED_TEST_CASE_P(ServiceLifetimeTestTemplate); +TYPED_TEST_SUITE_P(ServiceLifetimeTestTemplate); TYPED_TEST_P(ServiceLifetimeTestTemplate, ServiceQuitsWhenClientDisconnects) { mojom::SystemInfoPtr info; @@ -132,10 +132,10 @@ } } -REGISTER_TYPED_TEST_CASE_P(ServiceLifetimeTestTemplate, - ServiceQuitsWhenClientDisconnects, - ServiceQuitsWhenLastClientDisconnects, - ServiceRestartsWhenClientReconnects); +REGISTER_TYPED_TEST_SUITE_P(ServiceLifetimeTestTemplate, + ServiceQuitsWhenClientDisconnects, + ServiceQuitsWhenLastClientDisconnects, + ServiceRestartsWhenClientReconnects); } // namespace audio #endif // SERVICES_AUDIO_TEST_SERVICE_LIFETIME_TEST_TEMPLATE_H_
diff --git a/services/audio/test/standalone_service_test.cc b/services/audio/test/standalone_service_test.cc index 3824bdf..c2e872a 100644 --- a/services/audio/test/standalone_service_test.cc +++ b/services/audio/test/standalone_service_test.cc
@@ -51,7 +51,7 @@ DISALLOW_COPY_AND_ASSIGN(StandaloneAudioServiceTest); }; -INSTANTIATE_TYPED_TEST_CASE_P(StandaloneAudioService, - ServiceLifetimeTestTemplate, - StandaloneAudioServiceTest); +INSTANTIATE_TYPED_TEST_SUITE_P(StandaloneAudioService, + ServiceLifetimeTestTemplate, + StandaloneAudioServiceTest); } // namespace audio
diff --git a/services/network/cors/preflight_controller.cc b/services/network/cors/preflight_controller.cc index 42bc6ae9..b2c0f0bd 100644 --- a/services/network/cors/preflight_controller.cc +++ b/services/network/cors/preflight_controller.cc
@@ -30,7 +30,7 @@ const scoped_refptr<net::HttpResponseHeaders>& headers, const std::string& header_name) { std::string header_value; - if (!headers->GetNormalizedHeader(header_name, &header_value)) + if (!headers || !headers->GetNormalizedHeader(header_name, &header_value)) return base::nullopt; return header_value; } @@ -287,10 +287,10 @@ timing_info_.finish_time = base::TimeTicks::Now(); timing_info_.alpn_negotiated_protocol = head.alpn_negotiated_protocol; timing_info_.connection_info = head.connection_info; - if (head.headers) { - head.headers->GetNormalizedHeader("Timing-Allow-Origin", - &timing_info_.timing_allow_origin); - } + auto timing_allow_origin = + GetHeaderString(head.headers, "Timing-Allow-Origin"); + if (timing_allow_origin) + timing_info_.timing_allow_origin = *timing_allow_origin; timing_info_.transfer_size = head.encoded_data_length; base::Optional<CorsErrorStatus> detected_error_status;
diff --git a/services/network/ignore_errors_cert_verifier_unittest.cc b/services/network/ignore_errors_cert_verifier_unittest.cc index 7bdb9a5..6810dfa 100644 --- a/services/network/ignore_errors_cert_verifier_unittest.cc +++ b/services/network/ignore_errors_cert_verifier_unittest.cc
@@ -190,8 +190,8 @@ } } -INSTANTIATE_TEST_CASE_P(WithUserDataDirSwitchPresent, - IgnoreCertificateErrorsSPKIListFlagTest, - ::testing::Bool()); +INSTANTIATE_TEST_SUITE_P(WithUserDataDirSwitchPresent, + IgnoreCertificateErrorsSPKIListFlagTest, + ::testing::Bool()); } // namespace network
diff --git a/services/network/proxy_resolving_client_socket_unittest.cc b/services/network/proxy_resolving_client_socket_unittest.cc index 5f3be86..ce156abf 100644 --- a/services/network/proxy_resolving_client_socket_unittest.cc +++ b/services/network/proxy_resolving_client_socket_unittest.cc
@@ -76,9 +76,9 @@ const bool use_tls_; }; -INSTANTIATE_TEST_CASE_P(/* no prefix */, - ProxyResolvingClientSocketTest, - ::testing::Bool()); +INSTANTIATE_TEST_SUITE_P(/* no prefix */, + ProxyResolvingClientSocketTest, + ::testing::Bool()); // Tests that the global socket pool limit // (ClientSocketPoolManager::max_sockets_per_group) doesn't apply to this @@ -817,7 +817,7 @@ net::ERR_PROXY_CERTIFICATE_INVALID, net::ERR_SSL_PROTOCOL_ERROR}; -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( /* no prefix */, ReconsiderProxyAfterErrorTest, testing::Combine(testing::Bool(),
diff --git a/services/network/proxy_resolving_socket_mojo_unittest.cc b/services/network/proxy_resolving_socket_mojo_unittest.cc index 62730e17..9228d61 100644 --- a/services/network/proxy_resolving_socket_mojo_unittest.cc +++ b/services/network/proxy_resolving_socket_mojo_unittest.cc
@@ -176,9 +176,9 @@ DISALLOW_COPY_AND_ASSIGN(ProxyResolvingSocketTest); }; -INSTANTIATE_TEST_CASE_P(/* no prefix */, - ProxyResolvingSocketTest, - ::testing::Bool()); +INSTANTIATE_TEST_SUITE_P(/* no prefix */, + ProxyResolvingSocketTest, + ::testing::Bool()); // Tests that the connection is established to the proxy. TEST_P(ProxyResolvingSocketTest, ConnectToProxy) {
diff --git a/services/network/public/cpp/simple_url_loader_unittest.cc b/services/network/public/cpp/simple_url_loader_unittest.cc index a71782b6..f5a4b17 100644 --- a/services/network/public/cpp/simple_url_loader_unittest.cc +++ b/services/network/public/cpp/simple_url_loader_unittest.cc
@@ -2786,7 +2786,7 @@ EXPECT_EQ(url, test_helper->simple_url_loader()->GetFinalURL()); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( /* No prefix */, SimpleURLLoaderTest, testing::Values(SimpleLoaderTestHelper::DownloadType::TO_STRING,
diff --git a/services/network/socket_data_pump_unittest.cc b/services/network/socket_data_pump_unittest.cc index 8ae4b235..2112fab8 100644 --- a/services/network/socket_data_pump_unittest.cc +++ b/services/network/socket_data_pump_unittest.cc
@@ -139,9 +139,9 @@ DISALLOW_COPY_AND_ASSIGN(SocketDataPumpTest); }; -INSTANTIATE_TEST_CASE_P(/* no prefix */, - SocketDataPumpTest, - testing::Values(net::SYNCHRONOUS, net::ASYNC)); +INSTANTIATE_TEST_SUITE_P(/* no prefix */, + SocketDataPumpTest, + testing::Values(net::SYNCHRONOUS, net::ASYNC)); TEST_P(SocketDataPumpTest, ReadAndWriteMultiple) { const char kTestMsg[] = "abcdefghij";
diff --git a/services/network/tcp_socket_unittest.cc b/services/network/tcp_socket_unittest.cc index 22c4b7d..879523a9 100644 --- a/services/network/tcp_socket_unittest.cc +++ b/services/network/tcp_socket_unittest.cc
@@ -668,9 +668,9 @@ net::MockClientSocketFactory mock_client_socket_factory_; }; -INSTANTIATE_TEST_CASE_P(/* no prefix */, - TCPSocketWithMockSocketTest, - testing::Values(net::SYNCHRONOUS, net::ASYNC)); +INSTANTIATE_TEST_SUITE_P(/* no prefix */, + TCPSocketWithMockSocketTest, + testing::Values(net::SYNCHRONOUS, net::ASYNC)); // Tests that a server socket handles Accept() correctly when the underlying // implementation completes Accept() in sync and async mode.
diff --git a/services/network/test/test_url_loader_factory.cc b/services/network/test/test_url_loader_factory.cc index fab3064..60e83d5 100644 --- a/services/network/test/test_url_loader_factory.cc +++ b/services/network/test/test_url_loader_factory.cc
@@ -10,6 +10,7 @@ #include "net/http/http_status_code.h" #include "services/network/public/cpp/resource_request.h" #include "services/network/public/cpp/resource_request_body.h" +#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" #include "services/network/test/test_utils.h" namespace network { @@ -26,9 +27,14 @@ TestURLLoaderFactory::Response::~Response() = default; TestURLLoaderFactory::Response::Response(const Response&) = default; -TestURLLoaderFactory::TestURLLoaderFactory() {} +TestURLLoaderFactory::TestURLLoaderFactory() + : weak_wrapper_( + base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>( + this)) {} -TestURLLoaderFactory::~TestURLLoaderFactory() {} +TestURLLoaderFactory::~TestURLLoaderFactory() { + weak_wrapper_->Detach(); +} void TestURLLoaderFactory::AddResponse(const GURL& url, const ResourceResponseHead& head, @@ -128,6 +134,11 @@ bindings_.AddBinding(this, std::move(request)); } +scoped_refptr<network::WeakWrapperSharedURLLoaderFactory> +TestURLLoaderFactory::GetSafeWeakWrapper() { + return weak_wrapper_; +} + bool TestURLLoaderFactory::CreateLoaderAndStartInternal( const GURL& url, mojom::URLLoaderClient* client) {
diff --git a/services/network/test/test_url_loader_factory.h b/services/network/test/test_url_loader_factory.h index 55104966..609f402d 100644 --- a/services/network/test/test_url_loader_factory.h +++ b/services/network/test/test_url_loader_factory.h
@@ -10,12 +10,14 @@ #include <vector> #include "base/macros.h" +#include "base/memory/ref_counted.h" #include "mojo/public/cpp/bindings/binding_set.h" #include "net/http/http_status_code.h" #include "services/network/public/cpp/resource_request.h" #include "services/network/public/mojom/url_loader_factory.mojom.h" namespace network { +class WeakWrapperSharedURLLoaderFactory; // A helper class to ease testing code that uses URLLoader interface. A test // would pass this factory instead of the production factory to code, and @@ -145,6 +147,19 @@ traffic_annotation) override; void Clone(mojom::URLLoaderFactoryRequest request) override; + // Returns a 'safe' ref-counted weak wrapper around this TestURLLoaderFactory + // instance. + // + // Because this is a weak wrapper, it is possible for the underlying + // TestURLLoaderFactory instance to be destroyed while other code still holds + // a reference to it. + // + // The weak wrapper returned by this method is guaranteed to have had + // Detach() called before this is destructed, so that any future calls become + // no-ops, rather than a crash. + scoped_refptr<network::WeakWrapperSharedURLLoaderFactory> + GetSafeWeakWrapper(); + private: bool CreateLoaderAndStartInternal(const GURL& url, mojom::URLLoaderClient* client); @@ -171,6 +186,8 @@ std::vector<PendingRequest> pending_requests_; + scoped_refptr<network::WeakWrapperSharedURLLoaderFactory> weak_wrapper_; + Interceptor interceptor_; mojo::BindingSet<network::mojom::URLLoaderFactory> bindings_;
diff --git a/services/network/tls_client_socket_unittest.cc b/services/network/tls_client_socket_unittest.cc index 00c6aee..fbc6b18 100644 --- a/services/network/tls_client_socket_unittest.cc +++ b/services/network/tls_client_socket_unittest.cc
@@ -871,7 +871,7 @@ EXPECT_TRUE(data_provider.AllWriteDataConsumed()); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( /* no prefix */, TLSClientSocketTest, ::testing::Values(TLSClientSocketTestBase::kDirect, @@ -951,9 +951,9 @@ DISALLOW_COPY_AND_ASSIGN(TLSClientSocketIoModeTest); }; -INSTANTIATE_TEST_CASE_P(/* no prefix */, - TLSClientSocketIoModeTest, - testing::Values(net::SYNCHRONOUS, net::ASYNC)); +INSTANTIATE_TEST_SUITE_P(/* no prefix */, + TLSClientSocketIoModeTest, + testing::Values(net::SYNCHRONOUS, net::ASYNC)); TEST_P(TLSClientSocketIoModeTest, MultipleWriteToTLSSocket) { const int kNumIterations = 3; @@ -1178,7 +1178,7 @@ EXPECT_FALSE(post_tls_send_handle()->is_valid()); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( /* no prefix */, TLSClientSocketTestWithEmbeddedTestServer, ::testing::Values(TLSClientSocketTestBase::kDirect,
diff --git a/services/preferences/tracked/pref_hash_filter_unittest.cc b/services/preferences/tracked/pref_hash_filter_unittest.cc index 6ac980c3..e2da80ab 100644 --- a/services/preferences/tracked/pref_hash_filter_unittest.cc +++ b/services/preferences/tracked/pref_hash_filter_unittest.cc
@@ -1364,7 +1364,7 @@ ValueState::UNCHANGED)); } -INSTANTIATE_TEST_CASE_P(PrefHashFilterTestInstance, - PrefHashFilterTest, - testing::Values(EnforcementLevel::NO_ENFORCEMENT, - EnforcementLevel::ENFORCE_ON_LOAD)); +INSTANTIATE_TEST_SUITE_P(PrefHashFilterTestInstance, + PrefHashFilterTest, + testing::Values(EnforcementLevel::NO_ENFORCEMENT, + EnforcementLevel::ENFORCE_ON_LOAD));
diff --git a/services/preferences/tracked/segregated_pref_store_unittest.cc b/services/preferences/tracked/segregated_pref_store_unittest.cc index c9db593..c69b798 100644 --- a/services/preferences/tracked/segregated_pref_store_unittest.cc +++ b/services/preferences/tracked/segregated_pref_store_unittest.cc
@@ -340,15 +340,15 @@ EXPECT_TRUE(base::Value(kValue1).Equals(value)); } -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( WithoutCallback, SegregatedPrefStoreTest, ::testing::Values(CommitPendingWriteMode::WITHOUT_CALLBACK)); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( WithCallback, SegregatedPrefStoreTest, ::testing::Values(CommitPendingWriteMode::WITH_CALLBACK)); -INSTANTIATE_TEST_CASE_P( +INSTANTIATE_TEST_SUITE_P( WithSynchronousCallback, SegregatedPrefStoreTest, ::testing::Values(CommitPendingWriteMode::WITH_SYNCHRONOUS_CALLBACK));
diff --git a/services/tracing/DEPS b/services/tracing/DEPS index 265033b..f8c03d2 100644 --- a/services/tracing/DEPS +++ b/services/tracing/DEPS
@@ -1,4 +1,5 @@ include_rules = [ + "+components/tracing/common", "+services/service_manager/public", "+third_party/perfetto/include", "+third_party/perfetto/protos/perfetto",
diff --git a/services/tracing/perfetto/json_trace_exporter.cc b/services/tracing/perfetto/json_trace_exporter.cc index 7463985..f18413e 100644 --- a/services/tracing/perfetto/json_trace_exporter.cc +++ b/services/tracing/perfetto/json_trace_exporter.cc
@@ -342,6 +342,13 @@ consumer_endpoint_->DisableTracing(); } +void JSONTraceExporter::GetTraceStats(OnTraceStatsCallback callback) { + DCHECK(!stats_callback_ && callback); + stats_callback_ = std::move(callback); + + consumer_endpoint_->GetTraceStats(); +} + void JSONTraceExporter::OnTraceData(std::vector<perfetto::TracePacket> packets, bool has_more) { DCHECK(json_callback_); @@ -477,9 +484,10 @@ NOTREACHED(); } -void JSONTraceExporter::OnTraceStats(bool, const perfetto::TraceStats&) { - // We don't currently use GetTraceStats(). - NOTREACHED(); +void JSONTraceExporter::OnTraceStats(bool success, + const perfetto::TraceStats& stats) { + DCHECK(stats_callback_); + std::move(stats_callback_).Run(success, stats); } } // namespace tracing
diff --git a/services/tracing/perfetto/json_trace_exporter.h b/services/tracing/perfetto/json_trace_exporter.h index 2ea2ccd..fb0ca83 100644 --- a/services/tracing/perfetto/json_trace_exporter.h +++ b/services/tracing/perfetto/json_trace_exporter.h
@@ -47,6 +47,10 @@ bool has_more)>; void StopAndFlush(OnTraceEventJSONCallback callback); + using OnTraceStatsCallback = + base::OnceCallback<void(bool success, const perfetto::TraceStats& stats)>; + void GetTraceStats(OnTraceStatsCallback callback); + // perfetto::Consumer implementation. // This gets called by the Perfetto service as control signals, // and to send finished protobufs over. @@ -61,6 +65,7 @@ private: OnTraceEventJSONCallback json_callback_; + OnTraceStatsCallback stats_callback_; bool has_output_json_preamble_ = false; bool has_output_first_event_ = false; std::string config_;
diff --git a/services/tracing/perfetto/perfetto_tracing_coordinator.cc b/services/tracing/perfetto/perfetto_tracing_coordinator.cc index 6085b93..89df3552 100644 --- a/services/tracing/perfetto/perfetto_tracing_coordinator.cc +++ b/services/tracing/perfetto/perfetto_tracing_coordinator.cc
@@ -4,12 +4,14 @@ #include "services/tracing/perfetto/perfetto_tracing_coordinator.h" +#include <algorithm> #include <utility> #include "base/bind.h" #include "mojo/public/cpp/system/data_pipe_utils.h" #include "services/tracing/perfetto/json_trace_exporter.h" #include "services/tracing/perfetto/perfetto_service.h" +#include "third_party/perfetto/include/perfetto/tracing/core/trace_stats.h" namespace tracing { @@ -60,11 +62,45 @@ } } + void RequestBufferUsage(RequestBufferUsageCallback callback) { + if (!request_buffer_usage_callback_.is_null()) { + // TODO(eseckler): Reconsider whether we can DCHECK here after refactoring + // of content's TracingController. + std::move(callback).Run(false, 0, 0); + return; + } + request_buffer_usage_callback_ = std::move(callback); + json_trace_exporter_->GetTraceStats( + base::BindOnce(&TracingSession::OnTraceStats, base::Unretained(this))); + } + + void OnTraceStats(bool success, const perfetto::TraceStats& stats) { + DCHECK(request_buffer_usage_callback_); + if (!success) { + std::move(request_buffer_usage_callback_).Run(false, 0.0f, 0); + return; + } + DCHECK_EQ(1, stats.buffer_stats_size()); + const perfetto::TraceStats::BufferStats& buf_stats = + stats.buffer_stats()[0]; + size_t bytes_in_buffer = + buf_stats.bytes_written() - buf_stats.bytes_read() - + buf_stats.bytes_overwritten() + buf_stats.padding_bytes_written() - + buf_stats.padding_bytes_cleared(); + double percent_full = + bytes_in_buffer / static_cast<double>(buf_stats.buffer_size()); + percent_full = std::min(std::max(0.0, percent_full), 1.0); + // We know the size of data in the buffer, but not the number of events. + std::move(request_buffer_usage_callback_) + .Run(true, percent_full, 0 /*approx_event_count*/); + } + private: mojo::ScopedDataPipeProducerHandle stream_; std::unique_ptr<JSONTraceExporter> json_trace_exporter_; StopAndFlushCallback stop_and_flush_callback_; base::OnceClosure tracing_over_callback_; + RequestBufferUsageCallback request_buffer_usage_callback_; DISALLOW_COPY_AND_ASSIGN(TracingSession); }; @@ -137,7 +173,18 @@ } void PerfettoTracingCoordinator::IsTracing(IsTracingCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); std::move(callback).Run(tracing_session_ != nullptr); } +void PerfettoTracingCoordinator::RequestBufferUsage( + RequestBufferUsageCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + if (!tracing_session_) { + std::move(callback).Run(false, 0, 0); + return; + } + tracing_session_->RequestBufferUsage(std::move(callback)); +} + } // namespace tracing
diff --git a/services/tracing/perfetto/perfetto_tracing_coordinator.h b/services/tracing/perfetto/perfetto_tracing_coordinator.h index 26b53ed..609bcdc 100644 --- a/services/tracing/perfetto/perfetto_tracing_coordinator.h +++ b/services/tracing/perfetto/perfetto_tracing_coordinator.h
@@ -45,6 +45,7 @@ const std::string& agent_label, StopAndFlushCallback callback) override; void IsTracing(IsTracingCallback callback) override; + void RequestBufferUsage(RequestBufferUsageCallback callback) override; private: void BindOnSequence(mojom::CoordinatorRequest request);
diff --git a/services/tracing/public/cpp/BUILD.gn b/services/tracing/public/cpp/BUILD.gn index ff23910..7eee60dd 100644 --- a/services/tracing/public/cpp/BUILD.gn +++ b/services/tracing/public/cpp/BUILD.gn
@@ -36,6 +36,8 @@ "perfetto/traced_value_proto_writer.h", "trace_event_agent.cc", "trace_event_agent.h", + "trace_startup.cc", + "trace_startup.h", "traced_process_impl.cc", "traced_process_impl.h", "tracing_features.cc", @@ -49,6 +51,7 @@ public_deps = [ "//base", + "//components/tracing:startup_tracing", "//mojo/public/cpp/bindings", "//services/tracing/public/mojom", "//third_party/perfetto:libperfetto",
diff --git a/services/tracing/public/cpp/perfetto/producer_client.cc b/services/tracing/public/cpp/perfetto/producer_client.cc index 52b8d4d..5058045f 100644 --- a/services/tracing/public/cpp/perfetto/producer_client.cc +++ b/services/tracing/public/cpp/perfetto/producer_client.cc
@@ -13,6 +13,7 @@ #include "services/tracing/public/mojom/constants.mojom.h" #include "third_party/perfetto/include/perfetto/tracing/core/commit_data_request.h" #include "third_party/perfetto/include/perfetto/tracing/core/shared_memory_arbiter.h" +#include "third_party/perfetto/include/perfetto/tracing/core/startup_trace_writer_registry.h" #include "third_party/perfetto/include/perfetto/tracing/core/trace_writer.h" namespace tracing { @@ -105,6 +106,13 @@ std::move(producer_client))); } +void ProducerClient::BindStartupTraceWriterRegistry( + std::unique_ptr<perfetto::StartupTraceWriterRegistry> registry, + perfetto::BufferID target_buffer) { + shared_memory_arbiter_->BindStartupTraceWriterRegistry(std::move(registry), + target_buffer); +} + // The Mojo binding should run on the same sequence as the one we get // callbacks from Perfetto on, to avoid additional PostTasks. void ProducerClient::CreateMojoMessagepipesOnSequence( @@ -312,7 +320,6 @@ std::unique_ptr<perfetto::TraceWriter> ProducerClient::CreateTraceWriter( perfetto::BufferID target_buffer) { - DCHECK(shared_memory_arbiter_); return shared_memory_arbiter_->CreateTraceWriter(target_buffer); }
diff --git a/services/tracing/public/cpp/perfetto/producer_client.h b/services/tracing/public/cpp/perfetto/producer_client.h index 7514d7c..89ffca32 100644 --- a/services/tracing/public/cpp/perfetto/producer_client.h +++ b/services/tracing/public/cpp/perfetto/producer_client.h
@@ -23,6 +23,7 @@ namespace perfetto { class SharedMemoryArbiter; +class StartupTraceWriterRegistry; } // namespace perfetto namespace tracing { @@ -91,6 +92,13 @@ mojom::ProducerHostRequest)>; void CreateMojoMessagepipes(MessagepipesReadyCallback); + // Binds the registry and its trace writers to the ProducerClient's SMB, to + // write into the given target buffer. The ownership of |registry| is + // transferred to ProducerClient (and its SharedMemoryArbiter). + void BindStartupTraceWriterRegistry( + std::unique_ptr<perfetto::StartupTraceWriterRegistry> registry, + perfetto::BufferID target_buffer); + // Add a new data source to the ProducerClient; the caller // retains ownership and is responsible for making sure // the data source outlives the ProducerClient.
diff --git a/services/tracing/public/cpp/perfetto/trace_event_data_source.cc b/services/tracing/public/cpp/perfetto/trace_event_data_source.cc index 0d7d55a..7e26e4cd 100644 --- a/services/tracing/public/cpp/perfetto/trace_event_data_source.cc +++ b/services/tracing/public/cpp/perfetto/trace_event_data_source.cc
@@ -20,6 +20,8 @@ #include "services/tracing/public/cpp/perfetto/traced_value_proto_writer.h" #include "services/tracing/public/mojom/constants.mojom.h" #include "third_party/perfetto/include/perfetto/tracing/core/shared_memory_arbiter.h" +#include "third_party/perfetto/include/perfetto/tracing/core/startup_trace_writer.h" +#include "third_party/perfetto/include/perfetto/tracing/core/startup_trace_writer_registry.h" #include "third_party/perfetto/include/perfetto/tracing/core/trace_writer.h" #include "third_party/perfetto/protos/perfetto/trace/chrome/chrome_trace_event.pbzero.h" #include "third_party/perfetto/protos/perfetto/trace/trace_packet.pbzero.h" @@ -125,8 +127,9 @@ class TraceEventDataSource::ThreadLocalEventSink { public: - ThreadLocalEventSink(std::unique_ptr<perfetto::TraceWriter> trace_writer, - bool thread_will_flush) + ThreadLocalEventSink( + std::unique_ptr<perfetto::StartupTraceWriter> trace_writer, + bool thread_will_flush) : trace_writer_(std::move(trace_writer)), thread_will_flush_(thread_will_flush) { #if DCHECK_IS_ON() @@ -141,13 +144,8 @@ event_bundle_ = ChromeEventBundleHandle(); trace_packet_handle_ = perfetto::TraceWriter::TracePacketHandle(); - // Delete the TraceWriter on the sequence that Perfetto runs on, needed - // as the ThreadLocalEventSink gets deleted on thread - // shutdown and we can't safely call TaskRunnerHandle::Get() at that point - // (which can happen as the TraceWriter destructor might make a Mojo call - // and trigger it). - ProducerClient::GetTaskRunner()->DeleteSoon(FROM_HERE, - std::move(trace_writer_)); + TraceEventDataSource::GetInstance()->ReturnTraceWriter( + std::move(trace_writer_)); } void EnsureValidHandles() { @@ -236,6 +234,21 @@ const size_t kMaxSize = base::trace_event::TraceArguments::kMaxSize; uint32_t arg_name_indices[kMaxSize] = {0}; + // By default, we bundle multiple events into a single TracePacket, e.g. to + // avoid repeating strings by interning them into a string table. However, + // we shouldn't bundle events in two situations: + // 1) If the thread we're executing on is unable to flush events on demand + // (threads without a MessageLoop), the service will only be able to + // recover completed TracePackets. For these threads, bundling events + // would increase the number of events that are lost at the end of + // tracing. + // 2) During startup tracing, the StartupTraceWriter buffers TracePackets in + // a temporary local buffer until it is bound to the SMB when it becomes + // available. While a TracePacket is written to this temporary buffer, + // the writer cannot be bound to the SMB. Bundling events would increase + // the time during which binding the writer is blocked. + bool bundle_events = thread_will_flush_ && trace_writer_->was_bound(); + // Populate any new string table parts first; has to be done before // the add_trace_events() call (as the string table is part of the outer // proto message). @@ -243,7 +256,7 @@ // necessarily valid after the TRACE_EVENT* call, and so we need to store // the string every time. bool string_table_enabled = - !(trace_event->flags() & TRACE_EVENT_FLAG_COPY) && thread_will_flush_; + !(trace_event->flags() & TRACE_EVENT_FLAG_COPY) && bundle_events; if (string_table_enabled) { name_index = GetStringTableIndexForString(trace_event->name()); category_name_index = @@ -372,12 +385,10 @@ new_trace_event->set_bind_id(trace_event->bind_id()); } - // If we know that the current thread will never send a Flush message - // (meaning it's a thread without a messageloop that TraceLog knows about), - // we need to finalize the packet right away so Perfetto can recover it. - // We also enforce an upper bound on how many submessages we'll add - // for a given TracePacket so they won't grow infinitely. - if (!thread_will_flush_ || + // See comment for |bundle_events| above. We also enforce an upper bound on + // how many submessages we'll add for a given TracePacket so they won't grow + // infinitely. + if (!bundle_events || current_eventcount_for_message_++ > kMaxEventsPerMessage) { event_bundle_ = ChromeEventBundleHandle(); trace_packet_handle_ = perfetto::TraceWriter::TracePacketHandle(); @@ -421,7 +432,7 @@ } private: - std::unique_ptr<perfetto::TraceWriter> trace_writer_; + std::unique_ptr<perfetto::StartupTraceWriter> trace_writer_; const bool thread_will_flush_; ChromeEventBundleHandle event_bundle_; perfetto::TraceWriter::TracePacketHandle trace_packet_handle_; @@ -456,28 +467,53 @@ } TraceEventDataSource::TraceEventDataSource() - : DataSourceBase(mojom::kTraceEventDataSourceName) { -} + : DataSourceBase(mojom::kTraceEventDataSourceName) {} TraceEventDataSource::~TraceEventDataSource() = default; +void TraceEventDataSource::RegisterWithTraceLog() { + RegisterTracedValueProtoWriter(true); + TraceLog::GetInstance()->SetAddTraceEventOverrides( + &TraceEventDataSource::OnAddTraceEvent, + &TraceEventDataSource::FlushCurrentThread, + &TraceEventDataSource::OnUpdateDuration); +} + +void TraceEventDataSource::UnregisterFromTraceLog() { + RegisterTracedValueProtoWriter(false); + TraceLog::GetInstance()->SetAddTraceEventOverrides(nullptr, nullptr, nullptr); +} + +void TraceEventDataSource::SetupStartupTracing() { + { + base::AutoLock lock(lock_); + DCHECK(!startup_writer_registry_ && !producer_client_); + startup_writer_registry_ = + std::make_unique<perfetto::StartupTraceWriterRegistry>(); + } + RegisterWithTraceLog(); +} + void TraceEventDataSource::StartTracing( ProducerClient* producer_client, const mojom::DataSourceConfig& data_source_config) { + std::unique_ptr<perfetto::StartupTraceWriterRegistry> unbound_writer_registry; { base::AutoLock lock(lock_); DCHECK(!producer_client_); producer_client_ = producer_client; target_buffer_ = data_source_config.target_buffer; + // Reduce lock contention by binding the registry without holding the lock. + unbound_writer_registry = std::move(startup_writer_registry_); } - RegisterTracedValueProtoWriter(true); - - TraceLog::GetInstance()->SetAddTraceEventOverrides( - &TraceEventDataSource::OnAddTraceEvent, - &TraceEventDataSource::FlushCurrentThread, - &TraceEventDataSource::OnUpdateDuration); + if (unbound_writer_registry) { + producer_client->BindStartupTraceWriterRegistry( + std::move(unbound_writer_registry), data_source_config.target_buffer); + } else { + RegisterWithTraceLog(); + } TraceLog::GetInstance()->SetEnabled( TraceConfig(data_source_config.trace_config), TraceLog::RECORDING_MODE); @@ -494,9 +530,7 @@ return; } - RegisterTracedValueProtoWriter(false); - TraceLog::GetInstance()->SetAddTraceEventOverrides(nullptr, nullptr, - nullptr); + data_source->UnregisterFromTraceLog(); if (data_source->stop_complete_callback_) { std::move(data_source->stop_complete_callback_).Run(); @@ -555,10 +589,18 @@ TraceEventDataSource::ThreadLocalEventSink* TraceEventDataSource::CreateThreadLocalEventSink(bool thread_will_flush) { base::AutoLock lock(lock_); - - if (producer_client_) { + // |startup_writer_registry_| only exists during startup tracing before we + // connect to the service. |producer_client_| is reset when tracing is + // stopped. + if (startup_writer_registry_) { return new ThreadLocalEventSink( - producer_client_->CreateTraceWriter(target_buffer_), thread_will_flush); + startup_writer_registry_->CreateUnboundTraceWriter(), + thread_will_flush); + } else if (producer_client_) { + return new ThreadLocalEventSink( + std::make_unique<perfetto::StartupTraceWriter>( + producer_client_->CreateTraceWriter(target_buffer_)), + thread_will_flush); } else { return nullptr; } @@ -609,4 +651,23 @@ } } +void TraceEventDataSource::ReturnTraceWriter( + std::unique_ptr<perfetto::StartupTraceWriter> trace_writer) { + base::AutoLock lock(lock_); + if (startup_writer_registry_) { + // If the writer is still unbound, the registry will keep it alive until it + // was bound and its buffered data was copied. This ensures that we don't + // lose data from threads that are shut down during startup. + startup_writer_registry_->ReturnUnboundTraceWriter(std::move(trace_writer)); + } else { + // Delete the TraceWriter on the sequence that Perfetto runs on, needed + // as the ThreadLocalEventSink gets deleted on thread + // shutdown and we can't safely call TaskRunnerHandle::Get() at that point + // (which can happen as the TraceWriter destructor might make a Mojo call + // and trigger it). + ProducerClient::GetTaskRunner()->DeleteSoon(FROM_HERE, + std::move(trace_writer)); + } +} + } // namespace tracing
diff --git a/services/tracing/public/cpp/perfetto/trace_event_data_source.h b/services/tracing/public/cpp/perfetto/trace_event_data_source.h index e53d993..b803d12 100644 --- a/services/tracing/public/cpp/perfetto/trace_event_data_source.h +++ b/services/tracing/public/cpp/perfetto/trace_event_data_source.h
@@ -15,6 +15,8 @@ #include "services/tracing/public/cpp/perfetto/producer_client.h" namespace perfetto { +class StartupTraceWriter; +class StartupTraceWriterRegistry; class TraceWriter; } @@ -66,6 +68,12 @@ // Flushes and deletes the TraceWriter for the current thread, if any. static void FlushCurrentThread(); + // Installs TraceLog overrides for tracing during Chrome startup. Trace data + // is locally buffered until connection to the perfetto service is + // established. Expects a later call to StartTracing() to bind to the perfetto + // service. Should only be called once. + void SetupStartupTracing(); + // The ProducerClient is responsible for calling StopTracing // which will clear the stored pointer to it, before it // gets destroyed. ProducerClient::CreateTraceWriter can be @@ -83,6 +91,9 @@ TraceEventDataSource(); ~TraceEventDataSource() override; + void RegisterWithTraceLog(); + void UnregisterFromTraceLog(); + ThreadLocalEventSink* CreateThreadLocalEventSink(bool thread_will_flush); // Callback from TraceLog, can be called from any thread. @@ -93,10 +104,20 @@ const base::TimeTicks& now, const base::ThreadTicks& thread_now); - base::Lock lock_; + // Deletes TraceWriter safely on behalf of a ThreadLocalEventSink. + void ReturnTraceWriter( + std::unique_ptr<perfetto::StartupTraceWriter> trace_writer); + + base::OnceClosure stop_complete_callback_; + + base::Lock lock_; // Protects subsequent members. uint32_t target_buffer_ = 0; ProducerClient* producer_client_ = nullptr; - base::OnceClosure stop_complete_callback_; + // We own the registry during startup, but transfer its ownership to the + // ProducerClient once the perfetto service is available. Only set if + // SetupStartupTracing() is called. + std::unique_ptr<perfetto::StartupTraceWriterRegistry> + startup_writer_registry_; DISALLOW_COPY_AND_ASSIGN(TraceEventDataSource); };
diff --git a/components/tracing/common/trace_startup.cc b/services/tracing/public/cpp/trace_startup.cc similarity index 71% rename from components/tracing/common/trace_startup.cc rename to services/tracing/public/cpp/trace_startup.cc index f50a8882..13a382f 100644 --- a/components/tracing/common/trace_startup.cc +++ b/services/tracing/public/cpp/trace_startup.cc
@@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/tracing/common/trace_startup.h" +#include "services/tracing/public/cpp/trace_startup.h" #include "base/command_line.h" #include "base/logging.h" -#include "base/trace_event/memory_dump_manager.h" #include "base/trace_event/trace_log.h" -#include "build/build_config.h" #include "components/tracing/common/trace_startup_config.h" #include "components/tracing/common/trace_to_console.h" #include "components/tracing/common/tracing_switches.h" +#include "services/tracing/public/cpp/perfetto/trace_event_data_source.h" +#include "services/tracing/public/cpp/tracing_features.h" namespace tracing { @@ -19,10 +19,9 @@ const base::CommandLine& command_line = *base::CommandLine::ForCurrentProcess(); - // TODO(oysteine): Startup tracing using Perfetto - // is enabled by the Mojo consumer in content/browser - // for now; this is too late in the browser startup - // process however. + // TODO(oysteine): Support startup tracing to a perfetto protobuf trace. This + // should also enable TraceLog and call + // TraceEventDataSource::SetupStartupTracing(). if (command_line.HasSwitch(switches::kPerfettoOutputFile)) return; @@ -36,13 +35,19 @@ uint8_t modes = base::trace_event::TraceLog::RECORDING_MODE; if (!trace_config.event_filters().empty()) modes |= base::trace_event::TraceLog::FILTERING_MODE; + if (TracingUsesPerfettoBackend()) + TraceEventDataSource::GetInstance()->SetupStartupTracing(); base::trace_event::TraceLog::GetInstance()->SetEnabled( TraceStartupConfig::GetInstance()->GetTraceConfig(), modes); } else if (command_line.HasSwitch(switches::kTraceToConsole)) { + // TODO(eseckler): Remove ability to trace to the console, perfetto doesn't + // support this and noone seems to use it. base::trace_event::TraceConfig trace_config = GetConfigForTraceToConsole(); LOG(ERROR) << "Start " << switches::kTraceToConsole << " with CategoryFilter '" << trace_config.ToCategoryFilterString() << "'."; + if (TracingUsesPerfettoBackend()) + TraceEventDataSource::GetInstance()->SetupStartupTracing(); base::trace_event::TraceLog::GetInstance()->SetEnabled( trace_config, base::trace_event::TraceLog::RECORDING_MODE); }
diff --git a/services/tracing/public/cpp/trace_startup.h b/services/tracing/public/cpp/trace_startup.h new file mode 100644 index 0000000..a2dd3668 --- /dev/null +++ b/services/tracing/public/cpp/trace_startup.h
@@ -0,0 +1,20 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef SERVICES_TRACING_PUBLIC_CPP_TRACE_STARTUP_H_ +#define SERVICES_TRACING_PUBLIC_CPP_TRACE_STARTUP_H_ + +#include "base/component_export.h" + +namespace tracing { + +// If startup tracing command line flags are specified for the process, enables +// TraceLog with config based on the command line flags. Also hooks up service +// callbacks in TraceLog if necessary. The latter is required when the perfetto +// tracing backend is used. +void COMPONENT_EXPORT(TRACING_CPP) EnableStartupTracingIfNeeded(); + +} // namespace tracing + +#endif // SERVICES_TRACING_PUBLIC_CPP_TRACE_STARTUP_H_
diff --git a/services/tracing/public/cpp/tracing_features.cc b/services/tracing/public/cpp/tracing_features.cc index 2147693..6907dca 100644 --- a/services/tracing/public/cpp/tracing_features.cc +++ b/services/tracing/public/cpp/tracing_features.cc
@@ -6,19 +6,26 @@ #include <string> +#include "base/command_line.h" #include "base/metrics/field_trial_params.h" #include "base/strings/string_number_conversions.h" +#include "components/tracing/common/tracing_switches.h" namespace features { +// Enables the perfetto tracing backend. For startup tracing, pass the +// --enable-perfetto flag instead. const base::Feature kTracingPerfettoBackend{"TracingPerfettoBackend", base::FEATURE_DISABLED_BY_DEFAULT}; + } // namespace features namespace tracing { bool TracingUsesPerfettoBackend() { - return base::FeatureList::IsEnabled(features::kTracingPerfettoBackend); + return base::CommandLine::ForCurrentProcess()->HasSwitch( + switches::kEnablePerfetto) || + base::FeatureList::IsEnabled(features::kTracingPerfettoBackend); } } // namespace tracing
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json index f985303..12f9e073 100644 --- a/testing/buildbot/chromium.android.fyi.json +++ b/testing/buildbot/chromium.android.fyi.json
@@ -1635,7 +1635,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--gs-results-bucket=chromium-result-details", "--recover-devices" @@ -4064,7 +4064,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--gs-results-bucket=chromium-result-details", "--recover-devices" @@ -5584,7 +5584,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--gs-results-bucket=chromium-result-details", "--recover-devices"
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json index b5d9cb71..a51c431 100644 --- a/testing/buildbot/chromium.android.json +++ b/testing/buildbot/chromium.android.json
@@ -1442,7 +1442,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--gs-results-bucket=chromium-result-details", "--recover-devices" @@ -3999,7 +3999,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--gs-results-bucket=chromium-result-details", "--recover-devices" @@ -6725,7 +6725,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--gs-results-bucket=chromium-result-details", "--recover-devices" @@ -9490,7 +9490,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--gs-results-bucket=chromium-result-details", "--recover-devices" @@ -12268,7 +12268,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--gs-results-bucket=chromium-result-details", "--recover-devices" @@ -14929,7 +14929,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--gs-results-bucket=chromium-result-details", "--recover-devices" @@ -19157,7 +19157,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--gs-results-bucket=chromium-result-details", "--recover-devices" @@ -21835,7 +21835,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--gs-results-bucket=chromium-result-details", "--recover-devices" @@ -23694,9 +23694,6 @@ ], "isolated_scripts": [ { - "args": [ - "--gtest-benchmark-name=components_perftests" - ], "isolate_name": "components_perftests", "merge": { "args": [
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json index 4684f524..7f0c2c8 100644 --- a/testing/buildbot/chromium.chromiumos.json +++ b/testing/buildbot/chromium.chromiumos.json
@@ -626,7 +626,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -1320,7 +1320,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests",
diff --git a/testing/buildbot/chromium.clang.json b/testing/buildbot/chromium.clang.json index 9063433..e4fe884 100644 --- a/testing/buildbot/chromium.clang.json +++ b/testing/buildbot/chromium.clang.json
@@ -186,7 +186,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -956,7 +956,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -2130,7 +2130,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -3292,7 +3292,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -4860,7 +4860,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--gs-results-bucket=chromium-result-details", "--recover-devices" @@ -7512,7 +7512,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--gs-results-bucket=chromium-result-details", "--recover-devices" @@ -9560,7 +9560,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -10231,7 +10231,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--test-launcher-print-test-stdio=always" ], @@ -11000,7 +11000,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -11557,7 +11557,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -12137,7 +12137,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -12729,7 +12729,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -13310,7 +13310,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -13696,9 +13696,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=components_perftests" - ], "isolate_name": "components_perftests", "merge": { "args": [ @@ -13757,9 +13754,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [ @@ -14001,7 +13995,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--test-launcher-print-test-stdio=always" ], @@ -14706,7 +14700,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -15376,7 +15370,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -16046,7 +16040,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -16716,7 +16710,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -17386,7 +17380,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -18056,7 +18050,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -18726,7 +18720,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -19396,7 +19390,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -20066,7 +20060,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -20736,7 +20730,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -21388,7 +21382,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -22128,7 +22122,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests",
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index a0e989d..428c4cd5 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json
@@ -495,7 +495,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -891,9 +891,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=components_perftests" - ], "isolate_name": "components_perftests", "merge": { "args": [ @@ -952,9 +949,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [ @@ -2729,7 +2723,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -4771,7 +4765,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -5051,7 +5045,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -5369,7 +5363,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--enable-blink-features=HeapUnifiedGarbageCollection" ], @@ -5732,7 +5726,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -6148,7 +6142,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -6660,9 +6654,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [ @@ -6913,7 +6904,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "isolate_coverage_data": true, @@ -10302,7 +10293,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -10814,9 +10805,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [ @@ -11374,7 +11362,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -12232,9 +12220,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=components_perftests" - ], "isolate_name": "components_perftests", "merge": { "args": [ @@ -12335,9 +12320,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [ @@ -12623,8 +12605,9 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend,ViewsBrowserWindows", - "--gtest_filter=TracingControllerTest.*" + "--enable-perfetto", + "--gtest_filter=TracingControllerTest.*", + "--enable-features=ViewsBrowserWindows" ], "name": "perfetto_content_browsertests", "swarming": {
diff --git a/testing/buildbot/chromium.linux.json b/testing/buildbot/chromium.linux.json index 1767e67..52f54cc 100644 --- a/testing/buildbot/chromium.linux.json +++ b/testing/buildbot/chromium.linux.json
@@ -136,7 +136,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -456,7 +456,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -1219,7 +1219,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -1731,9 +1731,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [ @@ -1981,7 +1978,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -2450,9 +2447,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [ @@ -2683,7 +2677,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -3125,9 +3119,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [ @@ -3507,7 +3498,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -4384,9 +4375,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [
diff --git a/testing/buildbot/chromium.mac.json b/testing/buildbot/chromium.mac.json index 47cecc1..350713f 100644 --- a/testing/buildbot/chromium.mac.json +++ b/testing/buildbot/chromium.mac.json
@@ -282,7 +282,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -995,9 +995,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=components_perftests" - ], "isolate_name": "components_perftests", "merge": { "args": [ @@ -1095,9 +1092,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [ @@ -1426,7 +1420,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -2139,9 +2133,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=components_perftests" - ], "isolate_name": "components_perftests", "merge": { "args": [ @@ -2239,9 +2230,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [ @@ -2620,7 +2608,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -3366,9 +3354,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=components_perftests" - ], "isolate_name": "components_perftests", "merge": { "args": [ @@ -3466,9 +3451,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [ @@ -3797,7 +3779,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -4510,9 +4492,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=components_perftests" - ], "isolate_name": "components_perftests", "merge": { "args": [ @@ -4591,9 +4570,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [ @@ -4934,7 +4910,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -5703,9 +5679,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json index 230bcf3..39a6b42 100644 --- a/testing/buildbot/chromium.memory.json +++ b/testing/buildbot/chromium.memory.json
@@ -786,7 +786,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--gs-results-bucket=chromium-result-details", "--recover-devices" @@ -2864,7 +2864,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--test-launcher-print-test-stdio=always" ], @@ -3679,7 +3679,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -4425,7 +4425,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--test-launcher-print-test-stdio=always" ], @@ -5574,7 +5574,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--test-launcher-print-test-stdio=always" ], @@ -7047,7 +7047,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--test-launcher-print-test-stdio=always" ], @@ -8227,7 +8227,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--test-launcher-print-test-stdio=always" ], @@ -9007,7 +9007,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*", "--test-launcher-print-test-stdio=always" ], @@ -9956,7 +9956,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests",
diff --git a/testing/buildbot/chromium.perf.json b/testing/buildbot/chromium.perf.json index 0aa98c44..c95e65de 100644 --- a/testing/buildbot/chromium.perf.json +++ b/testing/buildbot/chromium.perf.json
@@ -6,7 +6,9 @@ { "args": [ "--gtest-benchmark-name", - "components_perftests" + "components_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "components_perftests", "merge": { @@ -45,7 +47,9 @@ { "args": [ "--gtest-benchmark-name", - "gpu_perftests" + "gpu_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "gpu_perftests", "merge": { @@ -84,7 +88,9 @@ { "args": [ "--gtest-benchmark-name", - "tracing_perftests" + "tracing_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "tracing_perftests", "merge": { @@ -264,7 +270,9 @@ { "args": [ "--gtest-benchmark-name", - "angle_perftests" + "angle_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "angle_perftests", "merge": { @@ -301,7 +309,9 @@ { "args": [ "--gtest-benchmark-name", - "load_library_perf_tests" + "load_library_perf_tests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "load_library_perf_tests", "merge": { @@ -338,7 +348,9 @@ { "args": [ "--gtest-benchmark-name", - "media_perftests" + "media_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "media_perftests", "merge": { @@ -376,6 +388,8 @@ "args": [ "--gtest-benchmark-name", "passthrough_command_buffer_perftests", + "--non-telemetry=true", + "--migrated-test=true", "--use-cmd-decoder=passthrough", "--use-angle=gl-null" ], @@ -415,6 +429,8 @@ "args": [ "--gtest-benchmark-name", "validating_command_buffer_perftests", + "--non-telemetry=true", + "--migrated-test=true", "--use-cmd-decoder=validating", "--use-stub" ], @@ -498,7 +514,9 @@ { "args": [ "--gtest-benchmark-name", - "components_perftests" + "components_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "components_perftests", "merge": { @@ -535,7 +553,9 @@ { "args": [ "--gtest-benchmark-name", - "load_library_perf_tests" + "load_library_perf_tests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "load_library_perf_tests", "merge": { @@ -572,7 +592,9 @@ { "args": [ "--gtest-benchmark-name", - "media_perftests" + "media_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "media_perftests", "merge": { @@ -707,6 +729,8 @@ "args": [ "--gtest-benchmark-name", "angle_perftests", + "--non-telemetry=true", + "--migrated-test=true", "--shard-timeout=300" ], "isolate_name": "angle_perftests", @@ -746,7 +770,9 @@ { "args": [ "--gtest-benchmark-name", - "base_perftests" + "base_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "base_perftests", "merge": { @@ -785,7 +811,9 @@ { "args": [ "--gtest-benchmark-name", - "components_perftests" + "components_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "components_perftests", "merge": { @@ -824,7 +852,9 @@ { "args": [ "--gtest-benchmark-name", - "gpu_perftests" + "gpu_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "gpu_perftests", "merge": { @@ -863,7 +893,9 @@ { "args": [ "--gtest-benchmark-name", - "media_perftests" + "media_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "media_perftests", "merge": { @@ -902,7 +934,9 @@ { "args": [ "--gtest-benchmark-name", - "tracing_perftests" + "tracing_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "tracing_perftests", "merge": { @@ -1000,7 +1034,9 @@ { "args": [ "--gtest-benchmark-name", - "base_perftests" + "base_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "base_perftests", "merge": { @@ -1037,7 +1073,9 @@ { "args": [ "--gtest-benchmark-name", - "load_library_perf_tests" + "load_library_perf_tests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "load_library_perf_tests", "merge": { @@ -1074,7 +1112,9 @@ { "args": [ "--gtest-benchmark-name", - "media_perftests" + "media_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "media_perftests", "merge": { @@ -1111,7 +1151,9 @@ { "args": [ "--gtest-benchmark-name", - "net_perftests" + "net_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "net_perftests", "merge": { @@ -1148,7 +1190,9 @@ { "args": [ "--gtest-benchmark-name", - "performance_browser_tests" + "performance_browser_tests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "performance_browser_tests", "merge": { @@ -1185,7 +1229,9 @@ { "args": [ "--gtest-benchmark-name", - "tracing_perftests" + "tracing_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "tracing_perftests", "merge": { @@ -1267,7 +1313,9 @@ { "args": [ "--gtest-benchmark-name", - "load_library_perf_tests" + "load_library_perf_tests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "load_library_perf_tests", "merge": { @@ -1304,7 +1352,9 @@ { "args": [ "--gtest-benchmark-name", - "performance_browser_tests" + "performance_browser_tests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "performance_browser_tests", "merge": { @@ -1386,7 +1436,9 @@ { "args": [ "--gtest-benchmark-name", - "base_perftests" + "base_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "base_perftests", "merge": { @@ -1423,7 +1475,9 @@ { "args": [ "--gtest-benchmark-name", - "media_perftests" + "media_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "media_perftests", "merge": { @@ -1460,7 +1514,9 @@ { "args": [ "--gtest-benchmark-name", - "net_perftests" + "net_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "net_perftests", "merge": { @@ -1497,7 +1553,9 @@ { "args": [ "--gtest-benchmark-name", - "performance_browser_tests" + "performance_browser_tests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "performance_browser_tests", "merge": { @@ -1534,7 +1592,9 @@ { "args": [ "--gtest-benchmark-name", - "views_perftests" + "views_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "views_perftests", "merge": { @@ -1622,6 +1682,8 @@ "args": [ "--gtest-benchmark-name", "angle_perftests", + "--non-telemetry=true", + "--migrated-test=true", "--shard-timeout=300" ], "isolate_name": "angle_perftests", @@ -1659,7 +1721,9 @@ { "args": [ "--gtest-benchmark-name", - "base_perftests" + "base_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "base_perftests", "merge": { @@ -1696,7 +1760,9 @@ { "args": [ "--gtest-benchmark-name", - "components_perftests" + "components_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "components_perftests", "merge": { @@ -1733,7 +1799,9 @@ { "args": [ "--gtest-benchmark-name", - "media_perftests" + "media_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "media_perftests", "merge": { @@ -1770,7 +1838,9 @@ { "args": [ "--gtest-benchmark-name", - "views_perftests" + "views_perftests", + "--non-telemetry=true", + "--migrated-test=true" ], "isolate_name": "views_perftests", "merge": {
diff --git a/testing/buildbot/chromium.win.json b/testing/buildbot/chromium.win.json index 76b3661..bb6d83a 100644 --- a/testing/buildbot/chromium.win.json +++ b/testing/buildbot/chromium.win.json
@@ -231,7 +231,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -716,9 +716,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=components_perftests" - ], "isolate_name": "components_perftests", "merge": { "args": [ @@ -789,9 +786,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [ @@ -1208,7 +1202,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -2411,7 +2405,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -3388,9 +3382,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [ @@ -3661,7 +3652,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -4125,9 +4116,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=components_perftests" - ], "isolate_name": "components_perftests", "merge": { "args": [ @@ -4198,9 +4186,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [ @@ -4449,7 +4434,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "name": "perfetto_content_browsertests", @@ -4987,9 +4972,6 @@ } }, { - "args": [ - "--gtest-benchmark-name=views_perftests" - ], "isolate_name": "views_perftests", "merge": { "args": [
diff --git a/testing/buildbot/filters/mojo.fyi.network_webview_instrumentation_test_apk.filter b/testing/buildbot/filters/mojo.fyi.network_webview_instrumentation_test_apk.filter index f96b88c3..b13ed1c8 100644 --- a/testing/buildbot/filters/mojo.fyi.network_webview_instrumentation_test_apk.filter +++ b/testing/buildbot/filters/mojo.fyi.network_webview_instrumentation_test_apk.filter
@@ -24,10 +24,6 @@ # https://crbug.com/893568 -org.chromium.android_webview.test.AwContentsTest.testDownload -# https://crbug.com/893569 --org.chromium.android_webview.test.AwServiceWorkerClientTest.testFetchResourceLoadingError --org.chromium.android_webview.test.AwServiceWorkerClientTest.testInvokeInterceptCallback - # https://crbug.com/893572 -org.chromium.android_webview.test.ClientOnPageStartedTest.testBrowserInitiatedRedirectHangingNavigation -org.chromium.android_webview.test.ClientOnPageStartedTest.testNotCalledForDownloadContentDisposition
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl index 13487c28..772fb5f8 100644 --- a/testing/buildbot/gn_isolate_map.pyl +++ b/testing/buildbot/gn_isolate_map.pyl
@@ -127,8 +127,6 @@ "angle_perftests": { "args": [ "angle_perftests", - "--non-telemetry=true", - "--migrated-test=true", "--test-launcher-print-test-stdio=always", "--test-launcher-jobs=1", "--test-launcher-retry-limit=0", @@ -253,8 +251,6 @@ "base_perftests": { "args": [ "base_perftests", - "--non-telemetry=true", - "--migrated-test=true", "--test-launcher-print-test-stdio=always", "--test-launcher-jobs=1", "--test-launcher-retry-limit=0", @@ -623,8 +619,6 @@ "command_buffer_perftests": { "args": [ "command_buffer_perftests", - "--non-telemetry=true", - "--migrated-test=true", "--adb-path", "src/third_party/android_tools/sdk/platform-tools/adb", ], @@ -655,6 +649,7 @@ "components_perftests": { "args": [ "--xvfb", + "--gtest-benchmark-name=components_perftests", "--non-telemetry=true", "--migrated-test=true", "components_perftests", @@ -1033,8 +1028,6 @@ "gpu_perftests": { "args": [ "gpu_perftests", - "--non-telemetry=true", - "--migrated-test=true", "--adb-path", "src/third_party/android_tools/sdk/platform-tools/adb", ], @@ -1360,8 +1353,6 @@ "load_library_perf_tests": { "args": [ "load_library_perf_tests", - "--non-telemetry=true", - "--migrated-test=true", "--test-launcher-print-test-stdio=always", ], "label": "//chrome/test:load_library_perf_tests", @@ -1399,8 +1390,6 @@ "media_perftests": { "args": [ "media_perftests", - "--non-telemetry=true", - "--migrated-test=true", "--single-process-tests", "--test-launcher-retry-limit=0", "--isolated-script-test-filter=*::-*_unoptimized::*_unaligned::*unoptimized_aligned", @@ -1800,8 +1789,6 @@ "net_perftests": { "args": [ "net_perftests", - "--non-telemetry=true", - "--migrated-test=true", ], "label": "//net:net_perftests", "script": "//testing/scripts/run_performance_tests_wrapper.py", @@ -2031,8 +2018,6 @@ "performance_browser_tests": { "args": [ "performance_browser_tests", - "--non-telemetry=true", - "--migrated-test=true", "--test-launcher-print-test-stdio=always", # TODO(crbug.com/759866): Figure out why CastV2PerformanceTest/0 sometimes # takes 15-30 seconds to start up and, once fixed, remove this workaround @@ -2449,8 +2434,6 @@ "tracing_perftests": { "args": [ "tracing_perftests", - "--non-telemetry=true", - "--migrated-test=true", "--test-launcher-print-test-stdio=always", "--adb-path", "src/third_party/android_tools/sdk/platform-tools/adb", @@ -2591,6 +2574,7 @@ "views_perftests": { "args": [ "--xvfb", + "--gtest-benchmark-name=views_perftests", "--non-telemetry=true", "--migrated-test=true", "views_perftests", @@ -2630,7 +2614,8 @@ "vr_common_perftests": { "args": [ "vr_common_perftests", - "--non-telemetry=true", + "--non-telemetry=1", + "--gtest-benchmark-name=xr.vr.common_perftests", "--adb-path", "src/third_party/android_tools/sdk/platform-tools/adb", ],
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl index 5384527..8c9eb62 100644 --- a/testing/buildbot/test_suites.pyl +++ b/testing/buildbot/test_suites.pyl
@@ -2342,7 +2342,7 @@ }, 'perfetto_content_browsertests': { 'args': [ - '--enable-features=TracingPerfettoBackend', + '--enable-perfetto', '--gtest_filter=TracingControllerTest.*', ], 'test': 'content_browsertests', @@ -2657,9 +2657,6 @@ '--smoke-test-mode', ], }, - 'args': [ - '--gtest-benchmark-name=components_perftests', - ], }, }, @@ -2710,9 +2707,6 @@ '--smoke-test-mode', ], }, - 'args': [ - '--gtest-benchmark-name=views_perftests', - ], }, 'webkit_layout_tests': { # layout test failures are retried 3 times when '--test-list' is not
diff --git a/testing/buildbot/tryserver.chromium.linux.json b/testing/buildbot/tryserver.chromium.linux.json index 32963ad..b7e5c8e4 100644 --- a/testing/buildbot/tryserver.chromium.linux.json +++ b/testing/buildbot/tryserver.chromium.linux.json
@@ -212,7 +212,7 @@ }, { "args": [ - "--enable-features=TracingPerfettoBackend", + "--enable-perfetto", "--gtest_filter=TracingControllerTest.*" ], "isolate_coverage_data": true,
diff --git a/third_party/blink/public/mojom/BUILD.gn b/third_party/blink/public/mojom/BUILD.gn index d4a4ee25..516ebbdc 100644 --- a/third_party/blink/public/mojom/BUILD.gn +++ b/third_party/blink/public/mojom/BUILD.gn
@@ -172,11 +172,7 @@ # This target can include mojom interfaces which do use types that are # typemapped to a type in renderer/core. This also means these interfaces are # not available from renderer/platform. -# Note that service_worker_object.mojom and service_worker.mojom depend -# on transferable_message.mojom, and controller_service_worker.mojom and -# service_worker_registration.mojom depend on service_worker_object.mojom, so -# we put these service worker mojom files here rather than mojom_platform -# target. +# # In future we may have a separate mojom target for the things that may have # modules dependencies if it looks necessary, at that time we can put all of # those high-level service worker mojom files there. @@ -186,12 +182,21 @@ "messaging/transferable_message.mojom", "messaging/user_activation_snapshot.mojom", "portal/portal.mojom", + + # Note that service_worker_object.mojom and service_worker.mojom depend on + # transferable_message.mojom, and controller_service_worker.mojom and + # service_worker_registration.mojom depend on service_worker_object.mojom, + # so we put these service worker mojom files here rather than mojom_platform + # target. "service_worker/controller_service_worker.mojom", "service_worker/service_worker.mojom", "service_worker/service_worker_container.mojom", "service_worker/service_worker_object.mojom", "service_worker/service_worker_provider.mojom", "service_worker/service_worker_registration.mojom", + + # Depends on controller_service_worker.mojom. + "worker/shared_worker_factory.mojom", ] public_deps = [
diff --git a/content/common/shared_worker/shared_worker_factory.mojom b/third_party/blink/public/mojom/worker/shared_worker_factory.mojom similarity index 85% rename from content/common/shared_worker/shared_worker_factory.mojom rename to third_party/blink/public/mojom/worker/shared_worker_factory.mojom index ecc1b43..9725408 100644 --- a/content/common/shared_worker/shared_worker_factory.mojom +++ b/third_party/blink/public/mojom/worker/shared_worker_factory.mojom
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -module content.mojom; +module blink.mojom; import "mojo/public/mojom/base/unguessable_token.mojom"; import "services/network/public/mojom/url_loader_factory.mojom"; @@ -32,19 +32,18 @@ // TODO(sammc): Change shared workers to obtain |content_settings| via // |interface_provider| instead of receiving plumbing it here. CreateSharedWorker( - blink.mojom.SharedWorkerInfo info, + SharedWorkerInfo info, bool pause_on_start, mojo_base.mojom.UnguessableToken devtools_worker_token, - blink.mojom.RendererPreferences renderer_preferences, - blink.mojom.RendererPreferenceWatcher& preference_watcher_request, - blink.mojom.WorkerContentSettingsProxy content_settings, + RendererPreferences renderer_preferences, + RendererPreferenceWatcher& preference_watcher_request, + WorkerContentSettingsProxy content_settings, // S13nServiceWorker: // The info about the service worker host in the browser process that // provides support for this shared worker to be a service worker client. // Null when S13nServiceWorker is disabled. - blink.mojom.ServiceWorkerProviderInfoForSharedWorker? - service_worker_provider_info, + ServiceWorkerProviderInfoForSharedWorker? service_worker_provider_info, // NetworkService: // The ID of the AppCacheHost in the browser process that serves resources @@ -68,7 +67,7 @@ // NetworkService (PlzWorker): // Used for passing a main script pre-requested by the browser process and // its redirect information. - blink.mojom.WorkerMainScriptLoadParams? main_script_load_params, + WorkerMainScriptLoadParams? main_script_load_params, // NetworkService: // When the Network Service is enabled, |subresource_loader_factories| @@ -76,7 +75,7 @@ // subresources where applicable. For example, this allows the shared // worker to load chrome-extension:// URLs which the renderer's default // loader factory can't load. - blink.mojom.URLLoaderFactoryBundle? subresource_loader_factories, + URLLoaderFactoryBundle? subresource_loader_factories, // NetworkService (PlzWorker): // Used for setting ServiceWorkerContainer#controller. This is null when @@ -84,9 +83,9 @@ // // In S13nServiceWorker, the controller is sent via // ServiceWorkerContainer.SetController(). - blink.mojom.ControllerServiceWorkerInfo? controller_info, + ControllerServiceWorkerInfo? controller_info, - blink.mojom.SharedWorkerHost host, - blink.mojom.SharedWorker& shared_worker, + SharedWorkerHost host, + SharedWorker& shared_worker, service_manager.mojom.InterfaceProvider interface_provider); };
diff --git a/third_party/blink/public/web/web_shared_worker_client.h b/third_party/blink/public/web/web_shared_worker_client.h index ab6be74..88f7e32 100644 --- a/third_party/blink/public/web/web_shared_worker_client.h +++ b/third_party/blink/public/web/web_shared_worker_client.h
@@ -55,6 +55,7 @@ virtual void WorkerReadyForInspection() {} virtual void WorkerScriptLoaded() = 0; virtual void WorkerScriptLoadFailed() = 0; + virtual void WorkerScriptEvaluated(bool success) = 0; virtual void SelectAppCacheID(long long) = 0; // Called on the main webkit thread in the worker process during
diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc index 276b094b..ed716cf 100644 --- a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc +++ b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc
@@ -1305,7 +1305,7 @@ OffscreenCanvas* new_canvas = V8OffscreenCanvas::ToImpl(result.As<v8::Object>()); EXPECT_EQ(IntSize(10, 7), new_canvas->Size()); - EXPECT_EQ(519u, new_canvas->PlaceholderCanvasId()); + EXPECT_EQ(519, new_canvas->PlaceholderCanvasId()); EXPECT_TRUE(canvas->IsNeutered()); EXPECT_FALSE(new_canvas->IsNeutered()); }
diff --git a/third_party/blink/renderer/core/animation/number_property_functions.cc b/third_party/blink/renderer/core/animation/number_property_functions.cc index 2b79364..77bac29f 100644 --- a/third_party/blink/renderer/core/animation/number_property_functions.cc +++ b/third_party/blink/renderer/core/animation/number_property_functions.cc
@@ -65,7 +65,7 @@ case CSSPropertyLineHeight: { const Length& length = style.SpecifiedLineHeight(); // Numbers are represented by percentages. - if (length.GetType() != kPercent) + if (!length.IsPercent()) return base::Optional<double>(); double value = length.Value(); // -100% represents the keyword "normal".
diff --git a/third_party/blink/renderer/core/css/BUILD.gn b/third_party/blink/renderer/core/css/BUILD.gn index 53cfe6d2..23b23c3c 100644 --- a/third_party/blink/renderer/core/css/BUILD.gn +++ b/third_party/blink/renderer/core/css/BUILD.gn
@@ -950,6 +950,8 @@ "style_property_serializer.cc", "style_property_serializer.h", "style_property_shorthand_custom.cc", + "style_recalc.cc", + "style_recalc.h", "style_recalc_root.cc", "style_recalc_root.h", "style_rule.cc",
diff --git a/third_party/blink/renderer/core/css/properties/computed_style_utils.cc b/third_party/blink/renderer/core/css/properties/computed_style_utils.cc index e71a1b6b..462de37 100644 --- a/third_party/blink/renderer/core/css/properties/computed_style_utils.cc +++ b/third_party/blink/renderer/core/css/properties/computed_style_utils.cc
@@ -1552,13 +1552,13 @@ const LengthSize& radius, const ComputedStyle& style) { CSSValueList* list = CSSValueList::CreateSpaceSeparated(); - if (radius.Width().GetType() == kPercent) { + if (radius.Width().IsPercent()) { list->Append(*CSSPrimitiveValue::Create( radius.Width().Percent(), CSSPrimitiveValue::UnitType::kPercentage)); } else { list->Append(*ZoomAdjustedPixelValueForLength(radius.Width(), style)); } - if (radius.Height().GetType() == kPercent) { + if (radius.Height().IsPercent()) { list->Append(*CSSPrimitiveValue::Create( radius.Height().Percent(), CSSPrimitiveValue::UnitType::kPercentage)); } else {
diff --git a/third_party/blink/renderer/core/css/resolver/style_resolver.cc b/third_party/blink/renderer/core/css/resolver/style_resolver.cc index 036ce67..1d67b0b 100644 --- a/third_party/blink/renderer/core/css/resolver/style_resolver.cc +++ b/third_party/blink/renderer/core/css/resolver/style_resolver.cc
@@ -1049,9 +1049,9 @@ scoped_refptr<ComputedStyle> StyleResolver::StyleForText(Text* text_node) { DCHECK(text_node); - Node* parent_node = LayoutTreeBuilderTraversal::Parent(*text_node); - DCHECK(parent_node); - return parent_node->MutableComputedStyle(); + if (Node* parent_node = LayoutTreeBuilderTraversal::Parent(*text_node)) + return parent_node->MutableComputedStyle(); + return nullptr; } void StyleResolver::UpdateFont(StyleResolverState& state) {
diff --git a/third_party/blink/renderer/core/css/style_change_reason.cc b/third_party/blink/renderer/core/css/style_change_reason.cc index 26c4072..bd196a6c 100644 --- a/third_party/blink/renderer/core/css/style_change_reason.cc +++ b/third_party/blink/renderer/core/css/style_change_reason.cc
@@ -32,11 +32,11 @@ const char kInspector[] = "Inspector"; const char kLanguage[] = "Language"; const char kInvisibleChange[] = "InvisibleChange"; +const char kLazyReattach[] = "LazyReattach"; const char kLinkColorChange[] = "LinkColorChange"; +const char kNodeInserted[] = "NodeInserted"; const char kPlatformColorChange[] = "PlatformColorChange"; const char kPolicyViolation[] = "Feature Policy Violation"; -const char kPropagateInheritChangeToDistributedNodes[] = - "PropagateInheritChangeToDistributedNodes"; const char kPropertyRegistration[] = "PropertyRegistration"; const char kPropertyUnregistration[] = "PropertyUnregistration"; const char kPseudoClass[] = "PseudoClass";
diff --git a/third_party/blink/renderer/core/css/style_change_reason.h b/third_party/blink/renderer/core/css/style_change_reason.h index cfb2070..6144c31 100644 --- a/third_party/blink/renderer/core/css/style_change_reason.h +++ b/third_party/blink/renderer/core/css/style_change_reason.h
@@ -33,10 +33,11 @@ extern const char kInspector[]; extern const char kInvisibleChange[]; extern const char kLanguage[]; +extern const char kLazyReattach[]; extern const char kLinkColorChange[]; +extern const char kNodeInserted[]; extern const char kPlatformColorChange[]; extern const char kPolicyViolation[]; -extern const char kPropagateInheritChangeToDistributedNodes[]; extern const char kPropertyRegistration[]; extern const char kPropertyUnregistration[]; extern const char kPseudoClass[];
diff --git a/third_party/blink/renderer/core/css/style_engine.cc b/third_party/blink/renderer/core/css/style_engine.cc index db393e39..dc148fc0 100644 --- a/third_party/blink/renderer/core/css/style_engine.cc +++ b/third_party/blink/renderer/core/css/style_engine.cc
@@ -1690,12 +1690,13 @@ return initial_data_; } -void StyleEngine::RecalcStyle(StyleRecalcChange change) { +void StyleEngine::RecalcStyle(const StyleRecalcChange change) { DCHECK(GetDocument().documentElement()); - DCHECK(GetDocument().ChildNeedsStyleRecalc() || change == kForce); + DCHECK(GetDocument().ChildNeedsStyleRecalc() || change.RecalcDescendants()); Element& root_element = style_recalc_root_.RootElement(); - if (change == kForce || &root_element == GetDocument().documentElement()) { + if (change.RecalcChildren() || + &root_element == GetDocument().documentElement()) { GetDocument().documentElement()->RecalcStyle(change); } else { Element* parent = root_element.ParentOrShadowHostElement(); @@ -1751,7 +1752,6 @@ // LazyReattachIfAttached() from HTMLSlotElement::DetachLayoutTree(). We // probably want to get rid of LazyReattachIfAttached() altogether and call // DetachLayoutTree on assigned nodes instead. - DCHECK_EQ(dirty_node->GetStyleChangeType(), kNeedsReattachStyleChange); return; } style_recalc_root_.Update(ancestor, dirty_node);
diff --git a/third_party/blink/renderer/core/css/style_engine.h b/third_party/blink/renderer/core/css/style_engine.h index d05f7cb..ba462e1 100644 --- a/third_party/blink/renderer/core/css/style_engine.h +++ b/third_party/blink/renderer/core/css/style_engine.h
@@ -356,7 +356,7 @@ scoped_refptr<StyleInitialData> MaybeCreateAndGetInitialData(); - void RecalcStyle(StyleRecalcChange change); + void RecalcStyle(const StyleRecalcChange change); void RebuildLayoutTree(); bool InRebuildLayoutTree() const { return in_layout_tree_rebuild_; }
diff --git a/third_party/blink/renderer/core/css/style_engine_test.cc b/third_party/blink/renderer/core/css/style_engine_test.cc index 2e52cb26..5d41dae4 100644 --- a/third_party/blink/renderer/core/css/style_engine_test.cc +++ b/third_party/blink/renderer/core/css/style_engine_test.cc
@@ -1593,7 +1593,7 @@ div->SetInlineStyleProperty(CSSPropertyColor, "green"); GetDocument().Lifecycle().AdvanceTo(DocumentLifecycle::kInStyleRecalc); - GetStyleEngine().RecalcStyle(kNoChange); + GetStyleEngine().RecalcStyle({}); // Should fast reject ".not-in-filter div::before {}" for both the div and its // ::before pseudo element. @@ -1805,7 +1805,7 @@ span_outer->SetInlineStyleProperty(CSSPropertyColor, "blue"); EXPECT_TRUE(span_outer->NeedsStyleRecalc()); GetDocument().Lifecycle().AdvanceTo(DocumentLifecycle::kInStyleRecalc); - GetStyleEngine().RecalcStyle(kNoChange); + GetStyleEngine().RecalcStyle({}); GetDocument().Lifecycle().AdvanceTo(DocumentLifecycle::kStyleClean); EXPECT_FALSE(span_outer->NeedsStyleRecalc());
diff --git a/third_party/blink/renderer/core/css/style_recalc.cc b/third_party/blink/renderer/core/css/style_recalc.cc new file mode 100644 index 0000000..921bcfc --- /dev/null +++ b/third_party/blink/renderer/core/css/style_recalc.cc
@@ -0,0 +1,41 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/core/css/style_recalc.h" + +#include "third_party/blink/renderer/core/dom/node_computed_style.h" +#include "third_party/blink/renderer/core/dom/pseudo_element.h" + +namespace blink { + +bool StyleRecalcChange::TraverseChildren(const Node& node) const { + return RecalcChildren() || node.ChildNeedsStyleRecalc(); +} + +bool StyleRecalcChange::TraversePseudoElements(const Node& node) const { + return UpdatePseudoElements() || node.ChildNeedsStyleRecalc(); +} + +bool StyleRecalcChange::TraverseChild(const Node& node) const { + return ShouldRecalcStyleFor(node) || node.ChildNeedsStyleRecalc(); +} + +bool StyleRecalcChange::ShouldRecalcStyleFor(const Node& node) const { + if (RecalcChildren()) + return true; + if (node.NeedsStyleRecalc()) + return true; + if (propagate_ != kClearEnsured) + return false; + if (const ComputedStyle* old_style = node.GetComputedStyle()) + return old_style->IsEnsuredInDisplayNone(); + return false; +} + +bool StyleRecalcChange::ShouldUpdatePseudoElement( + const PseudoElement& pseudo_element) const { + return UpdatePseudoElements() || pseudo_element.NeedsStyleRecalc(); +} + +} // namespace blink
diff --git a/third_party/blink/renderer/core/css/style_recalc.h b/third_party/blink/renderer/core/css/style_recalc.h new file mode 100644 index 0000000..291184f --- /dev/null +++ b/third_party/blink/renderer/core/css/style_recalc.h
@@ -0,0 +1,87 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_CSS_STYLE_RECALC_H_ +#define THIRD_PARTY_BLINK_RENDERER_CORE_CSS_STYLE_RECALC_H_ + +namespace blink { + +class Node; +class PseudoElement; + +// Class for keeping track of the need for traversing down flat tree children, +// recompute their computed styles, and marking nodes for layout tree re- +// attachment during the style recalc phase. +class StyleRecalcChange { + public: + enum Propagate { + // No need to update style of any children. + kNo, + // Need to traverse children in display:none or non-slotted/distributed + // children of shadow hosts to clear ensured computed styles. + kClearEnsured, + // Need to update existence and style for pseudo elements. + kUpdatePseudoElements, + // Need to recalculate style for children for inheritance. All changed + // inherited properties can be propagated (PropagateInheritedProperties) + // instead of a full rule matching. + kIndependentInherit, + // Need to recalculate style for children, typically for inheritance. + kRecalcChildren, + // Need to recalculate style for all descendants. + kRecalcDescendants, + }; + + StyleRecalcChange() = default; + StyleRecalcChange(const StyleRecalcChange&) = default; + StyleRecalcChange(Propagate propagate) : propagate_(propagate) {} + + StyleRecalcChange ForChildren() const { + return {RecalcDescendants() ? kRecalcDescendants : kNo, reattach_, + calc_invisible_}; + } + StyleRecalcChange EnsureAtLeast(Propagate propagate) const { + if (propagate > propagate_) + return {propagate, reattach_, calc_invisible_}; + return {propagate_, reattach_, calc_invisible_}; + } + StyleRecalcChange ForceRecalcDescendants() const { + return {kRecalcDescendants, reattach_, calc_invisible_}; + } + StyleRecalcChange ForceReattachLayoutTree() const { + return {propagate_, true, calc_invisible_}; + } + StyleRecalcChange ForceCalcInvisible() const { + return {propagate_, reattach_, true}; + } + + bool ReattachLayoutTree() const { return reattach_; } + bool RecalcChildren() const { return propagate_ > kUpdatePseudoElements; } + bool RecalcDescendants() const { return propagate_ == kRecalcDescendants; } + bool UpdatePseudoElements() const { return propagate_ != kNo; } + bool IndependentInherit() const { return propagate_ == kIndependentInherit; } + bool TraverseChildren(const Node&) const; + bool TraverseChild(const Node&) const; + bool TraversePseudoElements(const Node&) const; + bool ShouldRecalcStyleFor(const Node&) const; + bool ShouldUpdatePseudoElement(const PseudoElement&) const; + bool CalcInvisible() const { return calc_invisible_; } + + private: + StyleRecalcChange(Propagate propagate, bool reattach, bool calc_invisible) + : propagate_(propagate), + reattach_(reattach), + calc_invisible_(calc_invisible) {} + + // To what extent do we need to update style for children. + Propagate propagate_ = kNo; + // Need to reattach layout tree if true. + bool reattach_ = false; + // Forcing ComputedStyle for find-in-page for invisible DOM. + bool calc_invisible_ = false; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_CORE_CSS_STYLE_RECALC_H_
diff --git a/third_party/blink/renderer/core/display_lock/display_lock_context.cc b/third_party/blink/renderer/core/display_lock/display_lock_context.cc index bc4689e7..0fe7c25 100644 --- a/third_party/blink/renderer/core/display_lock/display_lock_context.cc +++ b/third_party/blink/renderer/core/display_lock/display_lock_context.cc
@@ -163,9 +163,12 @@ if (state_ == kUnlocked) return GetRejectedPromise(script_state); - // If we're already committing then return the promise. - if (state_ == kCommitting) + // If we have a resolver, we must be committing already, just return the same + // promise. + if (commit_resolver_) { + DCHECK(state_ == kCommitting) << state_; return commit_resolver_->Promise(); + } // Now that we've explicitly been requested to commit, we have cancel the // timeout task. @@ -176,42 +179,12 @@ // together will still wait until the lifecycle is clean before resolving any // of the promises. DCHECK_NE(state_, kCommitting); - // We might already have a resolver if we called updateAndCommit() before - // this. - if (!commit_resolver_) - commit_resolver_ = ScriptPromiseResolver::Create(script_state); + commit_resolver_ = ScriptPromiseResolver::Create(script_state); auto promise = commit_resolver_->Promise(); StartCommit(); return promise; } -ScriptPromise DisplayLockContext::updateAndCommit(ScriptState* script_state) { - // Reject if we're unlocked. - if (state_ == kUnlocked) - return GetRejectedPromise(script_state); - - // If we're in a state where a co-operative update doesn't make sense (e.g. we - // haven't acquired the lock, or we're already sync committing), then do - // whatever commit() would do. - if (state_ == kPendingAcquire || state_ == kCommitting || - !element_->isConnected()) { - return commit(script_state); - } - - // If we have a commit resolver already, return it. - if (commit_resolver_) { - // We must be in a second call to updateAndCommit(), meaning that we're in - // the kUpdating state with a commit_resolver_. - DCHECK_EQ(state_, kUpdating); - return commit_resolver_->Promise(); - } - - CancelTimeoutTask(); - commit_resolver_ = ScriptPromiseResolver::Create(script_state); - StartUpdateIfNeeded(); - return commit_resolver_->Promise(); -} - void DisplayLockContext::FinishUpdateResolver(ResolverState state) { FinishResolver(&update_resolver_, state); } @@ -267,11 +240,10 @@ // unexpected behavior. By rejecting the promise, the behavior can be detected // by script. if (!ElementSupportsDisplayLocking()) { - bool should_stay_locked = state_ == kUpdating && !commit_resolver_; FinishUpdateResolver(kReject); FinishCommitResolver(kReject); FinishAcquireResolver(kReject); - state_ = should_stay_locked ? kLocked : kUnlocked; + state_ = state_ == kUpdating ? kLocked : kUnlocked; return; } @@ -328,17 +300,16 @@ } void DisplayLockContext::DidAttachLayoutTree() { - if (state_ >= kUnlocked) + if (state_ == kUnlocked) return; // Note that although we checked at style recalc time that the element has // "contain: style layout", it might not actually apply the containment at the // layout object level. This confirms that containment should apply. if (!ElementSupportsDisplayLocking()) { - bool should_stay_locked = state_ == kUpdating && !commit_resolver_; FinishUpdateResolver(kReject); FinishCommitResolver(kReject); - state_ = should_stay_locked ? kLocked : kUnlocked; + state_ = state_ == kUpdating ? kLocked : kUnlocked; } } @@ -575,13 +546,7 @@ if (!element_ || !element_->isConnected()) { FinishUpdateResolver(kReject); update_budget_.reset(); - - if (commit_resolver_) { - FinishCommitResolver(kReject); - state_ = kUnlocked; - } else { - state_ = kLocked; - } + state_ = kLocked; return; } @@ -598,17 +563,6 @@ FinishUpdateResolver(kResolve); update_budget_.reset(); state_ = kLocked; - - if (commit_resolver_) { - // Schedule a commit to run. Note that we can't call StartCommit directly - // here, since we're in the lifecycle updates right now and the code that - // runs after may depend on having clean layout state, which StartCommit - // might dirty. - GetExecutionContext() - ->GetTaskRunner(TaskType::kMiscPlatformAPI) - ->PostTask(FROM_HERE, WTF::Bind(&DisplayLockContext::StartCommit, - WrapWeakPersistent(this))); - } } void DisplayLockContext::ScheduleAnimation() {
diff --git a/third_party/blink/renderer/core/display_lock/display_lock_context.h b/third_party/blink/renderer/core/display_lock/display_lock_context.h index 1a66026..3144eda 100644 --- a/third_party/blink/renderer/core/display_lock/display_lock_context.h +++ b/third_party/blink/renderer/core/display_lock/display_lock_context.h
@@ -46,7 +46,7 @@ kDoNotYield, kStrictYieldBetweenLifecyclePhases, kYieldBetweenLifecyclePhases, - kDefault = kStrictYieldBetweenLifecyclePhases + kDefault = kYieldBetweenLifecyclePhases }; // See GetScopedPendingFrameRect() for description. @@ -95,7 +95,6 @@ ScriptPromise acquire(ScriptState*, DisplayLockOptions*); ScriptPromise update(ScriptState*); ScriptPromise commit(ScriptState*); - ScriptPromise updateAndCommit(ScriptState*); // Lifecycle observation / state functions. bool ShouldStyle() const;
diff --git a/third_party/blink/renderer/core/display_lock/display_lock_context.idl b/third_party/blink/renderer/core/display_lock/display_lock_context.idl index 592208e..2e34af83b 100644 --- a/third_party/blink/renderer/core/display_lock/display_lock_context.idl +++ b/third_party/blink/renderer/core/display_lock/display_lock_context.idl
@@ -16,8 +16,4 @@ // necessary lifecycle phases. // Returns a promise that resolves when the commit is finished. [CallWith=ScriptState] Promise<any> commit(); - - // Causes co-operative updates to happen, followed by a commit. - // Returns a promise that resolves when the commit is finished. - [CallWith=ScriptState] Promise<any> updateAndCommit(); };
diff --git a/third_party/blink/renderer/core/dom/container_node.cc b/third_party/blink/renderer/core/dom/container_node.cc index 59467cf7..075945f 100644 --- a/third_party/blink/renderer/core/dom/container_node.cc +++ b/third_party/blink/renderer/core/dom/container_node.cc
@@ -163,7 +163,7 @@ } ContainerNode::~ContainerNode() { - DCHECK(NeedsAttach()); + DCHECK(isConnected() || !NeedsStyleRecalc()); } DISABLE_CFI_PERF @@ -727,7 +727,7 @@ DCHECK_EQ(old_child.parentNode(), this); - if (!old_child.NeedsAttach()) + if (InActiveDocument()) old_child.DetachLayoutTree(); if (next_child) @@ -965,50 +965,17 @@ Node::RemovedFrom(insertion_point); } -#if DCHECK_IS_ON() -namespace { - -bool AttachedAllowedWhenAttaching(Node* node) { - return node->getNodeType() == Node::kCommentNode || - node->getNodeType() == Node::kProcessingInstructionNode; -} - -bool ChildAttachedAllowedWhenAttachingChildren(ContainerNode* node) { - if (node->IsShadowRoot()) - return true; - if (node->IsV0InsertionPoint()) - return true; - if (IsHTMLSlotElement(node)) - return true; - if (IsShadowHost(node)) - return true; - return false; -} - -} // namespace -#endif - DISABLE_CFI_PERF void ContainerNode::AttachLayoutTree(AttachContext& context) { - for (Node* child = firstChild(); child; child = child->nextSibling()) { -#if DCHECK_IS_ON() - DCHECK(child->NeedsAttach() || AttachedAllowedWhenAttaching(child) || - ChildAttachedAllowedWhenAttachingChildren(this)); -#endif - if (child->NeedsAttach()) - child->AttachLayoutTree(context); - } - - ClearChildNeedsStyleRecalc(); - ClearChildNeedsReattachLayoutTree(); + for (Node* child = firstChild(); child; child = child->nextSibling()) + child->AttachLayoutTree(context); Node::AttachLayoutTree(context); + ClearChildNeedsReattachLayoutTree(); } void ContainerNode::DetachLayoutTree(const AttachContext& context) { for (Node* child = firstChild(); child; child = child->nextSibling()) child->DetachLayoutTree(context); - - SetChildNeedsStyleRecalc(); Node::DetachLayoutTree(context); } @@ -1016,12 +983,30 @@ GetDocument().IncDOMTreeVersion(); GetDocument().NotifyChangeChildren(*this); InvalidateNodeListCachesInAncestors(nullptr, nullptr, &change); - if (change.IsChildInsertion()) { - if (change.sibling_changed->NeedsStyleRecalc()) - MarkAncestorsWithChildNeedsStyleRecalc(change.sibling_changed); - } else if (change.IsChildRemoval() || change.type == kAllChildrenRemoved) { + + if (change.IsChildRemoval() || change.type == kAllChildrenRemoved) { GetDocument().GetStyleEngine().ChildrenRemoved(*this); + return; } + if (!change.IsChildInsertion()) + return; + if (!isConnected()) + return; + if (!IsDocumentNode() && !IsShadowRoot() && !GetComputedStyle()) { + // There is no need to mark for style recalc if the parent element does not + // Already have a ComputedStyle. For instance if we insert nodes into a + // display:none subtree. If this ContainerNode gets a ComputedStyle during + // the next style recalc, we will traverse into the inserted children since + // the ComputedStyle goes from null to non-null. + return; + } + if (change.sibling_changed->getNodeType() == Node::kCommentNode) + return; + if (change.sibling_changed->getNodeType() == Node::kProcessingInstructionNode) + return; + change.sibling_changed->SetNeedsStyleRecalc( + kLocalStyleChange, + StyleChangeReasonForTracing::Create(style_change_reason::kNodeInserted)); } void ContainerNode::CloneChildNodesFrom(const ContainerNode& node) { @@ -1402,20 +1387,17 @@ EnsureRareData().SetRestyleFlag(mask); } -void ContainerNode::RecalcDescendantStyles(StyleRecalcChange change, - bool calc_invisible) { +void ContainerNode::RecalcDescendantStyles(const StyleRecalcChange change) { DCHECK(GetDocument().InStyleRecalc()); - DCHECK(change >= kUpdatePseudoElements || ChildNeedsStyleRecalc()); DCHECK(!NeedsStyleRecalc()); for (Node* child = firstChild(); child; child = child->nextSibling()) { - if (child->IsTextNode()) { + if (!change.TraverseChild(*child)) + continue; + if (child->IsTextNode()) ToText(child)->RecalcTextStyle(change); - } else if (child->IsElementNode()) { - Element* element = ToElement(child); - if (element->ShouldCallRecalcStyle(change)) - element->RecalcStyle(change, calc_invisible); - } + else if (child->IsElementNode()) + ToElement(child)->RecalcStyle(change); } } @@ -1456,7 +1438,6 @@ WhitespaceAttacher whitespace_attacher; for (Node* child = lastChild(); child; child = child->previousSibling()) RebuildLayoutTreeForChild(child, whitespace_attacher); - ClearChildNeedsStyleRecalc(); ClearChildNeedsReattachLayoutTree(); } @@ -1482,10 +1463,6 @@ // point in O(1) time. See crbug.com/288225 for (Node* child = lastChild(); child; child = child->previousSibling()) RebuildLayoutTreeForChild(child, whitespace_attacher); - - // This is done in ContainerNode::AttachLayoutTree but will never be cleared - // if we don't enter ContainerNode::AttachLayoutTree so we do it here. - ClearChildNeedsStyleRecalc(); } void ContainerNode::CheckForSiblingStyleChanges(SiblingCheckType change_type,
diff --git a/third_party/blink/renderer/core/dom/container_node.h b/third_party/blink/renderer/core/dom/container_node.h index 6e21966..819b55a 100644 --- a/third_party/blink/renderer/core/dom/container_node.h +++ b/third_party/blink/renderer/core/dom/container_node.h
@@ -27,6 +27,7 @@ #include "third_party/blink/public/platform/web_focus_type.h" #include "third_party/blink/renderer/core/core_export.h" +#include "third_party/blink/renderer/core/css/style_recalc.h" #include "third_party/blink/renderer/core/dom/node.h" #include "third_party/blink/renderer/core/html/collection_type.h" #include "third_party/blink/renderer/platform/bindings/trace_wrapper_member.h" @@ -289,7 +290,7 @@ Element* changed_element, Node* node_before_change, Node* node_after_change); - void RecalcDescendantStyles(StyleRecalcChange, bool calc_invisible = false); + void RecalcDescendantStyles(const StyleRecalcChange); void RebuildChildrenLayoutTrees(WhitespaceAttacher&); void RebuildLayoutTreeForChild(Node* child, WhitespaceAttacher&); void RebuildNonDistributedChildren();
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc index fdb14ac..e32f2767 100644 --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc
@@ -2281,27 +2281,26 @@ lifecycle_.AdvanceTo(DocumentLifecycle::kInStyleRecalc); - StyleRecalcChange change = kNoChange; - if (GetStyleChangeType() >= kSubtreeStyleChange) - change = kForce; - NthIndexCache nth_index_cache(*this); - // TODO(futhark@chromium.org): Cannot access the EnsureStyleResolver() before - // calling StyleForViewport() below because apparently the StyleResolver's - // constructor has side effects. We should fix it. See - // printing/setPrinting.html, printing/width-overflow.html though they only - // fail on mac when accessing the resolver by what appears to be a viewport - // size difference. + StyleRecalcChange change; + if (GetStyleChangeType() == kSubtreeStyleChange) { + change = change.ForceRecalcDescendants(); - if (change == kForce) { has_nodes_with_placeholder_style_ = false; + // TODO(futhark@chromium.org): Cannot access the EnsureStyleResolver() + // before calling StyleForViewport() below because apparently the + // StyleResolver's constructor has side effects. We should fix it. See + // printing/setPrinting.html, printing/width-overflow.html though they only + // fail on mac when accessing the resolver by what appears to be a viewport + // size difference. scoped_refptr<ComputedStyle> viewport_style = StyleResolver::StyleForViewport(*this); - StyleRecalcChange local_change = ComputedStyle::StylePropagationDiff( - viewport_style.get(), GetLayoutView()->Style()); - if (local_change != kNoChange) + if (ComputedStyle::ComputeDifference(viewport_style.get(), + GetLayoutView()->Style()) != + ComputedStyle::Difference::kEqual) { GetLayoutView()->SetStyle(std::move(viewport_style)); + } } ClearNeedsStyleRecalc(); @@ -2314,7 +2313,7 @@ GetStyleEngine().SetStatsEnabled(should_record_stats); if (Element* document_element = documentElement()) { - if (document_element->ShouldCallRecalcStyle(change)) { + if (change.TraverseChild(*document_element)) { TRACE_EVENT0("blink,blink_style", "Document::recalcStyle"); SCOPED_BLINK_UMA_HISTOGRAM_TIMER_HIGHRES("Style.RecalcTime"); Element* viewport_defining = ViewportDefiningElement();
diff --git a/third_party/blink/renderer/core/dom/dom_node_ids.h b/third_party/blink/renderer/core/dom/dom_node_ids.h index 249b57d..885586cf 100644 --- a/third_party/blink/renderer/core/dom/dom_node_ids.h +++ b/third_party/blink/renderer/core/dom/dom_node_ids.h
@@ -8,16 +8,13 @@ #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/dom/node.h" #include "third_party/blink/renderer/core/dom/weak_identifier_map.h" +#include "third_party/blink/renderer/platform/graphics/dom_node_id.h" #include "third_party/blink/renderer/platform/wtf/allocator.h" namespace blink { -using DOMNodeId = uint64_t; - DECLARE_WEAK_IDENTIFIER_MAP(Node, DOMNodeId); -static const DOMNodeId kInvalidDOMNodeId = 0; - class CORE_EXPORT DOMNodeIds { STATIC_ONLY(DOMNodeIds);
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc index 2147c8f..b0e4f02 100644 --- a/third_party/blink/renderer/core/dom/element.cc +++ b/third_party/blink/renderer/core/dom/element.cc
@@ -223,10 +223,6 @@ ConstructionType type) : ContainerNode(document, type), tag_name_(tag_name) {} -Element::~Element() { - DCHECK(NeedsAttach()); -} - inline ElementRareData* Element::GetElementRareData() const { DCHECK(HasRareData()); return static_cast<ElementRareData*>(RareData()); @@ -1976,6 +1972,8 @@ rare_data->ClearPseudoElements(); } + SetComputedStyle(nullptr); + if (Fullscreen::IsFullscreenElement(*this)) { SetContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(false); if (insertion_point.IsElementNode()) { @@ -2045,37 +2043,17 @@ void Element::AttachLayoutTree(AttachContext& context) { DCHECK(GetDocument().InStyleRecalc()); - if (HasRareData() && NeedsAttach() && !IsPseudoElement()) { - // We have already been through detach when doing an attach, but we may have - // done a getComputedStyle() in between storing the ComputedStyle on rare - // data if the detach was a LazyReattachIfAttached(). - // - // We do not clear it for pseudo elements because we store the original - // style in rare data for display:contents when the ComputedStyle used for - // the LayoutObject is an inline only inheriting properties from the element - // parent. - ElementRareData* data = GetElementRareData(); - data->ClearComputedStyle(); + ComputedStyle* style = MutableComputedStyle(); + if (!style && !ChildNeedsReattachLayoutTree()) { + Node::AttachLayoutTree(context); + return; } - ComputedStyle* style = GetNonAttachedStyle(); - if (style && CanParticipateInFlatTree()) { - LayoutTreeBuilderForElement builder(*this, style); - builder.CreateLayoutObjectIfNeeded(); - - if (!GetLayoutObject() && ShouldStoreNonLayoutObjectComputedStyle(*style)) - StoreNonLayoutObjectComputedStyle(style); - } - - if (HasRareData() && !GetLayoutObject() && - !GetElementRareData()->GetComputedStyle()) { - ElementRareData* rare_data = GetElementRareData(); - if (ElementAnimations* element_animations = - rare_data->GetElementAnimations()) { - element_animations->CssAnimations().Cancel(); - element_animations->SetAnimationStyleChange(false); + if (style) { + if (CanParticipateInFlatTree()) { + LayoutTreeBuilderForElement builder(*this, style); + builder.CreateLayoutObjectIfNeeded(); } - rare_data->ClearPseudoElements(); } AttachContext children_context(context); @@ -2085,19 +2063,17 @@ children_context.previous_in_flow = nullptr; children_context.use_previous_in_flow = true; - ClearNeedsReattachLayoutTree(); AttachPseudoElement(kPseudoIdBefore, children_context); - // When a shadow root exists, it does the work of attaching the children. if (ShadowRoot* shadow_root = GetShadowRoot()) { - if (shadow_root->NeedsAttach()) - shadow_root->AttachLayoutTree(children_context); + // When a shadow root exists, it does the work of attaching the children. + shadow_root->AttachLayoutTree(children_context); + Node::AttachLayoutTree(context); + ClearChildNeedsReattachLayoutTree(); + } else { + ContainerNode::AttachLayoutTree(children_context); } - ContainerNode::AttachLayoutTree(children_context); - SetNonAttachedStyle(nullptr); - AddCallbackSelectors(); - AttachPseudoElement(kPseudoIdAfter, children_context); AttachPseudoElement(kPseudoIdBackdrop, children_context); @@ -2117,18 +2093,11 @@ void Element::DetachLayoutTree(const AttachContext& context) { HTMLFrameOwnerElement::PluginDisposeSuspendScope suspend_plugin_dispose; - CancelFocusAppearanceUpdate(); - RemoveCallbackSelectors(); if (HasRareData()) { ElementRareData* data = GetElementRareData(); if (!context.performing_reattach) data->ClearPseudoElements(); - // attachLayoutTree() will clear the computed style for us when inside - // recalcStyle. - if (!GetDocument().InStyleRecalc()) - data->ClearComputedStyle(); - if (ElementAnimations* element_animations = data->GetElementAnimations()) { if (context.performing_reattach) { // FIXME: We call detach from within style recalc, so compositingState @@ -2145,19 +2114,27 @@ } element_animations->ClearBaseComputedStyle(); } - - DetachPseudoElement(kPseudoIdBefore, context); - - if (ShadowRoot* shadow_root = data->GetShadowRoot()) - shadow_root->DetachLayoutTree(context); } - ContainerNode::DetachLayoutTree(context); + DetachPseudoElement(kPseudoIdBefore, context); + + if (ChildNeedsReattachLayoutTree() || GetComputedStyle()) { + if (ShadowRoot* shadow_root = GetShadowRoot()) + shadow_root->DetachLayoutTree(context); + ContainerNode::DetachLayoutTree(context); + } else { + Node::DetachLayoutTree(context); + } DetachPseudoElement(kPseudoIdAfter, context); DetachPseudoElement(kPseudoIdBackdrop, context); DetachPseudoElement(kPseudoIdFirstLetter, context); + if (!context.performing_reattach) { + UpdateCallbackSelectors(GetComputedStyle(), nullptr); + SetComputedStyle(nullptr); + } + if (!context.performing_reattach && IsUserActionElement()) { if (IsHovered()) GetDocument().HoveredElementDetached(*this); @@ -2167,8 +2144,6 @@ } SetNeedsResizeObserverUpdate(); - - DCHECK(NeedsAttach()); } scoped_refptr<ComputedStyle> Element::StyleForLayoutObject( @@ -2225,145 +2200,66 @@ return GetDocument().EnsureStyleResolver().StyleForElement(this); } -bool Element::ShouldCallRecalcStyleForChildren(StyleRecalcChange change) { - if (change != kReattach) - return change >= kUpdatePseudoElements || ChildNeedsStyleRecalc(); - if (!ChildrenCanHaveStyle()) - return false; - if (const ComputedStyle* new_style = GetNonAttachedStyle()) { - return LayoutObjectIsNeeded(*new_style) || - ShouldStoreNonLayoutObjectComputedStyle(*new_style); - } - return !CanParticipateInFlatTree(); -} - void Element::RecalcStyleForTraversalRootAncestor() { if (!ChildNeedsReattachLayoutTree()) UpdateFirstLetterPseudoElement(StyleUpdatePhase::kRecalc); if (HasCustomStyleCallbacks()) - DidRecalcStyle(kNoChange); + DidRecalcStyle({}); } -void Element::RecalcStyle(StyleRecalcChange change, bool calc_invisible) { +void Element::RecalcStyle(const StyleRecalcChange change) { + DCHECK(InActiveDocument()); DCHECK(GetDocument().InStyleRecalc()); DCHECK(!GetDocument().Lifecycle().InDetach()); if (StyleRecalcBlockedByDisplayLock()) return; - // If we are re-attaching in a Shadow DOM v0 tree, we recalc down to the - // distributed nodes to propagate kReattach down the flat tree (See - // V0InsertionPoint::DidRecalcStyle). That means we may have a shadow- - // including parent (V0InsertionPoint) with dirty recalc bit in the case where - // fallback content has been redistributed to a different insertion point. - // This will not happen for Shadow DOM v1 because we walk assigned nodes and - // slots themselves are assigned and part of the flat tree. - DCHECK( - !ParentOrShadowHostNode()->NeedsStyleRecalc() || - (ParentOrShadowHostNode()->IsV0InsertionPoint() && change == kReattach)); - DCHECK(InActiveDocument()); - if (HasCustomStyleCallbacks()) WillRecalcStyle(change); - if (change >= kIndependentInherit || NeedsStyleRecalc()) { - if (HasRareData()) { - ElementRareData* data = GetElementRareData(); - if (change != kIndependentInherit) { - // We keep the old computed style around for display: contents, option - // and optgroup. This way we can call stylePropagationDiff accurately. - // - // We could clear it always, but we'd have more expensive restyles for - // children. - // - // Note that we can't just keep stored other kind of non-layout object - // computed style (like the one that gets set when getComputedStyle is - // called on a display: none element), because that is a sizable memory - // hit. - // - // Also, we don't want to leave a stale computed style, which may happen - // if we don't end up calling recalcOwnStyle because there's no parent - // style. - const ComputedStyle* non_layout_style = NonLayoutObjectComputedStyle(); - if (!non_layout_style || - !ShouldStoreNonLayoutObjectComputedStyle(*non_layout_style) || - !ParentComputedStyle()) { - data->ClearComputedStyle(); - } - } - - if (change >= kIndependentInherit) { - if (ElementAnimations* element_animations = - data->GetElementAnimations()) - element_animations->SetAnimationStyleChange(false); - } - } - - // If we are on the find-in-page root, we need to calculate style for - // invisible nodes in this subtree. - if (!calc_invisible && this == GetDocument().FindInPageRoot()) - calc_invisible = true; - - if (ParentComputedStyle()) { - change = RecalcOwnStyle(change, calc_invisible); - } else if (!CanParticipateInFlatTree()) { - // Recalculate style for Shadow DOM v0 <content> insertion point. - // It does not take style since it's not part of the flat tree, but we - // need to traverse into fallback children for reattach. - if (NeedsAttach()) - change = kReattach; - if (change == kReattach) - SetNeedsReattachLayoutTree(); - else if (GetStyleChangeType() == kSubtreeStyleChange) - change = kForce; - } - - // Needed because the RebuildLayoutTree code needs to see what the - // StyleChangeType() was on reattach roots. See Node::ReattachLayoutTree() - // for an example. - if (change != kReattach) - ClearNeedsStyleRecalc(); + StyleRecalcChange child_change = change.ForChildren(); + if (change.ShouldRecalcStyleFor(*this)) { + child_change = RecalcOwnStyle(change); + if (GetStyleChangeType() == kSubtreeStyleChange) + child_change = child_change.ForceRecalcDescendants(); + ClearNeedsStyleRecalc(); } - if (change >= kUpdatePseudoElements || ChildNeedsStyleRecalc()) { - // ChildrenCanHaveStyle(), hence ShouldCallRecalcStyleForChildren(), - // returns false for <object> elements below. Yet, they may have ::backdrop - // elements. - UpdatePseudoElement(kPseudoIdBackdrop, change); + if (child_change.TraversePseudoElements(*this)) { + UpdatePseudoElement(kPseudoIdBackdrop, child_change); + UpdatePseudoElement(kPseudoIdBefore, child_change); } - if (ShouldCallRecalcStyleForChildren(change)) { - UpdatePseudoElement(kPseudoIdBefore, change); - - if (change > kUpdatePseudoElements || ChildNeedsStyleRecalc()) { - SelectorFilterParentScope filter_scope(*this); - if (ShadowRoot* root = GetShadowRoot()) { - if (root->ShouldCallRecalcStyle(change)) - root->RecalcStyle(change); - } - RecalcDescendantStyles(change, calc_invisible); + if (child_change.TraverseChildren(*this)) { + SelectorFilterParentScope filter_scope(*this); + if (ShadowRoot* root = GetShadowRoot()) { + if (child_change.TraverseChild(*root)) + root->RecalcStyle(child_change); + RecalcDescendantStyles(StyleRecalcChange::kClearEnsured); + } else { + RecalcDescendantStyles(child_change); } + } - UpdatePseudoElement(kPseudoIdAfter, change); + if (child_change.TraversePseudoElements(*this)) { + UpdatePseudoElement(kPseudoIdAfter, child_change); // If we are re-attaching us or any of our descendants, we need to attach // the descendants before we know if this element generates a ::first-letter // and which element the ::first-letter inherits style from. - if (change < kReattach && !ChildNeedsReattachLayoutTree()) + if (!child_change.ReattachLayoutTree() && !ChildNeedsReattachLayoutTree()) UpdateFirstLetterPseudoElement(StyleUpdatePhase::kRecalc); - - ClearChildNeedsStyleRecalc(); } + ClearChildNeedsStyleRecalc(); + if (HasCustomStyleCallbacks()) - DidRecalcStyle(change); + DidRecalcStyle(child_change); NotifyDisplayLockDidRecalcStyle(); } -scoped_refptr<ComputedStyle> Element::PropagateInheritedProperties( - StyleRecalcChange change) { - if (change != kIndependentInherit) - return nullptr; +scoped_refptr<ComputedStyle> Element::PropagateInheritedProperties() { if (IsPseudoElement()) return nullptr; if (NeedsStyleRecalc()) @@ -2382,32 +2278,108 @@ return new_style; } -StyleRecalcChange Element::RecalcOwnStyle(StyleRecalcChange change, - bool calc_invisible) { +static const StyleRecalcChange ApplyComputedStyleDiff( + const StyleRecalcChange change, + ComputedStyle::Difference diff) { + if (change.RecalcDescendants() || + diff < ComputedStyle::Difference::kPseudoStyle) + return change; + if (diff == ComputedStyle::Difference::kDisplayAffectingDescendantStyles) + return change.ForceRecalcDescendants(); + if (diff == ComputedStyle::Difference::kInherited) + return change.EnsureAtLeast(StyleRecalcChange::kRecalcChildren); + if (diff == ComputedStyle::Difference::kIndependentInherited) + return change.EnsureAtLeast(StyleRecalcChange::kIndependentInherit); + DCHECK(diff == ComputedStyle::Difference::kPseudoStyle); + return change.EnsureAtLeast(StyleRecalcChange::kUpdatePseudoElements); +} + +StyleRecalcChange Element::RecalcOwnStyle(const StyleRecalcChange change) { DCHECK(GetDocument().InStyleRecalc()); - DCHECK(change >= kIndependentInherit || NeedsStyleRecalc()); - DCHECK(ParentComputedStyle()); - DCHECK(!GetNonAttachedStyle()); - - scoped_refptr<const ComputedStyle> old_style = GetComputedStyle(); - - // When propagating inherited changes, we don't need to do a full style recalc - // if the only changed properties are independent. In this case, we can simply - // set these directly on the ComputedStyle object. - scoped_refptr<ComputedStyle> new_style = PropagateInheritedProperties(change); - if (!new_style) - new_style = StyleForLayoutObject(calc_invisible); - if (!new_style) { - DCHECK(IsPseudoElement()); - SetNeedsReattachLayoutTree(); - return kReattach; + if (!CanParticipateInFlatTree()) { + // This is a V0InsertionPoint. This whole block can be removed when Shadow + // DOM V0 is removed. + DCHECK(IsV0InsertionPoint()); + if (NeedsStyleRecalc()) + SetComputedStyle(nullptr); + if (GetForceReattachLayoutTree()) + return change.ForceReattachLayoutTree(); + // Keep recalculating computed style for fallback children as if they were + // children of the insertion point parent. + return change; } - StyleRecalcChange local_change = - ComputedStyle::StylePropagationDiff(old_style.get(), new_style.get()); - if (local_change == kNoChange) { + if (change.RecalcChildren() && HasRareData() && NeedsStyleRecalc()) { + // This element needs recalc because its parent changed inherited + // properties or there was some style change in the ancestry which needed a + // full subtree recalc. In that case we cannot use the BaseComputedStyle + // optimization. + if (ElementAnimations* element_animations = + GetElementRareData()->GetElementAnimations()) + element_animations->SetAnimationStyleChange(false); + } + + scoped_refptr<ComputedStyle> new_style; + scoped_refptr<const ComputedStyle> old_style = GetComputedStyle(); + + StyleRecalcChange child_change = change.ForChildren(); + + // If we are on the find-in-page root, we need to calculate style for + // invisible nodes in this subtree. + if (!child_change.CalcInvisible() && this == GetDocument().FindInPageRoot()) + child_change = child_change.ForceCalcInvisible(); + + if (ParentComputedStyle()) { + if (old_style && change.IndependentInherit()) { + // When propagating inherited changes, we don't need to do a full style + // recalc if the only changed properties are independent. In this case, we + // can simply clone the old ComputedStyle and set these directly. + new_style = PropagateInheritedProperties(); + } + if (!new_style) + new_style = StyleForLayoutObject(child_change.CalcInvisible()); + if (new_style && !ShouldStoreComputedStyle(*new_style)) + new_style = nullptr; + } + + ComputedStyle::Difference diff = + ComputedStyle::ComputeDifference(old_style.get(), new_style.get()); + + if (old_style && old_style->IsEnsuredInDisplayNone()) { + // Make sure we traverse children for clearing ensured computed styles + // further down the tree. + child_change = + child_change.EnsureAtLeast(StyleRecalcChange::kRecalcChildren); + // If the existing style was ensured in a display:none subtree, set it to + // null to make sure we don't mark for re-attachment if the new style is + // null. + old_style = nullptr; + } + + if (!new_style && HasRareData()) { + ElementRareData* rare_data = GetElementRareData(); + if (ElementAnimations* element_animations = + rare_data->GetElementAnimations()) { + element_animations->CssAnimations().Cancel(); + } + rare_data->ClearPseudoElements(); + } + + SetComputedStyle(new_style); + + if (!child_change.ReattachLayoutTree() && + (GetForceReattachLayoutTree() || ComputedStyle::NeedsReattachLayoutTree( + old_style.get(), new_style.get()))) { + child_change = child_change.ForceReattachLayoutTree(); + } + + if (diff == ComputedStyle::Difference::kEqual) { INCREMENT_STYLE_STATS_COUNTER(GetDocument().GetStyleEngine(), styles_unchanged, 1); + if (!new_style) { + DCHECK(!old_style); + return {}; + } } else { INCREMENT_STYLE_STATS_COUNTER(GetDocument().GetStyleEngine(), styles_changed, 1); @@ -2418,61 +2390,42 @@ // track of which elements depend on rem units like we do for viewport // styles, but we assume root font size changes are rare and just // recalculate everything. - if (local_change < kForce) - local_change = kForce; + child_change = child_change.ForceRecalcDescendants(); } } - } - - if (GetForceReattachLayoutTree()) - local_change = kReattach; - - if (change == kReattach || local_change == kReattach) { - SetNonAttachedStyle(new_style); - SetNeedsReattachLayoutTree(); - return kReattach; - } - - DCHECK(old_style); - - if (local_change != kNoChange) + child_change = ApplyComputedStyleDiff(child_change, diff); UpdateCallbackSelectors(old_style.get(), new_style.get()); + } + + if (old_style && new_style && !change.RecalcChildren() && + old_style->HasChildDependentFlags()) { + new_style->CopyChildDependentFlagsFrom(*old_style); + } + + if (child_change.ReattachLayoutTree()) { + if (old_style || new_style) + SetNeedsReattachLayoutTree(); + return child_change; + } if (LayoutObject* layout_object = GetLayoutObject()) { - // kNoChange may mean that the computed style didn't change, but there are + DCHECK(new_style); + if (IsPseudoElement() && new_style->Display() == EDisplay::kContents) { + new_style = + ToPseudoElement(this)->LayoutStyleForDisplayContents(*new_style); + } + // kEqual means that the computed style didn't change, but there are // additional flags in ComputedStyle which may have changed. For instance, // the AffectedBy* flags. We don't need to go through the visual // invalidation diffing in that case, but we replace the old ComputedStyle // object with the new one to ensure the mentioned flags are up to date. - if (local_change == kNoChange) - layout_object->SetStyleInternal(new_style.get()); - else - layout_object->SetStyle(new_style.get()); - } else { - if (ShouldStoreNonLayoutObjectComputedStyle(*new_style)) - StoreNonLayoutObjectComputedStyle(new_style); - else if (HasRareData()) - GetElementRareData()->ClearComputedStyle(); + LayoutObject::ApplyStyleChanges apply_changes = + diff == ComputedStyle::Difference::kEqual + ? LayoutObject::ApplyStyleChanges::kNo + : LayoutObject::ApplyStyleChanges::kYes; + layout_object->SetStyle(new_style.get(), apply_changes); } - - if (GetStyleChangeType() >= kSubtreeStyleChange) - return kForce; - - if (change > kInherit || local_change > kInherit) - return max(local_change, change); - - if (local_change < kIndependentInherit) { - if (old_style->HasChildDependentFlags()) { - if (ChildNeedsStyleRecalc()) - return kInherit; - new_style->CopyChildDependentFlagsFrom(*old_style); - } - if (old_style->HasPseudoElementStyle() || - new_style->HasPseudoElementStyle()) - return kUpdatePseudoElements; - } - - return local_change; + return child_change; } void Element::RebuildLayoutTree(WhitespaceAttacher& whitespace_attacher) { @@ -2517,7 +2470,6 @@ DCHECK(!NeedsStyleRecalc()); DCHECK(!ChildNeedsStyleRecalc()); DCHECK(!NeedsReattachLayoutTree()); - DCHECK(!GetNonAttachedStyle()); DCHECK(!ChildNeedsReattachLayoutTree()); } @@ -2575,14 +2527,6 @@ .UpdateSelectorMatches(old_callback_selectors, new_callback_selectors); } -void Element::AddCallbackSelectors() { - UpdateCallbackSelectors(nullptr, GetComputedStyle()); -} - -void Element::RemoveCallbackSelectors() { - UpdateCallbackSelectors(GetComputedStyle(), nullptr); -} - ShadowRoot& Element::CreateAndAttachShadowRoot(ShadowRootType type) { #if DCHECK_IS_ON() NestingLevelIncrementer slot_assignment_recalc_forbidden_scope( @@ -2613,7 +2557,8 @@ } shadow_root->InsertedInto(*this); - SetChildNeedsStyleRecalc(); + if (InActiveDocument()) + SetChildNeedsStyleRecalc(); SetNeedsStyleRecalc(kSubtreeStyleChange, StyleChangeReasonForTracing::Create( style_change_reason::kShadow)); @@ -3875,14 +3820,11 @@ // values returned for the ":selection" pseudo-element will be correct. ComputedStyle* element_style = MutableComputedStyle(); if (!element_style) { - ElementRareData& rare_data = EnsureElementRareData(); - if (!rare_data.GetComputedStyle()) { - scoped_refptr<ComputedStyle> new_style = - GetDocument().StyleForElementIgnoringPendingStylesheets(this); - new_style->SetIsEnsuredInDisplayNone(); - rare_data.SetComputedStyle(std::move(new_style)); - } - element_style = rare_data.GetComputedStyle(); + scoped_refptr<ComputedStyle> new_style = + GetDocument().StyleForElementIgnoringPendingStylesheets(this); + element_style = new_style.get(); + element_style->SetIsEnsuredInDisplayNone(); + SetComputedStyle(std::move(new_style)); } if (!pseudo_element_specifier) @@ -3907,50 +3849,26 @@ PseudoStyleRequest::kForComputedStyle), element_style, layout_parent_style); DCHECK(result); + result->SetIsEnsuredInDisplayNone(); return element_style->AddCachedPseudoStyle(std::move(result)); } -const ComputedStyle* Element::NonLayoutObjectComputedStyle() const { - if (NeedsReattachLayoutTree()) - return GetNonAttachedStyle(); - - if (!HasRareData()) - return nullptr; - - return GetElementRareData()->GetComputedStyle(); -} - bool Element::HasDisplayContentsStyle() const { - if (const ComputedStyle* style = NonLayoutObjectComputedStyle()) + if (const ComputedStyle* style = GetComputedStyle()) return style->Display() == EDisplay::kContents; return false; } -bool Element::ShouldStoreNonLayoutObjectComputedStyle( - const ComputedStyle& style) const { -#if DCHECK_IS_ON() - if (style.Display() == EDisplay::kContents && !NeedsReattachLayoutTree()) - DCHECK(!GetLayoutObject() || IsPseudoElement()); -#endif - if (style.Display() == EDisplay::kNone) - return false; +bool Element::ShouldStoreComputedStyle(const ComputedStyle& style) const { + if (LayoutObjectIsNeeded(style)) + return true; if (IsSVGElement()) { - Element* parent_element = LayoutTreeBuilderTraversal::ParentElement(*this); - if (parent_element && !parent_element->IsSVGElement()) + if (!ToSVGElement(*this).HasSVGParent()) return false; if (IsSVGStopElement(*this)) return true; } - if (style.Display() == EDisplay::kContents) - return true; - return IsHTMLOptGroupElement(*this) || IsHTMLOptionElement(*this); -} - -void Element::StoreNonLayoutObjectComputedStyle( - scoped_refptr<ComputedStyle> style) { - DCHECK(style); - DCHECK(ShouldStoreNonLayoutObjectComputedStyle(*style)); - EnsureElementRareData().SetComputedStyle(std::move(style)); + return style.Display() == EDisplay::kContents; } AtomicString Element::ComputeInheritedLanguage() const { @@ -4041,7 +3959,7 @@ if (phase == StyleUpdatePhase::kRebuildLayoutTree && element->NeedsReattachLayoutTree()) { // We were already updated in RecalcStyle and ready for reattach. - DCHECK(element->GetNonAttachedStyle()); + DCHECK(element->GetComputedStyle()); return; } @@ -4055,38 +3973,38 @@ DCHECK(text_node_changed); scoped_refptr<ComputedStyle> pseudo_style = element->StyleForLayoutObject(); if (PseudoElementLayoutObjectIsNeeded(pseudo_style.get())) - element->SetNonAttachedStyle(std::move(pseudo_style)); + element->SetComputedStyle(std::move(pseudo_style)); else GetElementRareData()->SetPseudoElement(kPseudoIdFirstLetter, nullptr); return; } - element->RecalcStyle(text_node_changed ? kReattach : kForce); + StyleRecalcChange change(StyleRecalcChange::kRecalcDescendants); + if (text_node_changed) + change = change.ForceReattachLayoutTree(); + element->RecalcStyle(change); if (element->NeedsReattachLayoutTree() && - !PseudoElementLayoutObjectIsNeeded(element->GetNonAttachedStyle())) { + !PseudoElementLayoutObjectIsNeeded(element->GetComputedStyle())) { GetElementRareData()->SetPseudoElement(kPseudoIdFirstLetter, nullptr); } } void Element::UpdatePseudoElement(PseudoId pseudo_id, - StyleRecalcChange change) { + const StyleRecalcChange change) { PseudoElement* element = GetPseudoElement(pseudo_id); if (!element) { - if (change < kUpdatePseudoElements) - return; if ((element = CreatePseudoElementIfNeeded(pseudo_id))) element->SetNeedsReattachLayoutTree(); return; } - if (change == kUpdatePseudoElements || - element->ShouldCallRecalcStyle(change)) { + if (change.ShouldUpdatePseudoElement(*element)) { if (CanGeneratePseudoElement(pseudo_id)) { - element->RecalcStyle(change == kUpdatePseudoElements ? kForce : change); + element->RecalcStyle(change.ForChildren().ForceRecalcDescendants()); if (!element->NeedsReattachLayoutTree()) return; - if (PseudoElementLayoutObjectIsNeeded(element->GetNonAttachedStyle())) + if (PseudoElementLayoutObjectIsNeeded(element->GetComputedStyle())) return; } GetElementRareData()->SetPseudoElement(pseudo_id, nullptr); @@ -4117,7 +4035,7 @@ if (pseudo_id == kPseudoIdBackdrop) GetDocument().AddToTopLayer(pseudo_element, this); - pseudo_element->SetNonAttachedStyle(std::move(pseudo_style)); + pseudo_element->SetComputedStyle(std::move(pseudo_style)); probe::pseudoElementCreated(pseudo_element); @@ -4422,9 +4340,8 @@ SetElementFlag(ElementFlags::kIsInTopLayer, in_top_layer); if (!isConnected()) return; - SetForceReattachLayoutTree(); - SetNeedsStyleRecalc(kLocalStyleChange, StyleChangeReasonForTracing::Create( - style_change_reason::kFullscreen)); + if (!GetDocument().InStyleRecalc()) + LazyReattachIfAttached(); } void Element::requestPointerLock() { @@ -4760,6 +4677,10 @@ DCHECK(insertion_point.isConnected() || IsContainerNode() || IsInShadowTree()); if (insertion_point.isConnected()) { + ClearNeedsStyleRecalc(); + ClearChildNeedsStyleRecalc(); + ClearNeedsStyleInvalidation(); + ClearChildNeedsStyleInvalidation(); ClearFlag(kIsConnectedFlag); insertion_point.GetDocument().DecrementNodeCount(); } @@ -4771,11 +4692,11 @@ } } -void Element::WillRecalcStyle(StyleRecalcChange) { +void Element::WillRecalcStyle(const StyleRecalcChange) { DCHECK(HasCustomStyleCallbacks()); } -void Element::DidRecalcStyle(StyleRecalcChange) { +void Element::DidRecalcStyle(const StyleRecalcChange) { DCHECK(HasCustomStyleCallbacks()); }
diff --git a/third_party/blink/renderer/core/dom/element.h b/third_party/blink/renderer/core/dom/element.h index 928ecc3b..fc9c265 100644 --- a/third_party/blink/renderer/core/dom/element.h +++ b/third_party/blink/renderer/core/dom/element.h
@@ -30,6 +30,7 @@ #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/css/css_primitive_value.h" #include "third_party/blink/renderer/core/css/css_selector.h" +#include "third_party/blink/renderer/core/css/style_recalc.h" #include "third_party/blink/renderer/core/dom/container_node.h" #include "third_party/blink/renderer/core/dom/dom_high_res_time_stamp.h" #include "third_party/blink/renderer/core/dom/element_data.h" @@ -160,7 +161,6 @@ static Element* Create(const QualifiedName&, Document*); Element(const QualifiedName& tag_name, Document*, ConstructionType); - ~Element() override; DEFINE_ATTRIBUTE_EVENT_LISTENER(beforecopy, kBeforecopy); DEFINE_ATTRIBUTE_EVENT_LISTENER(beforecut, kBeforecut); @@ -512,7 +512,7 @@ virtual LayoutObject* CreateLayoutObject(const ComputedStyle&); virtual bool LayoutObjectIsNeeded(const ComputedStyle&) const; - void RecalcStyle(StyleRecalcChange, bool calc_invisible = false); + void RecalcStyle(const StyleRecalcChange); void RecalcStyleForTraversalRootAncestor(); void RebuildLayoutTreeForTraversalRootAncestor() { RebuildFirstLetterLayoutTree(); @@ -568,16 +568,9 @@ // display none. const ComputedStyle* EnsureComputedStyle(PseudoId = kPseudoIdNone); - const ComputedStyle* NonLayoutObjectComputedStyle() const; - bool HasDisplayContentsStyle() const; - ComputedStyle* MutableNonLayoutObjectComputedStyle() const { - return const_cast<ComputedStyle*>(NonLayoutObjectComputedStyle()); - } - - bool ShouldStoreNonLayoutObjectComputedStyle(const ComputedStyle&) const; - void StoreNonLayoutObjectComputedStyle(scoped_refptr<ComputedStyle>); + bool ShouldStoreComputedStyle(const ComputedStyle&) const; // Methods for indicating the style is affected by dynamic updates (e.g., // children changing, our position changing in our sibling list, etc.) @@ -924,8 +917,8 @@ void RemovedFrom(ContainerNode&) override; void ChildrenChanged(const ChildrenChange&) override; - virtual void WillRecalcStyle(StyleRecalcChange); - virtual void DidRecalcStyle(StyleRecalcChange); + virtual void WillRecalcStyle(const StyleRecalcChange); + virtual void DidRecalcStyle(const StyleRecalcChange); virtual scoped_refptr<ComputedStyle> CustomStyleForLayoutObject(); virtual NamedItemType GetNamedItemType() const { @@ -995,14 +988,11 @@ // these changes can be directly propagated to this element (the child). // If these conditions are met, propagates the changes to the current style // and returns the new style. Otherwise, returns null. - scoped_refptr<ComputedStyle> PropagateInheritedProperties(StyleRecalcChange); + scoped_refptr<ComputedStyle> PropagateInheritedProperties(); - StyleRecalcChange RecalcOwnStyle(StyleRecalcChange, - bool calc_invisible = false); - - // Returns true if we should traverse shadow including children and pseudo - // elements for RecalcStyle. - bool ShouldCallRecalcStyleForChildren(StyleRecalcChange); + // Recalculate the ComputedStyle for this element and return a + // StyleRecalcChange for propagation/traversal into child nodes. + StyleRecalcChange RecalcOwnStyle(const StyleRecalcChange); void RebuildPseudoElementLayoutTree(PseudoId, WhitespaceAttacher&); void RebuildFirstLetterLayoutTree(); @@ -1010,7 +1000,7 @@ inline void CheckForEmptyStyleChange(const Node* node_before_change, const Node* node_after_change); - void UpdatePseudoElement(PseudoId, StyleRecalcChange); + void UpdatePseudoElement(PseudoId, const StyleRecalcChange); enum class StyleUpdatePhase { kRecalc, @@ -1078,8 +1068,6 @@ inline void UpdateCallbackSelectors(const ComputedStyle* old_style, const ComputedStyle* new_style); - inline void RemoveCallbackSelectors(); - inline void AddCallbackSelectors(); // Clone is private so that non-virtual CloneElementWithChildren and // CloneElementWithoutChildren are used instead.
diff --git a/third_party/blink/renderer/core/dom/element_rare_data.cc b/third_party/blink/renderer/core/dom/element_rare_data.cc index 4846d42..ce508fa 100644 --- a/third_party/blink/renderer/core/dom/element_rare_data.cc +++ b/third_party/blink/renderer/core/dom/element_rare_data.cc
@@ -41,7 +41,7 @@ struct SameSizeAsElementRareData : NodeRareData { IntSize scroll_offset; - void* pointers_or_strings[4]; + void* pointers_or_strings[3]; Member<void*> members[17]; bool flags[1]; }; @@ -73,15 +73,6 @@ return *cssom_map_wrapper_; } -void ElementRareData::SetComputedStyle( - scoped_refptr<ComputedStyle> computed_style) { - computed_style_ = std::move(computed_style); -} - -void ElementRareData::ClearComputedStyle() { - computed_style_ = nullptr; -} - AttrNodeList& ElementRareData::EnsureAttrNodeList() { if (!attr_node_list_) attr_node_list_ = MakeGarbageCollected<AttrNodeList>();
diff --git a/third_party/blink/renderer/core/dom/element_rare_data.h b/third_party/blink/renderer/core/dom/element_rare_data.h index 9a7c006..c770ee9 100644 --- a/third_party/blink/renderer/core/dom/element_rare_data.h +++ b/third_party/blink/renderer/core/dom/element_rare_data.h
@@ -91,10 +91,6 @@ attribute_map_ = attribute_map; } - ComputedStyle* GetComputedStyle() const { return computed_style_.get(); } - void SetComputedStyle(scoped_refptr<ComputedStyle>); - void ClearComputedStyle(); - DOMTokenList* GetClassList() const { return class_list_.Get(); } void SetClassList(DOMTokenList* class_list) { class_list_ = class_list; @@ -228,7 +224,6 @@ intersection_observer_data_; TraceWrapperMember<ResizeObserverDataMap> resize_observer_data_; - scoped_refptr<ComputedStyle> computed_style_; // TODO(davaajav):remove this field when v0 custom elements are deprecated Member<V0CustomElementDefinition> v0_custom_element_definition_; Member<CustomElementDefinition> custom_element_definition_;
diff --git a/third_party/blink/renderer/core/dom/layout_tree_builder.cc b/third_party/blink/renderer/core/dom/layout_tree_builder.cc index 0ab2778a..6c8603c 100644 --- a/third_party/blink/renderer/core/dom/layout_tree_builder.cc +++ b/third_party/blink/renderer/core/dom/layout_tree_builder.cc
@@ -32,6 +32,7 @@ #include "third_party/blink/renderer/core/css/style_change_reason.h" #include "third_party/blink/renderer/core/dom/first_letter_pseudo_element.h" #include "third_party/blink/renderer/core/dom/node.h" +#include "third_party/blink/renderer/core/dom/node_computed_style.h" #include "third_party/blink/renderer/core/dom/pseudo_element.h" #include "third_party/blink/renderer/core/dom/text.h" #include "third_party/blink/renderer/core/dom/v0_insertion_point.h" @@ -196,7 +197,7 @@ void LayoutTreeBuilderForText::CreateLayoutObject() { ComputedStyle& style = *style_; - DCHECK(style_ == layout_object_parent_->Style() || + DCHECK(style_ == layout_object_parent_->GetNode()->GetComputedStyle() || ToElement(LayoutTreeBuilderTraversal::Parent(*node_)) ->HasDisplayContentsStyle()); @@ -287,7 +288,7 @@ for (const LayoutObject* block : blocks_) ToElement(*block->GetNode()).LazyReattachIfAttached(); state_ = State::kForcingLegacyLayout; - document_->GetStyleEngine().RecalcStyle(kNoChange); + document_->GetStyleEngine().RecalcStyle({}); document_->GetStyleEngine().RebuildLayoutTree(); state_ = State::kClosed; }
diff --git a/third_party/blink/renderer/core/dom/layout_tree_builder.h b/third_party/blink/renderer/core/dom/layout_tree_builder.h index ab2f711..8265951 100644 --- a/third_party/blink/renderer/core/dom/layout_tree_builder.h +++ b/third_party/blink/renderer/core/dom/layout_tree_builder.h
@@ -64,7 +64,6 @@ LayoutTreeBuilder(NodeType& node, LayoutObject* layout_object_parent) : node_(node), layout_object_parent_(layout_object_parent) { DCHECK(!node.GetLayoutObject()); - DCHECK(node.NeedsAttach()); DCHECK(node.GetDocument().InStyleRecalc()); DCHECK(node.InActiveDocument()); } @@ -75,7 +74,7 @@ // Avoid an O(N^2) walk over the children when reattaching all children of a // node. if (layout_object_parent_->GetNode() && - layout_object_parent_->GetNode()->NeedsAttach()) + layout_object_parent_->GetNode()->NeedsReattachLayoutTree()) return nullptr; LayoutObject* next =
diff --git a/third_party/blink/renderer/core/dom/node.cc b/third_party/blink/renderer/core/dom/node.cc index 651594a..286380bf 100644 --- a/third_party/blink/renderer/core/dom/node.cc +++ b/third_party/blink/renderer/core/dom/node.cc
@@ -170,18 +170,17 @@ NodeRenderingData::NodeRenderingData( LayoutObject* layout_object, - scoped_refptr<ComputedStyle> non_attached_style) - : layout_object_(layout_object), non_attached_style_(non_attached_style) {} + scoped_refptr<ComputedStyle> computed_style) + : layout_object_(layout_object), computed_style_(computed_style) {} NodeRenderingData::~NodeRenderingData() { CHECK(!layout_object_); } -void NodeRenderingData::SetNonAttachedStyle( - scoped_refptr<ComputedStyle> non_attached_style) { +void NodeRenderingData::SetComputedStyle( + scoped_refptr<ComputedStyle> computed_style) { DCHECK_NE(&SharedEmptyData(), this); - DCHECK(!non_attached_style || !non_attached_style_); - non_attached_style_ = non_attached_style; + computed_style_ = computed_style; } NodeRenderingData& NodeRenderingData::SharedEmptyData() { @@ -903,7 +902,7 @@ // Swap the NodeRenderingData to point to a new NodeRenderingData instead of // the static SharedEmptyData instance. - DCHECK(!node_layout_data->GetNonAttachedStyle()); + DCHECK(!node_layout_data->GetComputedStyle()); node_layout_data = new NodeRenderingData(layout_object, nullptr); if (HasRareData()) data_.rare_data_->SetNodeRenderingData(node_layout_data); @@ -911,9 +910,8 @@ data_.node_layout_data_ = node_layout_data; } -void Node::SetNonAttachedStyle( - scoped_refptr<ComputedStyle> non_attached_style) { - // We don't set non-attached style for text nodes. +void Node::SetComputedStyle(scoped_refptr<ComputedStyle> computed_style) { + // We don't set computed style for text nodes. DCHECK(IsElementNode()); NodeRenderingData* node_layout_data = @@ -923,21 +921,22 @@ // Already pointing to a non empty NodeRenderingData so just set the pointer // to the new LayoutObject. if (!node_layout_data->IsSharedEmptyData()) { - node_layout_data->SetNonAttachedStyle(non_attached_style); + node_layout_data->SetComputedStyle(computed_style); return; } - if (!non_attached_style) + if (!computed_style) return; - // Ensure we don't unnecessarily set non-attached style for elements which are - // not part of the flat tree and consequently won't be attached. - DCHECK(LayoutTreeBuilderTraversal::Parent(*this)); + // Ensure we only set computed style for elements which are not part of the + // flat tree unless it's enforced for getComputedStyle(). + DCHECK(computed_style->IsEnsuredInDisplayNone() || + LayoutTreeBuilderTraversal::Parent(*this)); // Swap the NodeRenderingData to point to a new NodeRenderingData instead of // the static SharedEmptyData instance. DCHECK(!node_layout_data->GetLayoutObject()); - node_layout_data = new NodeRenderingData(nullptr, non_attached_style); + node_layout_data = new NodeRenderingData(nullptr, computed_style); if (HasRareData()) data_.rare_data_->SetNodeRenderingData(node_layout_data); else @@ -1069,6 +1068,8 @@ bool parent_dirty = ancestor && ancestor->NeedsStyleInvalidation(); for (; ancestor && !ancestor->ChildNeedsStyleInvalidation(); ancestor = ancestor->ParentOrShadowHostNode()) { + if (!ancestor->isConnected()) + return; ancestor->SetChildNeedsStyleInvalidation(); if (ancestor->NeedsStyleInvalidation()) break; @@ -1101,6 +1102,8 @@ bool parent_dirty = ancestor && ancestor->NeedsStyleRecalc(); for (; ancestor && !ancestor->ChildNeedsStyleRecalc(); ancestor = ancestor->ParentOrShadowHostNode()) { + if (!ancestor->isConnected()) + return; ancestor->SetChildNeedsStyleRecalc(); if (ancestor->NeedsStyleRecalc()) break; @@ -1186,6 +1189,7 @@ const StyleChangeReasonForTracing& reason) { DCHECK(!GetDocument().GetStyleEngine().InRebuildLayoutTree()); DCHECK(change_type != kNoStyleChange); + if (!InActiveDocument()) return; if (!IsContainerNode() && !IsTextNode()) @@ -1393,26 +1397,20 @@ void Node::ReattachLayoutTree(AttachContext& context) { context.performing_reattach = true; - // We only need to detach if the node has already been through - // attachLayoutTree(). - if (GetStyleChangeType() < kNeedsReattachStyleChange) - DetachLayoutTree(context); + DetachLayoutTree(context); AttachLayoutTree(context); DCHECK(!NeedsReattachLayoutTree()); - DCHECK(!GetNonAttachedStyle()); } void Node::AttachLayoutTree(AttachContext& context) { DCHECK(GetDocument().InStyleRecalc() || IsDocumentNode()); DCHECK(!GetDocument().Lifecycle().InDetach()); - DCHECK(NeedsAttach()); LayoutObject* layout_object = GetLayoutObject(); DCHECK(!layout_object || (layout_object->Style() && (layout_object->Parent() || layout_object->IsLayoutView()))); - ClearNeedsStyleRecalc(); ClearNeedsReattachLayoutTree(); if (AXObjectCache* cache = GetDocument().ExistingAXObjectCache()) @@ -1422,11 +1420,9 @@ void Node::DetachLayoutTree(const AttachContext& context) { DCHECK(GetDocument().Lifecycle().StateAllowsDetach()); DocumentLifecycle::DetachScope will_detach(GetDocument().Lifecycle()); - if (GetLayoutObject()) GetLayoutObject()->DestroyAndCleanupAnonymousWrappers(); SetLayoutObject(nullptr); - SetStyleChange(kNeedsReattachStyleChange); } const ComputedStyle* Node::VirtualEnsureComputedStyle( @@ -1437,6 +1433,25 @@ : nullptr; } +void Node::LazyReattachIfAttached() { + if (!InActiveDocument()) + return; + if (!IsContainerNode() && !IsTextNode()) + return; + + AttachContext context; + context.performing_reattach = true; + DetachLayoutTree(context); + + if (GetDocument().GetStyleEngine().InRebuildLayoutTree()) + return; + + SetFlag(kForceReattachLayoutTree); + SetNeedsStyleRecalc( + kSubtreeStyleChange, + StyleChangeReasonForTracing::Create(style_change_reason::kLazyReattach)); +} + // FIXME: Shouldn't these functions be in the editing code? Code that asks // questions about HTML in the core DOM class is obviously misplaced. bool Node::CanStartSelection() const {
diff --git a/third_party/blink/renderer/core/dom/node.h b/third_party/blink/renderer/core/dom/node.h index 9d10e86..7ac3c03 100644 --- a/third_party/blink/renderer/core/dom/node.h +++ b/third_party/blink/renderer/core/dom/node.h
@@ -92,9 +92,6 @@ kLocalStyleChange = 1 << kNodeStyleChangeShift, // This node and all of its flat-tree descendeants need style recalculation. kSubtreeStyleChange = 2 << kNodeStyleChangeShift, - // This node and all of its descendants are detached and need style - // recalculation. - kNeedsReattachStyleChange = 3 << kNodeStyleChangeShift, }; enum class CustomElementState { @@ -263,13 +260,7 @@ bool SupportsAltText(); - void SetNonAttachedStyle(scoped_refptr<ComputedStyle> non_attached_style); - - ComputedStyle* GetNonAttachedStyle() const { - return HasRareData() - ? data_.rare_data_->GetNodeRenderingData()->GetNonAttachedStyle() - : data_.node_layout_data_->GetNonAttachedStyle(); - } + void SetComputedStyle(scoped_refptr<ComputedStyle> computed_style); // Other methods (not part of DOM) @@ -428,17 +419,9 @@ return IsUserActionElement() && IsUserActionElementHasFocusWithin(); } - bool NeedsAttach() const { - return GetStyleChangeType() == kNeedsReattachStyleChange; - } // True if the style recalc process should recalculate style for this node. bool NeedsStyleRecalc() const { - // We do not ClearNeedsStyleRecalc() if the recalc triggers a layout re- - // attachment (see Element::RecalcStyle()). In order to avoid doing an extra - // StyleForLayoutObject for slotted elements, also check if we have been - // marked for re-attachment (which mean we have already gone through - // RecalcStyleForReattachment as a slot-assigned element). - return GetStyleChangeType() != kNoStyleChange && !NeedsReattachLayoutTree(); + return GetStyleChangeType() != kNoStyleChange; } StyleChangeType GetStyleChangeType() const { return static_cast<StyleChangeType>(node_flags_ & kStyleChangeMask); @@ -488,8 +471,7 @@ void MarkAncestorsWithChildNeedsReattachLayoutTree(); - void SetForceReattachLayoutTree() { SetFlag(kForceReattachLayoutTree); } - bool GetForceReattachLayoutTree() { + bool GetForceReattachLayoutTree() const { return GetFlag(kForceReattachLayoutTree); } @@ -693,19 +675,12 @@ void ReattachLayoutTree(AttachContext&); void LazyReattachIfAttached(); - // Returns true if recalcStyle should be called on the object, if there is - // such a method (on Document and Element). - bool ShouldCallRecalcStyle(StyleRecalcChange); - // --------------------------------------------------------------------------- // Inline ComputedStyle accessors // // Note that the following 'inline' functions are not defined in this header, // but in node_computed_style.h. Please include that file if you want to use // these functions. - - // Wrapper for nodes that don't have a layoutObject, but still cache the style - // (like HTMLOptionElement). ComputedStyle* MutableComputedStyle() const; const ComputedStyle* GetComputedStyle() const; const ComputedStyle* ParentComputedStyle() const; @@ -943,8 +918,7 @@ kForceReattachLayoutTree = 1 << 30, - kDefaultNodeFlags = - kIsFinishedParsingChildrenFlag | kNeedsReattachStyleChange + kDefaultNodeFlags = kIsFinishedParsingChildrenFlag, }; // 1 bit remaining. @@ -960,8 +934,7 @@ enum ConstructionType { kCreateOther = kIsFinishedParsingChildrenFlag, kCreateText = kDefaultNodeFlags | kIsTextFlag, - kCreateContainer = - kDefaultNodeFlags | kChildNeedsStyleRecalcFlag | kIsContainerFlag, + kCreateContainer = kDefaultNodeFlags | kIsContainerFlag, kCreateElement = kCreateContainer | kIsElementFlag, kCreateShadowRoot = kCreateContainer | kIsDocumentFragmentFlag | kIsInShadowTreeFlag, @@ -1003,11 +976,6 @@ } void SetTreeScope(TreeScope* scope) { tree_scope_ = scope; } - - static void MarkAncestorsWithChildNeedsStyleRecalc(Node* child) { - child->MarkAncestorsWithChildNeedsStyleRecalc(); - } - void SetIsFinishedParsingChildren(bool value) { SetFlag(value, kIsFinishedParsingChildrenFlag); } @@ -1071,28 +1039,6 @@ return reinterpret_cast<ContainerNode*>(parent_or_shadow_host_node_.Get()); } -inline void Node::LazyReattachIfAttached() { - if (NeedsAttach()) - return; - if (!InActiveDocument()) - return; - - AttachContext context; - context.performing_reattach = true; - - DetachLayoutTree(context); - // Comments and processing instructions are never marked dirty. - if (NeedsStyleRecalc()) - MarkAncestorsWithChildNeedsStyleRecalc(); -} - -inline bool Node::ShouldCallRecalcStyle(StyleRecalcChange change) { - if (NeedsReattachLayoutTree()) - return false; - return change >= kIndependentInherit || NeedsStyleRecalc() || - ChildNeedsStyleRecalc(); -} - // Allow equality comparisons of Nodes by reference or pointer, interchangeably. DEFINE_COMPARISON_OPERATORS_WITH_REFERENCES(Node)
diff --git a/third_party/blink/renderer/core/dom/node_computed_style.h b/third_party/blink/renderer/core/dom/node_computed_style.h index 12322e297..e4411b96 100644 --- a/third_party/blink/renderer/core/dom/node_computed_style.h +++ b/third_party/blink/renderer/core/dom/node_computed_style.h
@@ -38,15 +38,14 @@ } inline ComputedStyle* Node::MutableComputedStyle() const { - if (NeedsReattachLayoutTree()) - return GetNonAttachedStyle(); - + if (IsElementNode()) { + return HasRareData() + ? data_.rare_data_->GetNodeRenderingData()->GetComputedStyle() + : data_.node_layout_data_->GetComputedStyle(); + } + // Text nodes and Document. if (LayoutObject* layout_object = GetLayoutObject()) return layout_object->MutableStyle(); - - if (IsElementNode()) - return ToElement(this)->MutableNonLayoutObjectComputedStyle(); - return nullptr; }
diff --git a/third_party/blink/renderer/core/dom/node_rare_data.h b/third_party/blink/renderer/core/dom/node_rare_data.h index fe3e6ca..8c9be81 100644 --- a/third_party/blink/renderer/core/dom/node_rare_data.h +++ b/third_party/blink/renderer/core/dom/node_rare_data.h
@@ -73,7 +73,7 @@ public: explicit NodeRenderingData(LayoutObject*, - scoped_refptr<ComputedStyle> non_attached_style); + scoped_refptr<ComputedStyle> computed_style); ~NodeRenderingData(); LayoutObject* GetLayoutObject() const { return layout_object_; } @@ -82,17 +82,15 @@ layout_object_ = layout_object; } - ComputedStyle* GetNonAttachedStyle() const { - return non_attached_style_.get(); - } - void SetNonAttachedStyle(scoped_refptr<ComputedStyle> non_attached_style); + ComputedStyle* GetComputedStyle() const { return computed_style_.get(); } + void SetComputedStyle(scoped_refptr<ComputedStyle> computed_style); static NodeRenderingData& SharedEmptyData(); bool IsSharedEmptyData() { return this == &SharedEmptyData(); } private: LayoutObject* layout_object_; - scoped_refptr<ComputedStyle> non_attached_style_; + scoped_refptr<ComputedStyle> computed_style_; DISALLOW_COPY_AND_ASSIGN(NodeRenderingData); };
diff --git a/third_party/blink/renderer/core/dom/node_test.cc b/third_party/blink/renderer/core/dom/node_test.cc index 56563b0..06005a3f 100644 --- a/third_party/blink/renderer/core/dom/node_test.cc +++ b/third_party/blink/renderer/core/dom/node_test.cc
@@ -38,7 +38,7 @@ LayoutObject* ReattachLayoutTreeForNode(Node& node) { node.LazyReattachIfAttached(); GetDocument().Lifecycle().AdvanceTo(DocumentLifecycle::kInStyleRecalc); - GetDocument().GetStyleEngine().RecalcStyle(kNoChange); + GetDocument().GetStyleEngine().RecalcStyle({}); ReattachLegacyLayoutObjectList legacy_objects(GetDocument()); Node::AttachContext context; node.ReattachLayoutTree(context); @@ -340,9 +340,13 @@ comment->LazyReattachIfAttached(); EXPECT_FALSE(body->ChildNeedsStyleRecalc()); + EXPECT_FALSE(comment->GetForceReattachLayoutTree()); + EXPECT_FALSE(comment->NeedsStyleRecalc()); pi->LazyReattachIfAttached(); EXPECT_FALSE(body->ChildNeedsStyleRecalc()); + EXPECT_FALSE(pi->GetForceReattachLayoutTree()); + EXPECT_FALSE(pi->NeedsStyleRecalc()); } } // namespace blink
diff --git a/third_party/blink/renderer/core/dom/pseudo_element.cc b/third_party/blink/renderer/core/dom/pseudo_element.cc index 805af53..c4f9aec9 100644 --- a/third_party/blink/renderer/core/dom/pseudo_element.cc +++ b/third_party/blink/renderer/core/dom/pseudo_element.cc
@@ -26,8 +26,11 @@ #include "third_party/blink/renderer/core/dom/pseudo_element.h" +#include <utility> + #include "third_party/blink/renderer/core/dom/element_rare_data.h" #include "third_party/blink/renderer/core/dom/first_letter_pseudo_element.h" +#include "third_party/blink/renderer/core/dom/node_computed_style.h" #include "third_party/blink/renderer/core/frame/use_counter.h" #include "third_party/blink/renderer/core/layout/generated_children.h" #include "third_party/blink/renderer/core/layout/layout_object.h" @@ -104,29 +107,20 @@ } scoped_refptr<ComputedStyle> PseudoElement::CustomStyleForLayoutObject() { - scoped_refptr<ComputedStyle> original_style = - ParentOrShadowHostElement()->StyleForPseudoElement( - PseudoStyleRequest(pseudo_id_)); - if (!original_style || original_style->Display() != EDisplay::kContents) - return original_style; - - return StoreOriginalAndReturnLayoutStyle(std::move(original_style)); + return ParentOrShadowHostElement()->StyleForPseudoElement( + PseudoStyleRequest(pseudo_id_)); } -scoped_refptr<ComputedStyle> PseudoElement::StoreOriginalAndReturnLayoutStyle( - scoped_refptr<ComputedStyle> original_style) { +scoped_refptr<ComputedStyle> PseudoElement::LayoutStyleForDisplayContents( + const ComputedStyle& style) { // For display:contents we should not generate a box, but we generate a non- // observable inline box for pseudo elements to be able to locate the // anonymous layout objects for generated content during DetachLayoutTree(). scoped_refptr<ComputedStyle> layout_style = ComputedStyle::Create(); - layout_style->InheritFrom(*original_style); - layout_style->SetContent(original_style->GetContentData()); + layout_style->InheritFrom(style); + layout_style->SetContent(style.GetContentData()); layout_style->SetDisplay(EDisplay::kInline); layout_style->SetStyleType(pseudo_id_); - - // Store the actual ComputedStyle to be able to return the correct values from - // getComputedStyle(). - StoreNonLayoutObjectComputedStyle(std::move(original_style)); return layout_style; } @@ -145,11 +139,28 @@ RemovedFrom(*parent); } +PseudoElement::AttachLayoutTreeScope::AttachLayoutTreeScope( + PseudoElement* element) + : element_(element) { + if (ComputedStyle* style = element->MutableComputedStyle()) { + if (style->Display() == EDisplay::kContents) { + original_style_ = style; + element->SetComputedStyle(element->LayoutStyleForDisplayContents(*style)); + } + } +} + +PseudoElement::AttachLayoutTreeScope::~AttachLayoutTreeScope() { + if (original_style_) + element_->SetComputedStyle(std::move(original_style_)); +} + void PseudoElement::AttachLayoutTree(AttachContext& context) { DCHECK(!GetLayoutObject()); - - Element::AttachLayoutTree(context); - + { + AttachLayoutTreeScope scope(this); + Element::AttachLayoutTree(context); + } LayoutObject* layout_object = GetLayoutObject(); if (!layout_object) return; @@ -188,22 +199,6 @@ return ParentOrShadowHostNode(); } -const ComputedStyle* PseudoElement::VirtualEnsureComputedStyle( - PseudoId pseudo_element_specifier) { - if (HasRareData()) { - // Prefer NonLayoutObjectComputedStyle() for display:contents pseudos - // instead of the ComputedStyle for the fictional inline box (see - // CustomStyleForLayoutObject). - if (const ComputedStyle* non_layout_computed_style = - NonLayoutObjectComputedStyle()) { - DCHECK(!GetLayoutObject() || - non_layout_computed_style->Display() == EDisplay::kContents); - return non_layout_computed_style; - } - } - return EnsureComputedStyle(pseudo_element_specifier); -} - bool PseudoElementLayoutObjectIsNeeded(const ComputedStyle* style) { if (!style) return false;
diff --git a/third_party/blink/renderer/core/dom/pseudo_element.h b/third_party/blink/renderer/core/dom/pseudo_element.h index d3da1693..6bf86f5 100644 --- a/third_party/blink/renderer/core/dom/pseudo_element.h +++ b/third_party/blink/renderer/core/dom/pseudo_element.h
@@ -47,10 +47,8 @@ bool CanStartSelection() const override { return false; } bool CanContainRangeEndPoint() const override { return false; } PseudoId GetPseudoId() const override { return pseudo_id_; } - const ComputedStyle* VirtualEnsureComputedStyle( - PseudoId pseudo_element_specifier = kPseudoIdNone) final; - scoped_refptr<ComputedStyle> StoreOriginalAndReturnLayoutStyle( - scoped_refptr<ComputedStyle>); + scoped_refptr<ComputedStyle> LayoutStyleForDisplayContents( + const ComputedStyle&); static String PseudoElementNameForEvents(PseudoId); @@ -61,6 +59,18 @@ virtual void Dispose(); private: + class AttachLayoutTreeScope { + STACK_ALLOCATED(); + + public: + AttachLayoutTreeScope(PseudoElement*); + ~AttachLayoutTreeScope(); + + private: + Member<PseudoElement> element_; + scoped_refptr<ComputedStyle> original_style_; + }; + PseudoId pseudo_id_; };
diff --git a/third_party/blink/renderer/core/dom/shadow_root.cc b/third_party/blink/renderer/core/dom/shadow_root.cc index 39d2eed15..4b7d59d 100644 --- a/third_party/blink/renderer/core/dom/shadow_root.cc +++ b/third_party/blink/renderer/core/dom/shadow_root.cc
@@ -138,22 +138,19 @@ } } -void ShadowRoot::RecalcStyle(StyleRecalcChange change) { +void ShadowRoot::RecalcStyle(const StyleRecalcChange change) { // ShadowRoot doesn't support custom callbacks. DCHECK(!HasCustomStyleCallbacks()); - if (GetStyleChangeType() >= kSubtreeStyleChange) { - if (change < kForce) - change = kForce; - if (NeedsAttach() || change == kReattach) - SetNeedsReattachLayoutTree(); - } - // There's no style to update so just calling RecalcStyle means we're updated. - if (change != kReattach) - ClearNeedsStyleRecalc(); + StyleRecalcChange child_change = change; + if (GetStyleChangeType() == kSubtreeStyleChange) + child_change = child_change.ForceRecalcDescendants(); - if (change >= kUpdatePseudoElements || ChildNeedsStyleRecalc()) - RecalcDescendantStyles(change); + // There's no style to update so just calling RecalcStyle means we're updated. + ClearNeedsStyleRecalc(); + + if (child_change.TraverseChildren(*this)) + RecalcDescendantStyles(child_change); ClearChildNeedsStyleRecalc(); }
diff --git a/third_party/blink/renderer/core/dom/shadow_root.h b/third_party/blink/renderer/core/dom/shadow_root.h index 632cc0e..71323d7 100644 --- a/third_party/blink/renderer/core/dom/shadow_root.h +++ b/third_party/blink/renderer/core/dom/shadow_root.h
@@ -118,7 +118,7 @@ // For Internals, don't use this. unsigned ChildShadowRootCount() const { return child_shadow_root_count_; } - void RecalcStyle(StyleRecalcChange); + void RecalcStyle(const StyleRecalcChange); void RebuildLayoutTree(WhitespaceAttacher&); void RegisterScopedHTMLStyleChild();
diff --git a/third_party/blink/renderer/core/dom/text.cc b/third_party/blink/renderer/core/dom/text.cc index 7ee5d04f..d0bec0f 100644 --- a/third_party/blink/renderer/core/dom/text.cc +++ b/third_party/blink/renderer/core/dom/text.cc
@@ -22,6 +22,8 @@ #include "third_party/blink/renderer/core/dom/text.h" +#include <utility> + #include "third_party/blink/renderer/core/css/resolver/style_resolver.h" #include "third_party/blink/renderer/core/dom/events/scoped_event_queue.h" #include "third_party/blink/renderer/core/dom/first_letter_pseudo_element.h" @@ -370,44 +372,49 @@ if (layout_object_is_needed == !!GetLayoutObject()) return; - // The following is almost the same as Node::reattachLayoutTree() except that - // we create a layoutObject only if needed. Not calling reattachLayoutTree() - // to avoid repeated calls to Text::textLayoutObjectIsNeeded(). AttachContext reattach_context; reattach_context.performing_reattach = true; - if (GetStyleChangeType() < kNeedsReattachStyleChange) - DetachLayoutTree(reattach_context); if (layout_object_is_needed) { + DCHECK(!GetLayoutObject()); LayoutTreeBuilderForText(*this, parent_layout_object, style_parent->MutableComputedStyle()) .CreateLayoutObject(); + } else { + DetachLayoutTree(reattach_context); } CharacterData::AttachLayoutTree(reattach_context); } -void Text::RecalcTextStyle(StyleRecalcChange change) { +namespace { + +bool NeedsWhitespaceLayoutObject(const ComputedStyle& style) { + return style.PreserveNewline(); +} + +} // namespace + +void Text::RecalcTextStyle(const StyleRecalcChange change) { + scoped_refptr<ComputedStyle> new_style = + GetDocument().EnsureStyleResolver().StyleForText(this); if (LayoutText* layout_text = GetLayoutObject()) { - if (change != kNoChange || NeedsStyleRecalc()) { - scoped_refptr<ComputedStyle> new_style = - GetDocument().EnsureStyleResolver().StyleForText(this); - const ComputedStyle* layout_parent_style = - GetLayoutObject()->Parent()->Style(); - if (!new_style || (new_style != layout_parent_style && - !new_style->InheritedEqual(*layout_parent_style))) { - // The computed style or the need for an anonymous inline wrapper for a - // display:contents text child changed. - SetNeedsReattachLayoutTree(); - return; - } - layout_text->SetStyle(std::move(new_style)); + const ComputedStyle* layout_parent_style = + GetLayoutObject()->Parent()->Style(); + if (!new_style || (new_style != layout_parent_style && + !new_style->InheritedEqual(*layout_parent_style))) { + // The computed style or the need for an anonymous inline wrapper for a + // display:contents text child changed. + SetNeedsReattachLayoutTree(); + return; } + layout_text->SetStyle(std::move(new_style)); if (NeedsStyleRecalc()) layout_text->SetText(DataImpl()); - ClearNeedsStyleRecalc(); - } else if (NeedsStyleRecalc() || NeedsWhitespaceLayoutObject()) { + } else if (new_style && (NeedsStyleRecalc() || change.ReattachLayoutTree() || + NeedsWhitespaceLayoutObject(*new_style))) { SetNeedsReattachLayoutTree(); } + ClearNeedsStyleRecalc(); } void Text::RebuildTextLayoutTree(WhitespaceAttacher& whitespace_attacher) { @@ -420,15 +427,6 @@ ClearNeedsReattachLayoutTree(); } -// If a whitespace node had no layoutObject and goes through a recalcStyle it -// may need to create one if the parent style now has white-space: pre. -bool Text::NeedsWhitespaceLayoutObject() { - DCHECK(!GetLayoutObject()); - if (const ComputedStyle* style = ParentComputedStyle()) - return style->PreserveNewline(); - return false; -} - // Passing both |textNode| and its layout object because repeated calls to // |Node::layoutObject()| are discouraged. static bool ShouldUpdateLayoutByReattaching(const Text& text_node,
diff --git a/third_party/blink/renderer/core/dom/text.h b/third_party/blink/renderer/core/dom/text.h index 5a5b7ba..261ec21 100644 --- a/third_party/blink/renderer/core/dom/text.h +++ b/third_party/blink/renderer/core/dom/text.h
@@ -25,6 +25,7 @@ #define THIRD_PARTY_BLINK_RENDERER_CORE_DOM_TEXT_H_ #include "third_party/blink/renderer/core/core_export.h" +#include "third_party/blink/renderer/core/css/style_recalc.h" #include "third_party/blink/renderer/core/dom/character_data.h" namespace blink { @@ -57,7 +58,7 @@ String wholeText() const; Text* ReplaceWholeText(const String&); - void RecalcTextStyle(StyleRecalcChange); + void RecalcTextStyle(const StyleRecalcChange); void RebuildTextLayoutTree(WhitespaceAttacher&); bool TextLayoutObjectIsNeeded(const AttachContext&, const ComputedStyle&, @@ -81,8 +82,6 @@ bool IsTextNode() const = delete; // This will catch anyone doing an unnecessary check. - bool NeedsWhitespaceLayoutObject(); - virtual Text* CloneWithData(Document&, const String&) const; };
diff --git a/third_party/blink/renderer/core/dom/v0_insertion_point.cc b/third_party/blink/renderer/core/dom/v0_insertion_point.cc index d0779c2..8b3ad5c2 100644 --- a/third_party/blink/renderer/core/dom/v0_insertion_point.cc +++ b/third_party/blink/renderer/core/dom/v0_insertion_point.cc
@@ -36,6 +36,7 @@ #include "third_party/blink/renderer/core/dom/shadow_root.h" #include "third_party/blink/renderer/core/dom/shadow_root_v0.h" #include "third_party/blink/renderer/core/dom/static_node_list.h" +#include "third_party/blink/renderer/core/dom/text.h" #include "third_party/blink/renderer/core/dom/whitespace_attacher.h" #include "third_party/blink/renderer/core/html_names.h" @@ -105,17 +106,19 @@ // We need to attach the distribution here so that they're inserted in the // right order otherwise the n^2 protection inside LayoutTreeBuilder will // cause them to be inserted in the wrong place later. This also lets - // distributed nodes benefit from the n^2 protection. - AttachContext children_context(context); - - for (wtf_size_t i = 0; i < distributed_nodes_.size(); ++i) { - Node* child = distributed_nodes_.at(i); - if (child->NeedsAttach()) - child->AttachLayoutTree(children_context); + // distributed nodes benefit from the n^2 protection. If the distributed + // children are the direct fallback children they are attached in + // ContainerNodes::AttachLayoutTree() via the base class call below. + if (!DistributedNodesAreFallback()) { + AttachContext children_context(context); + for (wtf_size_t i = 0; i < distributed_nodes_.size(); ++i) { + Node* child = distributed_nodes_.at(i); + if (child->NeedsReattachLayoutTree()) + child->AttachLayoutTree(children_context); + } + if (children_context.previous_in_flow) + context.previous_in_flow = children_context.previous_in_flow; } - if (children_context.previous_in_flow) - context.previous_in_flow = children_context.previous_in_flow; - HTMLElement::AttachLayoutTree(context); } @@ -136,28 +139,21 @@ } } -void V0InsertionPoint::DidRecalcStyle(StyleRecalcChange change) { - if (!HasDistribution() || DistributedNodeAt(0)->parentNode() == this) { - // We either do not have distributed children or the distributed children - // are the fallback children. Fallback children have already been - // recalculated in ContainerNode::RecalcDescendantStyles(). +void V0InsertionPoint::DidRecalcStyle(const StyleRecalcChange change) { + if (DistributedNodesAreFallback()) { + // Fallback children have already been recalculated in + // ContainerNode::RecalcDescendantStyles(). return; } - StyleChangeType style_change_type = - change == kForce ? kSubtreeStyleChange : kLocalStyleChange; - for (wtf_size_t i = 0; i < distributed_nodes_.size(); ++i) { Node* node = distributed_nodes_.at(i); - if (change == kReattach && node->IsElementNode()) { - if (node->ShouldCallRecalcStyle(kReattach)) - ToElement(node)->RecalcStyle(kReattach); + if (!change.TraverseChild(*node)) continue; - } - node->SetNeedsStyleRecalc( - style_change_type, - StyleChangeReasonForTracing::Create( - style_change_reason::kPropagateInheritChangeToDistributedNodes)); + if (node->IsElementNode()) + ToElement(node)->RecalcStyle(change); + else if (node->IsTextNode()) + ToText(node)->RecalcTextStyle(change); } }
diff --git a/third_party/blink/renderer/core/dom/v0_insertion_point.h b/third_party/blink/renderer/core/dom/v0_insertion_point.h index ad84b8ec..d83433c 100644 --- a/third_party/blink/renderer/core/dom/v0_insertion_point.h +++ b/third_party/blink/renderer/core/dom/v0_insertion_point.h
@@ -74,6 +74,11 @@ Node* DistributedNodePreviousTo(const Node* node) const { return distributed_nodes_.PreviousTo(node); } + bool DistributedNodesAreFallback() const { + // We either do not have distributed children or the distributed children + // are the fallback children. + return !HasDistribution() || DistributedNodeAt(0)->parentNode() == this; + } void Trace(Visitor*) override; @@ -83,7 +88,7 @@ void ChildrenChanged(const ChildrenChange&) override; InsertionNotificationRequest InsertedInto(ContainerNode&) override; void RemovedFrom(ContainerNode&) override; - void DidRecalcStyle(StyleRecalcChange) override; + void DidRecalcStyle(const StyleRecalcChange) override; private: bool IsV0InsertionPoint() const =
diff --git a/third_party/blink/renderer/core/editing/commands/replace_selection_command_test.cc b/third_party/blink/renderer/core/editing/commands/replace_selection_command_test.cc index 197eb35..70539392 100644 --- a/third_party/blink/renderer/core/editing/commands/replace_selection_command_test.cc +++ b/third_party/blink/renderer/core/editing/commands/replace_selection_command_test.cc
@@ -122,7 +122,8 @@ ComputedStyle::Clone(layout_object->StyleRef()); modified_style->SetTextAutosizingMultiplier(multiplier); EXPECT_EQ(multiplier, modified_style->TextAutosizingMultiplier()); - layout_object->SetStyleInternal(std::move(modified_style)); + layout_object->SetModifiedStyleOutsideStyleRecalc( + std::move(modified_style), LayoutObject::ApplyStyleChanges::kNo); multiplier_set = true; } }
diff --git a/third_party/blink/renderer/core/editing/iterators/text_iterator_text_node_handler.cc b/third_party/blink/renderer/core/editing/iterators/text_iterator_text_node_handler.cc index 77cea06d..a1c06bc8 100644 --- a/third_party/blink/renderer/core/editing/iterators/text_iterator_text_node_handler.cc +++ b/third_party/blink/renderer/core/editing/iterators/text_iterator_text_node_handler.cc
@@ -6,6 +6,7 @@ #include <algorithm> #include "third_party/blink/renderer/core/dom/first_letter_pseudo_element.h" +#include "third_party/blink/renderer/core/dom/node_computed_style.h" #include "third_party/blink/renderer/core/editing/ephemeral_range.h" #include "third_party/blink/renderer/core/editing/iterators/text_iterator_text_state.h" #include "third_party/blink/renderer/core/layout/layout_text_fragment.h"
diff --git a/third_party/blink/renderer/core/exported/web_frame_test.cc b/third_party/blink/renderer/core/exported/web_frame_test.cc index 86da39d..f8f832ac 100644 --- a/third_party/blink/renderer/core/exported/web_frame_test.cc +++ b/third_party/blink/renderer/core/exported/web_frame_test.cc
@@ -1259,7 +1259,8 @@ ComputedStyle::Clone(layout_object->StyleRef()); modified_style->SetTextAutosizingMultiplier(multiplier); EXPECT_EQ(multiplier, modified_style->TextAutosizingMultiplier()); - layout_object->SetStyleInternal(std::move(modified_style)); + layout_object->SetModifiedStyleOutsideStyleRecalc( + std::move(modified_style), LayoutObject::ApplyStyleChanges::kNo); multiplier_set = true; } }
diff --git a/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc b/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc index 6c13eed..ba64ed8 100644 --- a/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc +++ b/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc
@@ -161,6 +161,16 @@ client_->CountFeature(feature); } +void WebSharedWorkerImpl::DidFetchScript() { + DCHECK(IsMainThread()); + client_->WorkerScriptLoaded(); +} + +void WebSharedWorkerImpl::DidEvaluateClassicScript(bool success) { + DCHECK(IsMainThread()); + client_->WorkerScriptEvaluated(success); +} + void WebSharedWorkerImpl::DidCloseWorkerGlobalScope() { DCHECK(IsMainThread()); client_->WorkerContextClosed(); @@ -252,6 +262,10 @@ // |this| is deleted at this point. return; } + DidFetchScript(); + probe::scriptImported(shadow_page_->GetDocument(), + main_script_loader_->Identifier(), + main_script_loader_->SourceText()); // S13nServiceWorker: The browser process is expected to send a // SetController IPC before sending the script response, but there is no @@ -337,8 +351,6 @@ StartWorkerThread(std::move(global_scope_creation_params), script_response_url, main_script_loader_->SourceText()); - probe::scriptImported(document, main_script_loader_->Identifier(), - main_script_loader_->SourceText()); main_script_loader_ = nullptr; }
diff --git a/third_party/blink/renderer/core/exported/web_shared_worker_impl.h b/third_party/blink/renderer/core/exported/web_shared_worker_impl.h index eb757ea5..15400e25 100644 --- a/third_party/blink/renderer/core/exported/web_shared_worker_impl.h +++ b/third_party/blink/renderer/core/exported/web_shared_worker_impl.h
@@ -109,6 +109,8 @@ // Callback methods for SharedWorkerReportingProxy. void CountFeature(WebFeature); + void DidFetchScript(); + void DidEvaluateClassicScript(bool success); void DidCloseWorkerGlobalScope(); void DidTerminateWorkerThread();
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc index 2455c372..4263bf1 100644 --- a/third_party/blink/renderer/core/exported/web_view_impl.cc +++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -2550,7 +2550,7 @@ DeviceScaleFactor() <= 1) { if (description.max_width == Length(kDeviceWidth) || - (description.max_width.GetType() == kAuto && + (description.max_width.IsAuto() && GetPageScaleConstraintsSet().PageDefinedConstraints().initial_scale == 1.0f)) SetInitialPageScaleOverride(-1);
diff --git a/third_party/blink/renderer/core/html/forms/html_form_control_element.cc b/third_party/blink/renderer/core/html/forms/html_form_control_element.cc index 25e03d1..79f7962 100644 --- a/third_party/blink/renderer/core/html/forms/html_form_control_element.cc +++ b/third_party/blink/renderer/core/html/forms/html_form_control_element.cc
@@ -305,7 +305,7 @@ return FastGetAttribute(kValueAttr); } -void HTMLFormControlElement::DidRecalcStyle(StyleRecalcChange) { +void HTMLFormControlElement::DidRecalcStyle(const StyleRecalcChange) { if (LayoutObject* layout_object = GetLayoutObject()) layout_object->UpdateFromElement(); }
diff --git a/third_party/blink/renderer/core/html/forms/html_form_control_element.h b/third_party/blink/renderer/core/html/forms/html_form_control_element.h index 1bccce5..ebdd2a9 100644 --- a/third_party/blink/renderer/core/html/forms/html_form_control_element.h +++ b/third_party/blink/renderer/core/html/forms/html_form_control_element.h
@@ -150,7 +150,7 @@ WebFocusType, InputDeviceCapabilities* source_capabilities) override; - void DidRecalcStyle(StyleRecalcChange) override; + void DidRecalcStyle(const StyleRecalcChange) override; virtual void ResetImpl() {} virtual bool SupportsAutofocus() const;
diff --git a/third_party/blink/renderer/core/html/forms/html_input_element.cc b/third_party/blink/renderer/core/html/forms/html_input_element.cc index b3b539f..2a29a0e 100644 --- a/third_party/blink/renderer/core/html/forms/html_input_element.cc +++ b/third_party/blink/renderer/core/html/forms/html_input_element.cc
@@ -39,6 +39,7 @@ #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/dom/events/scoped_event_queue.h" #include "third_party/blink/renderer/core/dom/id_target_observer.h" +#include "third_party/blink/renderer/core/dom/node_computed_style.h" #include "third_party/blink/renderer/core/dom/shadow_root.h" #include "third_party/blink/renderer/core/dom/v0_insertion_point.h" #include "third_party/blink/renderer/core/editing/frame_selection.h" @@ -1924,12 +1925,9 @@ OriginalStyleForLayoutObject()); } -void HTMLInputElement::DidRecalcStyle(StyleRecalcChange change) { +void HTMLInputElement::DidRecalcStyle(const StyleRecalcChange change) { TextControlElement::DidRecalcStyle(change); - if (change != kReattach) - return; - ComputedStyle* style = GetNonAttachedStyle(); - if (style && style->Display() != EDisplay::kNone) + if (NeedsReattachLayoutTree() && GetComputedStyle()) input_type_view_->StartResourceLoading(); }
diff --git a/third_party/blink/renderer/core/html/forms/html_input_element.h b/third_party/blink/renderer/core/html/forms/html_input_element.h index 429f69b0..9783ff8 100644 --- a/third_party/blink/renderer/core/html/forms/html_input_element.h +++ b/third_party/blink/renderer/core/html/forms/html_input_element.h
@@ -403,7 +403,7 @@ void AddToRadioButtonGroup(); void RemoveFromRadioButtonGroup(); scoped_refptr<ComputedStyle> CustomStyleForLayoutObject() override; - void DidRecalcStyle(StyleRecalcChange) override; + void DidRecalcStyle(const StyleRecalcChange) override; AtomicString name_; // The value string in |value| value mode.
diff --git a/third_party/blink/renderer/core/html/forms/html_select_element.cc b/third_party/blink/renderer/core/html/forms/html_select_element.cc index 3ead4ab..43680a4 100644 --- a/third_party/blink/renderer/core/html/forms/html_select_element.cc +++ b/third_party/blink/renderer/core/html/forms/html_select_element.cc
@@ -1996,7 +1996,7 @@ popup_->Hide(); } -void HTMLSelectElement::DidRecalcStyle(StyleRecalcChange change) { +void HTMLSelectElement::DidRecalcStyle(const StyleRecalcChange change) { HTMLFormControlElementWithState::DidRecalcStyle(change); if (PopupIsVisible()) popup_->UpdateFromElement(PopupMenu::kByStyleChange);
diff --git a/third_party/blink/renderer/core/html/forms/html_select_element.h b/third_party/blink/renderer/core/html/forms/html_select_element.h index c500b26..90573d0 100644 --- a/third_party/blink/renderer/core/html/forms/html_select_element.h +++ b/third_party/blink/renderer/core/html/forms/html_select_element.h
@@ -205,7 +205,7 @@ bool IsPresentationAttribute(const QualifiedName&) const override; LayoutObject* CreateLayoutObject(const ComputedStyle&) override; - void DidRecalcStyle(StyleRecalcChange) override; + void DidRecalcStyle(const StyleRecalcChange) override; void DetachLayoutTree(const AttachContext& = AttachContext()) override; void AppendToFormData(FormData&) override; void DidAddUserAgentShadowRoot(ShadowRoot&) override;
diff --git a/third_party/blink/renderer/core/html/html_content_element_test.cc b/third_party/blink/renderer/core/html/html_content_element_test.cc index dca37d4..a42f16d 100644 --- a/third_party/blink/renderer/core/html/html_content_element_test.cc +++ b/third_party/blink/renderer/core/html/html_content_element_test.cc
@@ -7,6 +7,7 @@ #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/renderer/core/css/style_engine.h" #include "third_party/blink/renderer/core/dom/document.h" +#include "third_party/blink/renderer/core/dom/node_computed_style.h" #include "third_party/blink/renderer/core/dom/shadow_root.h" #include "third_party/blink/renderer/core/testing/dummy_page_holder.h" @@ -40,9 +41,9 @@ GetDocument().UpdateDistributionForLegacyDistributedNodes(); GetDocument().Lifecycle().AdvanceTo(DocumentLifecycle::kInStyleRecalc); - GetDocument().GetStyleEngine().RecalcStyle(kNoChange); + GetDocument().GetStyleEngine().RecalcStyle({}); - EXPECT_TRUE(fallback->GetNonAttachedStyle()); + EXPECT_TRUE(fallback->GetComputedStyle()); } } // namespace blink
diff --git a/third_party/blink/renderer/core/html/html_embed_element.cc b/third_party/blink/renderer/core/html/html_embed_element.cc index bc92cca..ced7efac 100644 --- a/third_party/blink/renderer/core/html/html_embed_element.cc +++ b/third_party/blink/renderer/core/html/html_embed_element.cc
@@ -27,6 +27,7 @@ #include "third_party/blink/renderer/core/css/css_property_names.h" #include "third_party/blink/renderer/core/dom/attribute.h" #include "third_party/blink/renderer/core/dom/element_traversal.h" +#include "third_party/blink/renderer/core/dom/node_computed_style.h" #include "third_party/blink/renderer/core/dom/shadow_root.h" #include "third_party/blink/renderer/core/frame/local_frame_client.h" #include "third_party/blink/renderer/core/html/html_image_loader.h"
diff --git a/third_party/blink/renderer/core/html/html_frame_set_element.cc b/third_party/blink/renderer/core/html/html_frame_set_element.cc index 31597f36..d37c419 100644 --- a/third_party/blink/renderer/core/html/html_frame_set_element.cc +++ b/third_party/blink/renderer/core/html/html_frame_set_element.cc
@@ -268,8 +268,7 @@ } return HTMLElement::InsertedInto(insertion_point); } - -void HTMLFrameSetElement::WillRecalcStyle(StyleRecalcChange) { +void HTMLFrameSetElement::WillRecalcStyle(const StyleRecalcChange) { if (NeedsStyleRecalc() && GetLayoutObject()) { GetLayoutObject()->SetNeedsLayoutAndFullPaintInvalidation( layout_invalidation_reason::kStyleChange);
diff --git a/third_party/blink/renderer/core/html/html_frame_set_element.h b/third_party/blink/renderer/core/html/html_frame_set_element.h index 15abb68..cea9891 100644 --- a/third_party/blink/renderer/core/html/html_frame_set_element.h +++ b/third_party/blink/renderer/core/html/html_frame_set_element.h
@@ -80,7 +80,7 @@ void DefaultEventHandler(Event&) override; InsertionNotificationRequest InsertedInto(ContainerNode&) override; - void WillRecalcStyle(StyleRecalcChange) override; + void WillRecalcStyle(const StyleRecalcChange) override; Vector<HTMLDimension> row_lengths_; Vector<HTMLDimension> col_lengths_;
diff --git a/third_party/blink/renderer/core/html/html_object_element_test.cc b/third_party/blink/renderer/core/html/html_object_element_test.cc index 976fd39f..1e73282 100644 --- a/third_party/blink/renderer/core/html/html_object_element_test.cc +++ b/third_party/blink/renderer/core/html/html_object_element_test.cc
@@ -7,6 +7,7 @@ #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/renderer/core/css/style_engine.h" #include "third_party/blink/renderer/core/dom/document.h" +#include "third_party/blink/renderer/core/dom/node_computed_style.h" #include "third_party/blink/renderer/core/dom/shadow_root.h" #include "third_party/blink/renderer/core/testing/dummy_page_holder.h" @@ -40,12 +41,13 @@ object->RenderFallbackContent(nullptr); GetDocument().Lifecycle().AdvanceTo(DocumentLifecycle::kInStyleRecalc); - GetDocument().GetStyleEngine().RecalcStyle(kForce); - + StyleRecalcChange change; + change = change.ForceRecalcDescendants(); + GetDocument().GetStyleEngine().RecalcStyle(change); EXPECT_TRUE(IsHTMLSlotElement(slot)); EXPECT_TRUE(object->UseFallbackContent()); - EXPECT_TRUE(object->GetNonAttachedStyle()); - EXPECT_TRUE(slot->GetNonAttachedStyle()); + EXPECT_TRUE(object->GetComputedStyle()); + EXPECT_TRUE(slot->GetComputedStyle()); } } // namespace blink
diff --git a/third_party/blink/renderer/core/html/html_plugin_element.cc b/third_party/blink/renderer/core/html/html_plugin_element.cc index b2dad9d..788ae56 100644 --- a/third_party/blink/renderer/core/html/html_plugin_element.cc +++ b/third_party/blink/renderer/core/html/html_plugin_element.cc
@@ -189,6 +189,18 @@ ObjectContentType object_type = GetObjectContentType(); if (object_type == ObjectContentType::kFrame || object_type == ObjectContentType::kImage || handled_externally_) { + if (ContentFrame() && ContentFrame()->IsRemoteFrame()) { + // During lazy reattaching, the plugin element loses EmbeddedContentView. + // Since the ContentFrame() is not torn down the options here are to + // either re-create a new RemoteFrameView or reuse the old one. The former + // approach requires CommitNavigation for OOPF to be sent back here in + // the parent process. It is easier to just reuse the current FrameView + // instead until plugin element issue are properly resolved (for context + // see https://crbug.com/781880). + DCHECK(!OwnedEmbeddedContentView()); + SetEmbeddedContentView(ContentFrame()->View()); + DCHECK(OwnedEmbeddedContentView()); + } // If the plugin element already contains a subframe, // loadOrRedirectSubframe will re-use it. Otherwise, it will create a // new frame and set it as the LayoutEmbeddedContent's EmbeddedContentView,
diff --git a/third_party/blink/renderer/core/html/html_slot_element.cc b/third_party/blink/renderer/core/html/html_slot_element.cc index 17abe79b..90b15e6 100644 --- a/third_party/blink/renderer/core/html/html_slot_element.cc +++ b/third_party/blink/renderer/core/html/html_slot_element.cc
@@ -40,6 +40,7 @@ #include "third_party/blink/renderer/core/dom/node_traversal.h" #include "third_party/blink/renderer/core/dom/shadow_root.h" #include "third_party/blink/renderer/core/dom/slot_assignment.h" +#include "third_party/blink/renderer/core/dom/text.h" #include "third_party/blink/renderer/core/dom/whitespace_attacher.h" #include "third_party/blink/renderer/core/frame/use_counter.h" #include "third_party/blink/renderer/core/html/assigned_nodes_options.h" @@ -280,7 +281,7 @@ AttachContext children_context(context); for (auto& node : AssignedNodes()) { - if (node->NeedsAttach()) + if (node->NeedsReattachLayoutTree()) node->AttachLayoutTree(children_context); } if (children_context.previous_in_flow) @@ -402,23 +403,16 @@ HTMLElement::RemovedFrom(insertion_point); } -void HTMLSlotElement::DidRecalcStyle(StyleRecalcChange change) { - if (change < kIndependentInherit) +void HTMLSlotElement::DidRecalcStyle(const StyleRecalcChange change) { + if (!change.RecalcChildren()) return; for (auto& node : assigned_nodes_) { - if (change == kReattach && node->IsElementNode()) { - DCHECK(node->ShouldCallRecalcStyle(kReattach)); - ToElement(node)->RecalcStyle(kReattach); + if (!change.TraverseChild(*node)) continue; - } - // We only need to pick up changes for inherited style, we do not actually - // need to match rules against this element but we do that for - // simplicity. If we ever stop doing this then we need to update - // StyleInvalidator::Invalidate as described in the comment there. - node->SetNeedsStyleRecalc( - kLocalStyleChange, - StyleChangeReasonForTracing::Create( - style_change_reason::kPropagateInheritChangeToDistributedNodes)); + if (node->IsElementNode()) + ToElement(node)->RecalcStyle(change); + else if (node->IsTextNode()) + ToText(node)->RecalcTextStyle(change); } }
diff --git a/third_party/blink/renderer/core/html/html_slot_element.h b/third_party/blink/renderer/core/html/html_slot_element.h index bec406a..674dc52 100644 --- a/third_party/blink/renderer/core/html/html_slot_element.h +++ b/third_party/blink/renderer/core/html/html_slot_element.h
@@ -122,7 +122,7 @@ private: InsertionNotificationRequest InsertedInto(ContainerNode&) final; void RemovedFrom(ContainerNode&) final; - void DidRecalcStyle(StyleRecalcChange) final; + void DidRecalcStyle(const StyleRecalcChange) final; void EnqueueSlotChangeEvent();
diff --git a/third_party/blink/renderer/core/html/html_slot_element_test.cc b/third_party/blink/renderer/core/html/html_slot_element_test.cc index f94036d9..ea28042 100644 --- a/third_party/blink/renderer/core/html/html_slot_element_test.cc +++ b/third_party/blink/renderer/core/html/html_slot_element_test.cc
@@ -8,6 +8,7 @@ #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/renderer/core/css/style_engine.h" +#include "third_party/blink/renderer/core/dom/node_computed_style.h" #include "third_party/blink/renderer/core/dom/shadow_root.h" #include "third_party/blink/renderer/core/testing/dummy_page_holder.h" @@ -163,10 +164,10 @@ shadow_span.setAttribute(html_names::kStyleAttr, "display:block"); GetDocument().Lifecycle().AdvanceTo(DocumentLifecycle::kInStyleRecalc); - GetDocument().GetStyleEngine().RecalcStyle(kNoChange); + GetDocument().GetStyleEngine().RecalcStyle({}); - EXPECT_TRUE(shadow_span.GetNonAttachedStyle()); - EXPECT_TRUE(span.GetNonAttachedStyle()); + EXPECT_TRUE(shadow_span.GetComputedStyle()); + EXPECT_TRUE(span.GetComputedStyle()); } } // namespace blink
diff --git a/third_party/blink/renderer/core/html/list_item_ordinal.cc b/third_party/blink/renderer/core/html/list_item_ordinal.cc index f5ee6c8..ac2b55e 100644 --- a/third_party/blink/renderer/core/html/list_item_ordinal.cc +++ b/third_party/blink/renderer/core/html/list_item_ordinal.cc
@@ -305,7 +305,7 @@ // Avoid an O(n^2) walk over the children below when they're all known to be // attaching. - if (list_node->NeedsAttach()) + if (list_node->NeedsReattachLayoutTree()) return; InvalidateOrdinalsAfter(is_list_reversed, list_node, item_node);
diff --git a/third_party/blink/renderer/core/html/media/html_media_element.cc b/third_party/blink/renderer/core/html/media/html_media_element.cc index f0a958a..fe485736 100644 --- a/third_party/blink/renderer/core/html/media/html_media_element.cc +++ b/third_party/blink/renderer/core/html/media/html_media_element.cc
@@ -737,7 +737,7 @@ GetLayoutObject()->UpdateFromElement(); } -void HTMLMediaElement::DidRecalcStyle(StyleRecalcChange) { +void HTMLMediaElement::DidRecalcStyle(const StyleRecalcChange) { if (GetLayoutObject()) GetLayoutObject()->UpdateFromElement(); }
diff --git a/third_party/blink/renderer/core/html/media/html_media_element.h b/third_party/blink/renderer/core/html/media/html_media_element.h index e53f1ab..e0ee8d2 100644 --- a/third_party/blink/renderer/core/html/media/html_media_element.h +++ b/third_party/blink/renderer/core/html/media/html_media_element.h
@@ -380,7 +380,7 @@ bool LayoutObjectIsNeeded(const ComputedStyle&) const override; LayoutObject* CreateLayoutObject(const ComputedStyle&) override; void DidNotifySubtreeInsertionsToDocument() override; - void DidRecalcStyle(StyleRecalcChange) final; + void DidRecalcStyle(const StyleRecalcChange) final; bool CanStartSelection() const override { return false; }
diff --git a/third_party/blink/renderer/core/html/shadow/progress_shadow_element_test.cc b/third_party/blink/renderer/core/html/shadow/progress_shadow_element_test.cc index 3536077..1dd6ea5 100644 --- a/third_party/blink/renderer/core/html/shadow/progress_shadow_element_test.cc +++ b/third_party/blink/renderer/core/html/shadow/progress_shadow_element_test.cc
@@ -42,8 +42,10 @@ progress->LazyReattachIfAttached(); GetDocument().Lifecycle().AdvanceTo(DocumentLifecycle::kInStyleRecalc); - GetDocument().GetStyleEngine().RecalcStyle(kForce); - EXPECT_TRUE(shadow_element->GetNonAttachedStyle()); + StyleRecalcChange change; + change = change.ForceRecalcDescendants(); + GetDocument().GetStyleEngine().RecalcStyle(change); + EXPECT_TRUE(shadow_element->GetComputedStyle()); scoped_refptr<ComputedStyle> style = shadow_element->StyleForLayoutObject(); EXPECT_TRUE(shadow_element->LayoutObjectIsNeeded(*style));
diff --git a/third_party/blink/renderer/core/input/overscroll_behavior_test.cc b/third_party/blink/renderer/core/input/overscroll_behavior_test.cc index c642b37..be76a28 100644 --- a/third_party/blink/renderer/core/input/overscroll_behavior_test.cc +++ b/third_party/blink/renderer/core/input/overscroll_behavior_test.cc
@@ -65,7 +65,8 @@ ComputedStyle::Clone(*inner->GetComputedStyle()); modified_style->SetOverscrollBehaviorX(x); modified_style->SetOverscrollBehaviorY(y); - inner->GetLayoutObject()->SetStyle(std::move(modified_style)); + inner->GetLayoutObject()->SetModifiedStyleOutsideStyleRecalc( + std::move(modified_style), LayoutObject::ApplyStyleChanges::kNo); } void OverscrollBehaviorTest::ScrollBegin(double hint_x, double hint_y) {
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_observer.cc b/third_party/blink/renderer/core/intersection_observer/intersection_observer.cc index 8c56c62..328652df 100644 --- a/third_party/blink/renderer/core/intersection_observer/intersection_observer.cc +++ b/third_party/blink/renderer/core/intersection_observer/intersection_observer.cc
@@ -339,7 +339,7 @@ static void AppendLength(StringBuilder& string_builder, const Length& length) { string_builder.AppendNumber(length.IntValue()); - if (length.GetType() == kPercent) + if (length.IsPercent()) string_builder.Append('%'); else string_builder.Append("px", 2);
diff --git a/third_party/blink/renderer/core/layout/grid.cc b/third_party/blink/renderer/core/layout/grid.cc index 324ba58..90aad1c7 100644 --- a/third_party/blink/renderer/core/layout/grid.cc +++ b/third_party/blink/renderer/core/layout/grid.cc
@@ -156,31 +156,28 @@ DoublyLinkedList<ListGrid::GridCell>::AddResult ListGrid::GridTrack::Insert( GridCell* cell) { cell->SetTraversalMode(direction_); - auto compare_cells = - [](GridTrackSizingDirection direction, ListGrid::GridCell* first, - ListGrid::GridCell* second) { + + return cells_.Insert( + cell, [this](ListGrid::GridCell* first, ListGrid::GridCell* second) { // This is ugly but we need to do this in order the // DoublyLinkedList::Insert() algorithm to work at that code // only uses next_ and prev_. - first->SetTraversalMode(direction); - second->SetTraversalMode(direction); - auto ortho_direction = OrthogonalDirection(direction); + first->SetTraversalMode(direction_); + second->SetTraversalMode(direction_); + auto ortho_direction = OrthogonalDirection(direction_); return ComparePositions(first->Index(ortho_direction), second->Index(ortho_direction)); - }; - - return cells_.Insert(cell, WTF::BindRepeating(compare_cells, direction_)); + }); } DoublyLinkedList<ListGrid::GridCell>::AddResult ListGrid::GridTrack::Insert( LayoutBox& item, const GridSpan& span) { - auto compare_cells = [](GridTrackSizingDirection direction, - ListGrid::GridCell* first, - ListGrid::GridCell* second) { - first->SetTraversalMode(direction); - second->SetTraversalMode(direction); - auto ortho_direction = OrthogonalDirection(direction); + auto compare_cells = [this](ListGrid::GridCell* first, + ListGrid::GridCell* second) { + first->SetTraversalMode(direction_); + second->SetTraversalMode(direction_); + auto ortho_direction = OrthogonalDirection(direction_); return ComparePositions(first->Index(ortho_direction), second->Index(ortho_direction)); }; @@ -188,9 +185,8 @@ size_t col_index = direction_ == kForColumns ? Index() : span.StartLine(); size_t row_index = direction_ == kForColumns ? span.StartLine() : Index(); - auto result = - cells_.Insert(base::WrapUnique(new GridCell(row_index, col_index)), - WTF::BindRepeating(compare_cells, direction_)); + auto result = cells_.Insert( + base::WrapUnique(new GridCell(row_index, col_index)), compare_cells); auto* cell = result.node; for (auto index : span) { cell->AppendItem(item); @@ -274,9 +270,8 @@ size_t start_line = span.StartLine(); size_t end_line = span.EndLine(); - DoublyLinkedList<ListGrid::GridTrack>::AddResult result = - tracks.Insert(base::WrapUnique(new GridTrack(start_line, direction)), - WTF::BindRepeating(compare_tracks)); + DoublyLinkedList<ListGrid::GridTrack>::AddResult result = tracks.Insert( + base::WrapUnique(new GridTrack(start_line, direction)), compare_tracks); auto* track = result.node; DCHECK(track);
diff --git a/third_party/blink/renderer/core/layout/intersection_geometry.cc b/third_party/blink/renderer/core/layout/intersection_geometry.cc index 2d4fa91..7704bf79 100644 --- a/third_party/blink/renderer/core/layout/intersection_geometry.cc +++ b/third_party/blink/renderer/core/layout/intersection_geometry.cc
@@ -50,7 +50,7 @@ } LayoutUnit ComputeMargin(const Length& length, LayoutUnit reference_length) { - if (length.GetType() == kPercent) { + if (length.IsPercent()) { return LayoutUnit(static_cast<int>(reference_length.ToFloat() * length.Percent() / 100.0)); }
diff --git a/third_party/blink/renderer/core/layout/layout_block_test.cc b/third_party/blink/renderer/core/layout/layout_block_test.cc index d4e73a8..86e6e8d 100644 --- a/third_party/blink/renderer/core/layout/layout_block_test.cc +++ b/third_party/blink/renderer/core/layout/layout_block_test.cc
@@ -20,7 +20,8 @@ TEST_F(LayoutBlockTest, LayoutNameCalledWithNullStyle) { scoped_refptr<ComputedStyle> style = ComputedStyle::Create(); LayoutObject* obj = LayoutBlockFlow::CreateAnonymous(&GetDocument(), style); - obj->SetStyleInternal(nullptr); + obj->SetModifiedStyleOutsideStyleRecalc(nullptr, + LayoutObject::ApplyStyleChanges::kNo); EXPECT_FALSE(obj->Style()); EXPECT_THAT(obj->DecoratedName().Ascii().data(), MatchesRegex("LayoutN?G?BlockFlow \\(anonymous\\)"));
diff --git a/third_party/blink/renderer/core/layout/layout_box.cc b/third_party/blink/renderer/core/layout/layout_box.cc index 4f430d2f..96253bd 100644 --- a/third_party/blink/renderer/core/layout/layout_box.cc +++ b/third_party/blink/renderer/core/layout/layout_box.cc
@@ -809,8 +809,8 @@ // to avoid recursing up through our containing blocks again to determine it. const ComputedStyle& style_to_use = StyleRef(); if (!style_to_use.LogicalMaxHeight().IsMaxSizeNone()) { - if (style_to_use.LogicalMaxHeight().GetType() == kPercent && - style_to_use.LogicalHeight().GetType() == kPercent) { + if (style_to_use.LogicalMaxHeight().IsPercent() && + style_to_use.LogicalHeight().IsPercent()) { LayoutUnit available_logical_height( logical_height / style_to_use.LogicalHeight().Value() * 100); logical_height = std::min(logical_height, @@ -824,8 +824,8 @@ } } - if (style_to_use.LogicalMinHeight().GetType() == kPercent && - style_to_use.LogicalHeight().GetType() == kPercent) { + if (style_to_use.LogicalMinHeight().IsPercent() && + style_to_use.LogicalHeight().IsPercent()) { LayoutUnit available_logical_height( logical_height / style_to_use.LogicalHeight().Value() * 100); logical_height = @@ -2800,7 +2800,7 @@ } if (style_to_use.TextAutosizingMultiplier() != 1 && - style_to_use.MarginStart().GetType() == kFixed) { + style_to_use.MarginStart().IsFixed()) { Node* parent_node = GeneratingNode(); if (parent_node && (IsHTMLOListElement(*parent_node) || IsHTMLUListElement(*parent_node))) { @@ -2851,7 +2851,7 @@ const Length& logical_width_length, LayoutUnit available_logical_width, LayoutUnit border_and_padding) const { - if (logical_width_length.GetType() == kFillAvailable) { + if (logical_width_length.IsFillAvailable()) { if (!IsHTMLMarqueeElement(GetNode())) { UseCounter::Count(GetDocument(), WebFeature::kCSSFillAvailableLogicalWidth); @@ -2864,13 +2864,13 @@ LayoutUnit max_logical_width; ComputeIntrinsicLogicalWidths(min_logical_width, max_logical_width); - if (logical_width_length.GetType() == kMinContent) + if (logical_width_length.IsMinContent()) return min_logical_width + border_and_padding; - if (logical_width_length.GetType() == kMaxContent) + if (logical_width_length.IsMaxContent()) return max_logical_width + border_and_padding; - if (logical_width_length.GetType() == kFitContent) { + if (logical_width_length.IsFitContent()) { min_logical_width += border_and_padding; max_logical_width += border_and_padding; return std::max(min_logical_width,
diff --git a/third_party/blink/renderer/core/layout/layout_counter.cc b/third_party/blink/renderer/core/layout/layout_counter.cc index c47492d..41af434 100644 --- a/third_party/blink/renderer/core/layout/layout_counter.cc +++ b/third_party/blink/renderer/core/layout/layout_counter.cc
@@ -644,7 +644,7 @@ node = node->parentNode(); else node = layout_object->GeneratingNode(); - if (node && node->NeedsAttach()) + if (node && node->NeedsReattachLayoutTree()) return; // No need to update if the parent is not attached yet for (LayoutObject* descendant = layout_object; descendant; descendant = descendant->NextInPreOrder(layout_object)) @@ -655,7 +655,7 @@ const ComputedStyle* old_style, const ComputedStyle& new_style) { Node* node = layout_object.GeneratingNode(); - if (!node || node->NeedsAttach()) + if (!node || node->NeedsReattachLayoutTree()) return; // cannot have generated content or if it can have, it will be // handled during attaching const CounterDirectiveMap* old_counter_directives =
diff --git a/third_party/blink/renderer/core/layout/layout_flexible_box.cc b/third_party/blink/renderer/core/layout/layout_flexible_box.cc index f17f377..a30a307a 100644 --- a/third_party/blink/renderer/core/layout/layout_flexible_box.cc +++ b/third_party/blink/renderer/core/layout/layout_flexible_box.cc
@@ -596,9 +596,9 @@ // that here. (Compare code in LayoutBlock::computePreferredLogicalWidths) LayoutUnit border_and_padding = child.BorderAndPaddingLogicalWidth(); if (child.StyleRef().LogicalWidth().IsAuto() && !HasAspectRatio(child)) { - if (size.GetType() == kMinContent) + if (size.IsMinContent()) return child.MinPreferredLogicalWidth() - border_and_padding; - if (size.GetType() == kMaxContent) + if (size.IsMaxContent()) return child.MaxPreferredLogicalWidth() - border_and_padding; } return child.ComputeLogicalWidthUsing(size_type, size, ContentLogicalWidth(),
diff --git a/third_party/blink/renderer/core/layout/layout_list_item.cc b/third_party/blink/renderer/core/layout/layout_list_item.cc index 0de54978..daa7aed 100644 --- a/third_party/blink/renderer/core/layout/layout_list_item.cc +++ b/third_party/blink/renderer/core/layout/layout_list_item.cc
@@ -174,7 +174,8 @@ scoped_refptr<ComputedStyle> new_style = ComputedStyle::Clone(layout_object.StyleRef()); new_style->SetLogicalHeight(height); - layout_object.SetStyleInternal(std::move(new_style)); + layout_object.SetModifiedStyleOutsideStyleRecalc( + std::move(new_style), LayoutObject::ApplyStyleChanges::kNo); } } // namespace
diff --git a/third_party/blink/renderer/core/layout/layout_menu_list.cc b/third_party/blink/renderer/core/layout/layout_menu_list.cc index e92a4a30..5a6f950 100644 --- a/third_party/blink/renderer/core/layout/layout_menu_list.cc +++ b/third_party/blink/renderer/core/layout/layout_menu_list.cc
@@ -75,7 +75,8 @@ scoped_refptr<ComputedStyle> inner_style = ComputedStyle::Clone(inner_block_->StyleRef()); AdjustInnerStyle(*inner_style); - inner_block_->SetStyleInternal(std::move(inner_style)); + inner_block_->SetModifiedStyleOutsideStyleRecalc(std::move(inner_style), + ApplyStyleChanges::kNo); // LayoutMenuList::ControlClipRect() depends on inner_block_->ContentsSize(). SetNeedsPaintPropertyUpdate(); if (Layer())
diff --git a/third_party/blink/renderer/core/layout/layout_object.cc b/third_party/blink/renderer/core/layout/layout_object.cc index af5613a..54653b22 100644 --- a/third_party/blink/renderer/core/layout/layout_object.cc +++ b/third_party/blink/renderer/core/layout/layout_object.cc
@@ -30,6 +30,7 @@ #include <algorithm> #include <memory> +#include <utility> #include "third_party/blink/public/platform/web_scroll_into_view_params.h" #include "third_party/blink/renderer/core/accessibility/ax_object_cache.h" @@ -2002,11 +2003,18 @@ } DISABLE_CFI_PERF -void LayoutObject::SetStyle(scoped_refptr<ComputedStyle> style) { - DCHECK(style); +void LayoutObject::SetStyle(scoped_refptr<ComputedStyle> style, + ApplyStyleChanges apply_changes) { if (style_ == style) return; + if (apply_changes == ApplyStyleChanges::kNo) { + SetStyleInternal(std::move(style)); + return; + } + + DCHECK(style); + StyleDifference diff; if (style_) { diff = style_->VisualInvalidationDiff(GetDocument(), *style); @@ -4243,6 +4251,15 @@ return outline_rects; } +void LayoutObject::SetModifiedStyleOutsideStyleRecalc( + scoped_refptr<ComputedStyle> style, + ApplyStyleChanges apply_changes) { + SetStyle(style, apply_changes); + if (IsAnonymous() || !GetNode() || !GetNode()->IsElementNode()) + return; + GetNode()->SetComputedStyle(std::move(style)); +} + } // namespace blink #ifndef NDEBUG
diff --git a/third_party/blink/renderer/core/layout/layout_object.h b/third_party/blink/renderer/core/layout/layout_object.h index 945893ca..721856e3 100644 --- a/third_party/blink/renderer/core/layout/layout_object.h +++ b/third_party/blink/renderer/core/layout/layout_object.h
@@ -27,6 +27,8 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_LAYOUT_OBJECT_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_LAYOUT_OBJECT_H_ +#include <utility> + #include "base/auto_reset.h" #include "base/macros.h" #include "third_party/blink/renderer/core/core_export.h" @@ -1329,17 +1331,28 @@ MarkingBehavior marking_behaviour = kMarkContainerChain); // Set the style of the object and update the state of the object accordingly. - void SetStyle(scoped_refptr<ComputedStyle>); + // ApplyStyleChanges = kYes means we will apply any changes between the old + // and new ComputedStyle like paint and size invalidations. If kNo, just set + // the ComputedStyle member. + enum class ApplyStyleChanges { kNo, kYes }; + void SetStyle(scoped_refptr<ComputedStyle>, + ApplyStyleChanges = ApplyStyleChanges::kYes); // Set the style of the object if it's generated content. void SetPseudoStyle(scoped_refptr<ComputedStyle>); - // Updates only the local style ptr of the object. Does not update the state - // of the object, and so only should be called when the style is known not to - // have changed (or from setStyle). - void SetStyleInternal(scoped_refptr<ComputedStyle> style) { - style_ = std::move(style); - } + // In some cases we modify the ComputedStyle after the style recalc, either + // for updating anonymous style or doing layout hacks for special elements + // where we update the ComputedStyle during layout. + // If the LayoutObject has an associated node, we will SetComputedStyle on + // that node with the new ComputedStyle. + // ApplyStyleChanges = kNo means we will simply set the member object. If it's + // kYes, we will apply any changes from the previously set ComputedStyle to do + // visual invalidation etc. + // + // Do not use unless strictly necessary. + void SetModifiedStyleOutsideStyleRecalc(scoped_refptr<ComputedStyle>, + ApplyStyleChanges); void SetStyleWithWritingModeOf(scoped_refptr<ComputedStyle>, LayoutObject* parent); @@ -2265,6 +2278,12 @@ }; virtual bool IsOfType(LayoutObjectType type) const { return false; } + // Updates only the local style ptr of the object. Does not update the state + // of the object, and so only should be called when the style is known not to + // have changed (or from SetStyle). + void SetStyleInternal(scoped_refptr<ComputedStyle> style) { + style_ = std::move(style); + } // Overrides should call the superclass at the end. style_ will be 0 the // first time this function will be called. virtual void StyleWillChange(StyleDifference, const ComputedStyle& new_style);
diff --git a/third_party/blink/renderer/core/layout/layout_table_section.cc b/third_party/blink/renderer/core/layout/layout_table_section.cc index 24c0752..f336a5e 100644 --- a/third_party/blink/renderer/core/layout/layout_table_section.cc +++ b/third_party/blink/renderer/core/layout/layout_table_section.cc
@@ -66,7 +66,7 @@ logical_height = cell_logical_height; break; case kFixed: - if (logical_height.GetType() < kPercent || + if (logical_height.IsAuto() || (logical_height.IsFixed() && logical_height.Value() < cell_logical_height.Value())) logical_height = cell_logical_height;
diff --git a/third_party/blink/renderer/core/layout/layout_view_test.cc b/third_party/blink/renderer/core/layout/layout_view_test.cc index 5cbca25..6e8a9fd4 100644 --- a/third_party/blink/renderer/core/layout/layout_view_test.cc +++ b/third_party/blink/renderer/core/layout/layout_view_test.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/core/layout/layout_view.h" +#include "third_party/blink/renderer/core/dom/node_computed_style.h" #include "third_party/blink/renderer/core/html/html_iframe_element.h" #include "third_party/blink/renderer/core/testing/core_unit_test_helper.h" @@ -57,10 +58,10 @@ )HTML"); frame_doc->Lifecycle().AdvanceTo(DocumentLifecycle::kInStyleRecalc); - frame_doc->GetStyleEngine().RecalcStyle(kNoChange); + frame_doc->GetStyleEngine().RecalcStyle({}); Element* div = frame_doc->getElementById("div"); - EXPECT_FALSE(div->GetNonAttachedStyle()); + EXPECT_FALSE(div->GetComputedStyle()); } } // namespace blink
diff --git a/third_party/blink/renderer/core/layout/line/line_box_list.cc b/third_party/blink/renderer/core/layout/line/line_box_list.cc index 2b943ba..9e6e20a 100644 --- a/third_party/blink/renderer/core/layout/line/line_box_list.cc +++ b/third_party/blink/renderer/core/layout/line/line_box_list.cc
@@ -269,7 +269,7 @@ // If we are attaching children dirtying lines is unnecessary as we will do a // full layout of the inline's contents anyway. if (inline_container && inline_container.GetNode() && - inline_container.GetNode()->NeedsAttach()) + inline_container.GetNode()->NeedsReattachLayoutTree()) return; InlineBox* first_box = inline_container
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder_test.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder_test.cc index 86e7f2c..0e56a7f0 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder_test.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_items_builder_test.cc
@@ -416,7 +416,8 @@ scoped_refptr<ComputedStyle> style(ComputedStyle::Create()); initialize_style(style.get()); std::unique_ptr<LayoutInline> node = std::make_unique<LayoutInline>(nullptr); - node->SetStyleInternal(std::move(style)); + node->SetModifiedStyleOutsideStyleRecalc( + std::move(style), LayoutObject::ApplyStyleChanges::kNo); node->SetIsInLayoutNGInlineFormattingContext(true); return node; }
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc index c6d63ea..1ae17e9d 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc
@@ -602,13 +602,9 @@ } } -// static // Segment bidi runs by resolving bidi embedding levels. // http://unicode.org/reports/tr9/#Resolving_Embedding_Levels -// TODO(xiaochengh): Merge it back into SegmentBidiRuns(), as we no longer have -// any legacy callers. -void NGInlineNode::SegmentBidiRunsInternal(NGInlineNodeData* data, - const ComputedStyle& style) { +void NGInlineNode::SegmentBidiRuns(NGInlineNodeData* data) { if (!data->is_bidi_enabled_) { data->SetBaseDirection(TextDirection::kLtr); return; @@ -616,7 +612,7 @@ NGBidiParagraph bidi; data->text_content.Ensure16Bit(); - if (!bidi.SetParagraph(data->text_content, style)) { + if (!bidi.SetParagraph(data->text_content, Style())) { // On failure, give up bidi resolving and reordering. data->is_bidi_enabled_ = false; data->SetBaseDirection(TextDirection::kLtr); @@ -651,10 +647,6 @@ #endif } -void NGInlineNode::SegmentBidiRuns(NGInlineNodeData* data) { - SegmentBidiRunsInternal(data, Style()); -} - void NGInlineNode::ShapeText(NGInlineItemsData* data, NGInlineItemsData* previous_data) { const String& text_content = data->text_content;
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.h b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.h index 0007417..56670dc 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.h +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.h
@@ -142,11 +142,6 @@ static void ComputeOffsetMapping(LayoutBlockFlow* layout_block_flow, NGInlineNodeData* data); - // This function shares bidi segmentation code between inline layout algorithm - // and |NGCaretNavigator| building, which may run on legacy layout. - // TODO(layout-dev): Merge with |SegmentBidiRuns| when we remove legacy layout - static void SegmentBidiRunsInternal(NGInlineNodeData*, const ComputedStyle&); - friend class NGLineBreakerTest; friend class NGInlineNodeLegacy; };
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker.cc index 1b98184..a449fd0 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker.cc
@@ -263,7 +263,7 @@ // Check overflow even if |item_index_| is at the end of the block, because // the last item of the block may have caused overflow. In that case, // |HandleOverflow| will rewind |item_index_|. - if (state_ == LineBreakState::kContinue && auto_wrap_ && + if (state_ == LineBreakState::kContinue && position_ > AvailableWidthToFit()) { HandleOverflow(); } @@ -386,7 +386,8 @@ // false for between spaces. But we still need to handle them as trailing // spaces. const String& text = Text(); - if (offset_ < text.length() && IsBreakableSpace(text[offset_])) + if (auto_wrap_ && offset_ < text.length() && + IsBreakableSpace(text[offset_])) return HandleTrailingSpaces(item, shape_result); }
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm_test.cc b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm_test.cc index 2f382133..b28fab50 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm_test.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm_test.cc
@@ -69,7 +69,8 @@ DCHECK(element->GetLayoutObject()); scoped_refptr<ComputedStyle> mutable_style = ComputedStyle::Clone(element->GetLayoutObject()->StyleRef()); - element->GetLayoutObject()->SetStyleInternal(mutable_style); + element->GetLayoutObject()->SetModifiedStyleOutsideStyleRecalc( + mutable_style, LayoutObject::ApplyStyleChanges::kNo); return mutable_style; } };
diff --git a/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc b/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc index 69be5ab..540e196 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_length_utils.cc
@@ -135,7 +135,7 @@ // Check if we shouldn't resolve a percentage/calc()/-webkit-fill-available // if we are in the intrinsic sizes phase. if (phase == LengthResolvePhase::kIntrinsic && - (length.IsPercentOrCalc() || length.GetType() == kFillAvailable)) { + (length.IsPercentOrCalc() || length.IsFillAvailable())) { // min-width/min-height should be "0", i.e. no min limit is applied. if (type == LengthResolveType::kMinSize) return border_and_padding.InlineSum(); @@ -241,7 +241,7 @@ size_is_unresolvable = phase == LengthResolvePhase::kIntrinsic || constraint_space.PercentageResolutionBlockSize() == NGSizeIndefinite; - } else if (length.GetType() == kFillAvailable) { + } else if (length.IsFillAvailable()) { size_is_unresolvable = phase == LengthResolvePhase::kIntrinsic || constraint_space.AvailableSize().block_size == NGSizeIndefinite; @@ -365,8 +365,7 @@ ? style.Width() : style.Height(); if (inline_size.IsAuto() || inline_size.IsPercentOrCalc() || - inline_size.GetType() == kFillAvailable || - inline_size.GetType() == kFitContent) { + inline_size.IsFillAvailable() || inline_size.IsFitContent()) { CHECK(min_and_max.has_value()); computed_sizes = *min_and_max; } else { @@ -489,7 +488,7 @@ if (!box->PreferredLogicalWidthsDirty() && !override_minmax && !style.LogicalMinWidth().IsPercentOrCalc() && !style.LogicalMaxWidth().IsPercentOrCalc()) { - if (logical_width.GetType() == kFitContent) { + if (logical_width.IsFitContent()) { // This is not as easy as {min, max}.ShrinkToFit() because we also need // to subtract inline margins from the available size. The code in // ResolveInlineLength knows how to handle that, just call that. @@ -500,9 +499,9 @@ LengthResolveType::kContentSize, LengthResolvePhase::kLayout); } - if (logical_width.GetType() == kMinContent) + if (logical_width.IsMinContent()) return box->MinPreferredLogicalWidth(); - if (logical_width.GetType() == kMaxContent) + if (logical_width.IsMaxContent()) return box->MaxPreferredLogicalWidth(); }
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc index 5d50614..a421fd8a 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc
@@ -213,8 +213,8 @@ // is does not depend on the reference box. For fill-box, the origin will // always move with the bounding box. return style.TransformBox() == ETransformBox::kViewBox && - style.TransformOriginX().GetType() == kFixed && - style.TransformOriginY().GetType() == kFixed; + style.TransformOriginX().IsFixed() && + style.TransformOriginY().IsFixed(); } static inline bool TransformDependsOnReferenceBox(const ComputedStyle& style) {
diff --git a/third_party/blink/renderer/core/layout/text_autosizer.cc b/third_party/blink/renderer/core/layout/text_autosizer.cc index 2d52e2e..2b30e3b 100644 --- a/third_party/blink/renderer/core/layout/text_autosizer.cc +++ b/third_party/blink/renderer/core/layout/text_autosizer.cc
@@ -1195,12 +1195,13 @@ switch (relayout_behavior) { case kAlreadyInLayout: - // Don't free currentStyle until the end of the layout pass. This allows + // Don't free current_style until the end of the layout pass. This allows // other parts of the system to safely hold raw ComputedStyle* pointers - // during layout, e.g. BreakingContext::m_currentStyle. + // during layout, e.g. BreakingContext::current_style_. styles_retained_during_layout_.push_back(¤t_style); - layout_object->SetStyleInternal(std::move(style)); + layout_object->SetModifiedStyleOutsideStyleRecalc( + std::move(style), LayoutObject::ApplyStyleChanges::kNo); if (layout_object->IsText()) ToLayoutText(layout_object)->AutosizingMultiplerChanged(); DCHECK(!layouter || layout_object->IsDescendantOf(&layouter->Root())); @@ -1212,7 +1213,8 @@ case kLayoutNeeded: DCHECK(!layouter); - layout_object->SetStyle(std::move(style)); + layout_object->SetModifiedStyleOutsideStyleRecalc( + std::move(style), LayoutObject::ApplyStyleChanges::kYes); break; }
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc index 8c91918..f7c9e19 100644 --- a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc +++ b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc
@@ -369,11 +369,16 @@ // the descendant script fetch options are a new script fetch options whose // items all have the same values, except for the integrity metadata, which is // instead the empty string. + // TODO(domfarolino): It has not yet been decided how a root module script's + // "importance" mode should trickle down to imports. There is discussion of + // this at https://github.com/whatwg/html/issues/3670, but for now, descendant + // scripts get "auto" importance (Also see https://crbug.com/821464). ScriptFetchOptions options(module_script->FetchOptions().Nonce(), IntegrityMetadataSet(), String(), module_script->FetchOptions().ParserState(), module_script->FetchOptions().CredentialsMode(), - module_script->FetchOptions().GetReferrerPolicy()); + module_script->FetchOptions().GetReferrerPolicy(), + mojom::FetchImportanceMode::kImportanceAuto); // [FD] Step 7. For each url in urls, ... //
diff --git a/third_party/blink/renderer/core/loader/preload_helper.cc b/third_party/blink/renderer/core/loader/preload_helper.cc index 89dbdcd..72d95c5c 100644 --- a/third_party/blink/renderer/core/loader/preload_helper.cc +++ b/third_party/blink/renderer/core/loader/preload_helper.cc
@@ -389,7 +389,8 @@ params.href, destination, ScriptFetchOptions(params.nonce, integrity_metadata, params.integrity, kNotParserInserted, credentials_mode, - params.referrer_policy), + params.referrer_policy, + mojom::FetchImportanceMode::kImportanceAuto), Referrer::NoReferrer(), TextPosition::MinimumPosition()); // Step 11. "Fetch a single module script given url, settings object,
diff --git a/third_party/blink/renderer/core/page/viewport_description.cc b/third_party/blink/renderer/core/page/viewport_description.cc index ea6df77..36832fb 100644 --- a/third_party/blink/renderer/core/page/viewport_description.cc +++ b/third_party/blink/renderer/core/page/viewport_description.cc
@@ -68,10 +68,10 @@ if (length.GetType() == kExtendToZoom) return ViewportDescription::kValueExtendToZoom; - if (length.GetType() == kPercent && direction == kHorizontal) + if (length.IsPercent() && direction == kHorizontal) return initial_viewport_size.Width() * length.GetFloatValue() / 100.0f; - if (length.GetType() == kPercent && direction == kVertical) + if (length.IsPercent() && direction == kVertical) return initial_viewport_size.Height() * length.GetFloatValue() / 100.0f; if (length.GetType() == kDeviceWidth) @@ -265,7 +265,7 @@ } if (IsMetaViewportType()) { - if (max_width.GetType() == blink::kFixed) { + if (max_width.IsFixed()) { meta_tag_type_histogram.Count( static_cast<int>(ViewportUMAType::kConstantWidth));
diff --git a/third_party/blink/renderer/core/script/dynamic_module_resolver.cc b/third_party/blink/renderer/core/script/dynamic_module_resolver.cc index 2f5e27fd..4dab9c8f 100644 --- a/third_party/blink/renderer/core/script/dynamic_module_resolver.cc +++ b/third_party/blink/renderer/core/script/dynamic_module_resolver.cc
@@ -227,10 +227,17 @@ // options are a new script fetch options whose items all have the same // values, except for the integrity metadata, which is instead the empty // string.</spec> + // TODO(domfarolino): It has not yet been decided how a script's "importance" + // should affect its dynamic imports. There is discussion at + // https://github.com/whatwg/html/issues/3670, but for now there is no effect, + // and dynamic imports get kImportanceAuto. If this changes, + // ReferrerScriptInfo will need a mojom::FetchImportanceMode member, that must + // be properly set. ScriptFetchOptions options(referrer_info.Nonce(), IntegrityMetadataSet(), String(), referrer_info.ParserState(), referrer_info.CredentialsMode(), - referrer_info.GetReferrerPolicy()); + referrer_info.GetReferrerPolicy(), + mojom::FetchImportanceMode::kImportanceAuto); // <spec step="2.4">Fetch a module script graph given url, referencing // script's settings object, "script", and options. Wait until the algorithm
diff --git a/third_party/blink/renderer/core/style/computed_style.cc b/third_party/blink/renderer/core/style/computed_style.cc index 6bd3651..aa7fe0c 100644 --- a/third_party/blink/renderer/core/style/computed_style.cc +++ b/third_party/blink/renderer/core/style/computed_style.cc
@@ -174,12 +174,11 @@ RefCounted<ComputedStyle>(), svg_style_(o.svg_style_) {} -static StyleRecalcChange DiffPseudoStyles(const ComputedStyle& old_style, - const ComputedStyle& new_style) { - // If the pseudoStyles have changed, ensure layoutObject triggers setStyle. +static bool PseudoStylesEqual(const ComputedStyle& old_style, + const ComputedStyle& new_style) { if (!old_style.HasAnyPublicPseudoStyles() && !new_style.HasAnyPublicPseudoStyles()) - return kNoChange; + return true; for (PseudoId pseudo_id = kFirstPublicPseudoId; pseudo_id < kFirstInternalPseudoId; pseudo_id = static_cast<PseudoId>(pseudo_id + 1)) { @@ -189,72 +188,88 @@ const ComputedStyle* new_pseudo_style = new_style.GetCachedPseudoStyle(pseudo_id); if (!new_pseudo_style) - return kNoInherit; + return false; const ComputedStyle* old_pseudo_style = old_style.GetCachedPseudoStyle(pseudo_id); if (old_pseudo_style && *old_pseudo_style != *new_pseudo_style) - return kNoInherit; + return false; } - return kNoChange; + return true; } -StyleRecalcChange ComputedStyle::StylePropagationDiff( - const ComputedStyle* old_style, - const ComputedStyle* new_style) { - // If the style has changed from display none or to display none, then the - // layout subtree needs to be reattached - if ((!old_style && new_style) || (old_style && !new_style)) - return kReattach; - - if (!old_style && !new_style) - return kNoChange; - - if (old_style->Display() != new_style->Display() || - old_style->HasPseudoStyle(kPseudoIdFirstLetter) != - new_style->HasPseudoStyle(kPseudoIdFirstLetter) || - !old_style->ContentDataEquivalent(*new_style) || - old_style->HasTextCombine() != new_style->HasTextCombine()) - return kReattach; - +bool ComputedStyle::NeedsReattachLayoutTree(const ComputedStyle* old_style, + const ComputedStyle* new_style) { + if (old_style == new_style) + return false; + if (!old_style || !new_style) + return true; + if (old_style->Display() != new_style->Display()) + return true; + if (old_style->HasPseudoStyle(kPseudoIdFirstLetter) != + new_style->HasPseudoStyle(kPseudoIdFirstLetter)) + return true; + if (!old_style->ContentDataEquivalent(*new_style)) + return true; + if (old_style->HasTextCombine() != new_style->HasTextCombine()) + return true; // We need to perform a reattach if a "display: layout(foo)" has changed to a // "display: layout(bar)". This is because one custom layout could be // registered and the other may not, affecting the box-tree construction. if (old_style->DisplayLayoutCustomName() != - new_style->DisplayLayoutCustomName()) { - return kReattach; + new_style->DisplayLayoutCustomName()) + return true; + if (!RuntimeEnabledFeatures::LayoutNGEnabled()) + return false; + + // LayoutNG needs an anonymous inline wrapper if ::first-line is applied. + // Also see |LayoutBlockFlow::NeedsAnonymousInlineWrapper()|. + if (new_style->HasPseudoStyle(kPseudoIdFirstLine) && + !old_style->HasPseudoStyle(kPseudoIdFirstLine)) + return true; + + return old_style->ForceLegacyLayout() != new_style->ForceLegacyLayout(); +} + +ComputedStyle::Difference ComputedStyle::ComputeDifference( + const ComputedStyle* old_style, + const ComputedStyle* new_style) { + if (old_style == new_style) + return Difference::kEqual; + if (!old_style || !new_style) + return Difference::kInherited; + if (old_style->Display() != new_style->Display() && + (old_style->IsDisplayFlexibleOrGridBox() || + old_style->IsDisplayLayoutCustomBox() || + new_style->IsDisplayFlexibleOrGridBox() || + old_style->IsDisplayLayoutCustomBox())) { + return Difference::kDisplayAffectingDescendantStyles; } - - if (RuntimeEnabledFeatures::LayoutNGEnabled()) { - // LayoutNG needs an anonymous inline wrapper if ::first-line is applied. - // Also see |LayoutBlockFlow::NeedsAnonymousInlineWrapper()|. - if (new_style->HasPseudoStyle(kPseudoIdFirstLine) && - !old_style->HasPseudoStyle(kPseudoIdFirstLine)) - return kReattach; - - if (old_style->ForceLegacyLayout() != new_style->ForceLegacyLayout()) - return kReattach; - } - bool independent_equal = old_style->IndependentInheritedEqual(*new_style); bool non_independent_equal = old_style->NonIndependentInheritedEqual(*new_style); if (!independent_equal || !non_independent_equal) { if (non_independent_equal && !old_style->HasExplicitlyInheritedProperties()) - return kIndependentInherit; - return kInherit; + return Difference::kIndependentInherited; + return Difference::kInherited; } if (!old_style->LoadingCustomFontsEqual(*new_style) || old_style->JustifyItems() != new_style->JustifyItems()) - return kInherit; + return Difference::kInherited; - if (*old_style == *new_style) - return DiffPseudoStyles(*old_style, *new_style); + if (*old_style == *new_style) { + if (PseudoStylesEqual(*old_style, *new_style)) + return Difference::kEqual; + return Difference::kPseudoStyle; + } if (old_style->HasExplicitlyInheritedProperties()) - return kInherit; + return Difference::kInherited; - return kNoInherit; + if (new_style->HasAnyPublicPseudoStyles() || + old_style->HasAnyPublicPseudoStyles()) + return Difference::kPseudoStyle; + return Difference::kNonInherited; } void ComputedStyle::PropagateIndependentInheritedProperties(
diff --git a/third_party/blink/renderer/core/style/computed_style.h b/third_party/blink/renderer/core/style/computed_style.h index 6948bb1..90ddc39 100644 --- a/third_party/blink/renderer/core/style/computed_style.h +++ b/third_party/blink/renderer/core/style/computed_style.h
@@ -124,9 +124,9 @@ // // In addition to storing the computed value of every CSS property, // ComputedStyle also contains various internal style information. Examples -// include cached_pseudo_styles_ (for storing pseudo element styles), unique_ -// (for style caching) and has_simple_underline_ (cached indicator flag of -// text-decoration). These are stored on ComputedStyle for two reasons: +// include cached_pseudo_styles_ (for storing pseudo element styles) and +// has_simple_underline_ (cached indicator flag of text-decoration). These are +// stored on ComputedStyle for two reasons: // // 1) They share the same lifetime as ComputedStyle, so it is convenient to // store them in the same object rather than a separate object that have to be @@ -253,9 +253,41 @@ static const ComputedStyle& InitialStyle() { return MutableInitialStyle(); } static void InvalidateInitialStyle(); - // Computes how the style change should be propagated down the tree. - static StyleRecalcChange StylePropagationDiff(const ComputedStyle* old_style, - const ComputedStyle* new_style); + // Find out how two ComputedStyles differ. Used for figuring out if style + // recalc needs to propagate style changes down the tree. The constants are + // listed in increasing severity. E.g. kInherited also means we need to update + // pseudo elements (kPseudoStyle). + enum class Difference { + // The ComputedStyle objects have the same computed style. The might have + // some different extra flags which means we still need to replace the old + // with the new instance. + kEqual, + // Non-inherited properties differ which means we need to apply visual + // difference changes to the layout tree through LayoutObject::SetStyle(). + kNonInherited, + // Pseudo element style is different which means we have to update pseudo + // element existence and computed style. + kPseudoStyle, + // Inherited properties are different which means we need to recalc style + // for children. Only independent properties changed which means we can + // inherit by cloning the exiting ComputedStyle for children an set modified + // properties directly without re-matching rules. + kIndependentInherited, + // Inherited properties are different which means we need to recalc style + // for children. + kInherited, + // Display type changes for flex/grid/custom layout affects computed style + // adjustments for descendants. For instance flex/grid items are blockified + // at computed style time and such items can be arbitrarily deep down the + // flat tree in the presence of display:contents. + kDisplayAffectingDescendantStyles, + }; + static Difference ComputeDifference(const ComputedStyle* old_style, + const ComputedStyle* new_style); + + // Returns true if the ComputedStyle change requires a LayoutObject re-attach. + static bool NeedsReattachLayoutTree(const ComputedStyle* old_style, + const ComputedStyle* new_style); // Copies the values of any independent inherited properties from the parent // that are not explicitly set in this style.
diff --git a/third_party/blink/renderer/core/style/computed_style_constants.h b/third_party/blink/renderer/core/style/computed_style_constants.h index 1d31d5be..8be0d3e 100644 --- a/third_party/blink/renderer/core/style/computed_style_constants.h +++ b/third_party/blink/renderer/core/style/computed_style_constants.h
@@ -49,17 +49,6 @@ // from top. enum class BoxSide : unsigned { kTop, kRight, kBottom, kLeft }; -// See core/style/stylerecalc.md for an explanation on what each state means -enum StyleRecalcChange { - kNoChange, - kNoInherit, - kUpdatePseudoElements, - kIndependentInherit, - kInherit, - kForce, - kReattach -}; - // Static pseudo styles. Dynamic ones are produced on the fly. enum PseudoId { // The order must be NOP ID, public IDs, and then internal IDs.
diff --git a/third_party/blink/renderer/core/style/stylerecalc.md b/third_party/blink/renderer/core/style/stylerecalc.md index 9eebf42..85e3f37 100644 --- a/third_party/blink/renderer/core/style/stylerecalc.md +++ b/third_party/blink/renderer/core/style/stylerecalc.md
@@ -1,15 +1,3 @@ This Markdown file intends to demystify some of the StyleRecalc process: TODO(crbug.com/795634): Add more details about the StyleRecalc process here. -## Different StyleRecalc states - -Different StyleRecalc states are stored in blink::ComputedStyleConstants in blink::StyleRecalcChange. - -The states are as follows: -1. NoChange -> No style recalc change is needed. -2. NoInherit -> Only perform style recalc on the Node itself. -3. UpdatePseudoElements -> Causes an update of just the pseudo element children in the case where the styles for the element itself were recalced, but resulted in NoChange or NoInherit. -4. IndependentInherit -> Same as Inherit except style recalc stops early if only independent properties were changed. We still visit every descendant, but we apply the styles directly instead of doing selector matching to compute a new style. Independent properties are those which do not depend on and do not affect any other properties on ComputedStyle (e.g. visibility and Pointer Events). -5. Inherit -> Do a full style recalc of children. -6. Force -> Fallback that causes us to do a full style recalc. This is as we don't know what changes. The primary reason for it is SubtreeStyleChange. -7. Reattach -> reattachLayoutTree() needs to be performed.
diff --git a/third_party/blink/renderer/core/svg/svg_element.cc b/third_party/blink/renderer/core/svg/svg_element.cc index 2da79ce0..3e64fed 100644 --- a/third_party/blink/renderer/core/svg/svg_element.cc +++ b/third_party/blink/renderer/core/svg/svg_element.cc
@@ -109,13 +109,13 @@ return -1; } -void SVGElement::WillRecalcStyle(StyleRecalcChange change) { +void SVGElement::WillRecalcStyle(const StyleRecalcChange change) { if (!HasSVGRareData()) return; // If the style changes because of a regular property change (not induced by // SMIL animations themselves) reset the "computed style without SMIL style // properties", so the base value change gets reflected. - if (change > kNoChange || NeedsStyleRecalc()) + if (change.ShouldRecalcStyleFor(*this)) SvgRareData()->SetNeedsOverrideComputedStyleUpdate(); }
diff --git a/third_party/blink/renderer/core/svg/svg_element.h b/third_party/blink/renderer/core/svg/svg_element.h index 433793d..e71d501 100644 --- a/third_party/blink/renderer/core/svg/svg_element.h +++ b/third_party/blink/renderer/core/svg/svg_element.h
@@ -216,6 +216,8 @@ bool IsPresentationAttribute(const QualifiedName&) const override; virtual bool IsPresentationAttributeWithSVGDOM(const QualifiedName&) const; + bool HasSVGParent() const; + protected: SVGElement(const QualifiedName&, Document&, @@ -242,8 +244,6 @@ virtual bool SelfHasRelativeLengths() const { return false; } - bool HasSVGParent() const; - SVGElementSet* SetOfIncomingReferences() const; SVGElementRareData* EnsureSVGRareData(); @@ -274,7 +274,7 @@ PseudoId pseudo_element_specifier = kPseudoIdNone) final { return EnsureComputedStyle(pseudo_element_specifier); } - void WillRecalcStyle(StyleRecalcChange) override; + void WillRecalcStyle(const StyleRecalcChange) override; static SVGElementSet& GetDependencyTraversalVisitedSet(); HeapHashSet<WeakMember<SVGElement>> elements_with_relative_lengths_;
diff --git a/third_party/blink/renderer/core/svg/svg_stop_element.cc b/third_party/blink/renderer/core/svg/svg_stop_element.cc index 18bf829..808ed99 100644 --- a/third_party/blink/renderer/core/svg/svg_stop_element.cc +++ b/third_party/blink/renderer/core/svg/svg_stop_element.cc
@@ -20,6 +20,7 @@ #include "third_party/blink/renderer/core/svg/svg_stop_element.h" +#include "third_party/blink/renderer/core/dom/node_computed_style.h" #include "third_party/blink/renderer/core/style/computed_style.h" #include "third_party/blink/renderer/core/svg/svg_gradient_element.h" @@ -65,18 +66,18 @@ SVGElement::SvgAttributeChanged(attr_name); } -void SVGStopElement::DidRecalcStyle(StyleRecalcChange change) { +void SVGStopElement::DidRecalcStyle(const StyleRecalcChange change) { SVGElement::DidRecalcStyle(change); InvalidateInstancesAndAncestorResources(this); } Color SVGStopElement::StopColorIncludingOpacity() const { - const ComputedStyle* style = NonLayoutObjectComputedStyle(); + const ComputedStyle* style = GetComputedStyle(); - // Normally, we should always have a computed non-layout style for <stop> - // elements. But there are some odd corner cases (*cough* shadow DOM v0 - // undistributed light tree *cough*) which leave it null. + // Normally, we should always have a computed style for <stop> elements. But + // there are some odd corner cases (*cough* shadow DOM v0 undistributed light + // tree *cough*) which leave it null. if (!style) return Color::kBlack;
diff --git a/third_party/blink/renderer/core/svg/svg_stop_element.h b/third_party/blink/renderer/core/svg/svg_stop_element.h index 15aceee..e5dd57f 100644 --- a/third_party/blink/renderer/core/svg/svg_stop_element.h +++ b/third_party/blink/renderer/core/svg/svg_stop_element.h
@@ -44,13 +44,12 @@ void Trace(blink::Visitor*) override; protected: - void DidRecalcStyle(StyleRecalcChange) override; + void DidRecalcStyle(const StyleRecalcChange) override; private: void SvgAttributeChanged(const QualifiedName&) override; - // Stop elements don't have associated layout objects - // (they use NonLayoutObjectComputedStyle instead). + // Stop elements don't have associated layout objects. bool LayoutObjectIsNeeded(const ComputedStyle&) const override { return false; }
diff --git a/third_party/blink/renderer/core/workers/shared_worker_reporting_proxy.cc b/third_party/blink/renderer/core/workers/shared_worker_reporting_proxy.cc index e9b6069..20784ff 100644 --- a/third_party/blink/renderer/core/workers/shared_worker_reporting_proxy.cc +++ b/third_party/blink/renderer/core/workers/shared_worker_reporting_proxy.cc
@@ -62,6 +62,18 @@ // Not supported in SharedWorker. } +void SharedWorkerReportingProxy::DidFetchScript() { + DCHECK(!IsMainThread()); + // TODO(nhiroki): Change the task type to kDOMManipulation here and elsewhere + // in this file. See the HTML spec: + // https://html.spec.whatwg.org/multipage/workers.html#worker-processing-model:dom-manipulation-task-source-2 + PostCrossThreadTask( + *parent_execution_context_task_runners_->Get(TaskType::kInternalDefault), + FROM_HERE, + CrossThreadBind(&WebSharedWorkerImpl::DidFetchScript, + CrossThreadUnretained(worker_))); +} + void SharedWorkerReportingProxy::DidFailToFetchClassicScript() { DCHECK(!IsMainThread()); // TODO(nhiroki): Dispatch an error event at the SharedWorker object in the @@ -75,6 +87,22 @@ NOTIMPLEMENTED(); } +void SharedWorkerReportingProxy::DidEvaluateClassicScript(bool success) { + DCHECK(!IsMainThread()); + PostCrossThreadTask( + *parent_execution_context_task_runners_->Get(TaskType::kInternalDefault), + FROM_HERE, + CrossThreadBind(&WebSharedWorkerImpl::DidEvaluateClassicScript, + CrossThreadUnretained(worker_), success)); +} + +void SharedWorkerReportingProxy::DidEvaluateModuleScript(bool success) { + DCHECK(!IsMainThread()); + // TODO(nhiroki): Implement module scripts for shared workers. + // (https://crbug.com/824646) + NOTIMPLEMENTED(); +} + void SharedWorkerReportingProxy::DidCloseWorkerGlobalScope() { DCHECK(!IsMainThread()); PostCrossThreadTask(
diff --git a/third_party/blink/renderer/core/workers/shared_worker_reporting_proxy.h b/third_party/blink/renderer/core/workers/shared_worker_reporting_proxy.h index fa0941f..d2971f91 100644 --- a/third_party/blink/renderer/core/workers/shared_worker_reporting_proxy.h +++ b/third_party/blink/renderer/core/workers/shared_worker_reporting_proxy.h
@@ -35,9 +35,11 @@ MessageLevel, const String& message, SourceLocation*) override; + void DidFetchScript() override; void DidFailToFetchClassicScript() override; void DidFailToFetchModuleScript() override; - void DidEvaluateClassicScript(bool success) override {} + void DidEvaluateClassicScript(bool success) override; + void DidEvaluateModuleScript(bool success) override; void DidCloseWorkerGlobalScope() override; void WillDestroyWorkerGlobalScope() override {} void DidTerminateWorkerThread() override;
diff --git a/third_party/blink/renderer/core/workers/worker_global_scope.cc b/third_party/blink/renderer/core/workers/worker_global_scope.cc index dafd672..d461ae7e 100644 --- a/third_party/blink/renderer/core/workers/worker_global_scope.cc +++ b/third_party/blink/renderer/core/workers/worker_global_scope.cc
@@ -410,6 +410,9 @@ ReportingProxy().DidFailToFetchClassicScript(); return; } + ReportingProxy().DidFetchScript(); + probe::scriptImported(this, classic_script_loader->Identifier(), + classic_script_loader->SourceText()); // Step 12.3. "Set worker global scope's url to response's url." // Step 12.4. "Set worker global scope's HTTPS state to response's HTTPS
diff --git a/third_party/blink/renderer/core/workers/worker_module_tree_client.cc b/third_party/blink/renderer/core/workers/worker_module_tree_client.cc index f6d9ab0..bbb7be3 100644 --- a/third_party/blink/renderer/core/workers/worker_module_tree_client.cc +++ b/third_party/blink/renderer/core/workers/worker_module_tree_client.cc
@@ -31,6 +31,7 @@ worker_reporting_proxy.DidFailToFetchModuleScript(); return; } + worker_reporting_proxy.DidFetchScript(); // Step 12: "Otherwise, continue the rest of these steps after the algorithm's // asynchronous completion, with script being the asynchronous completion
diff --git a/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc b/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc index 36c79b8e..a1f0f7b 100644 --- a/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc +++ b/third_party/blink/renderer/core/workers/worker_or_worklet_global_scope.cc
@@ -248,9 +248,15 @@ ParserDisposition parser_state = kNotParserInserted; // credentials mode is credentials mode, and referrer policy is the empty // string." + // TODO(domfarolino): Module worker scripts are fetched with kImportanceAuto. + // Priority Hints is currently non-standard, but we can assume "fetch a module + // worker script tree" sets the script fetch options struct's "importance" to + // "auto". See https://github.com/whatwg/html/issues/3670 and + // https://crbug.com/821464. ScriptFetchOptions options(nonce, IntegrityMetadataSet(), integrity_attribute, parser_state, credentials_mode, - network::mojom::ReferrerPolicy::kDefault); + network::mojom::ReferrerPolicy::kDefault, + mojom::FetchImportanceMode::kImportanceAuto); Modulator* modulator = Modulator::From(ScriptController()->GetScriptState()); // Step 3. "Perform the internal module script graph fetching procedure ..."
diff --git a/third_party/blink/renderer/core/workers/worker_reporting_proxy.h b/third_party/blink/renderer/core/workers/worker_reporting_proxy.h index 8d53e77..2faa0a9 100644 --- a/third_party/blink/renderer/core/workers/worker_reporting_proxy.h +++ b/third_party/blink/renderer/core/workers/worker_reporting_proxy.h
@@ -79,6 +79,11 @@ // InstalledScriptsManager. virtual void DidFailToLoadInstalledClassicScript() {} + // Invoked on success to fetch the worker's main classic/module script from + // network. This is not called when the script is loaded from + // InstalledScriptsManager. + virtual void DidFetchScript() {} + // Invoked on failure to fetch the worker's classic script from network. This // is not called when the script is loaded from InstalledScriptsManager. virtual void DidFailToFetchClassicScript() {}
diff --git a/third_party/blink/renderer/core/workers/worklet_module_tree_client.cc b/third_party/blink/renderer/core/workers/worklet_module_tree_client.cc index e936e50..e96aa9f7 100644 --- a/third_party/blink/renderer/core/workers/worklet_module_tree_client.cc +++ b/third_party/blink/renderer/core/workers/worklet_module_tree_client.cc
@@ -26,6 +26,9 @@ // https://drafts.css-houdini.org/worklets/#fetch-and-invoke-a-worklet-script void WorkletModuleTreeClient::NotifyModuleTreeLoadFinished( ModuleScript* module_script) { + // TODO(nhiroki): Call reporting proxy functions appropriately (e.g., + // DidFailToFetchModuleScript(), WillEvaluateModuleScript()). + if (!module_script) { // Step 3: "If script is null, then queue a task on outsideSettings's // responsible event loop to run these steps:"
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_module_tree_client.cc b/third_party/blink/renderer/modules/service_worker/service_worker_module_tree_client.cc index 8d60af668..98fb21047 100644 --- a/third_party/blink/renderer/modules/service_worker/service_worker_module_tree_client.cc +++ b/third_party/blink/renderer/modules/service_worker/service_worker_module_tree_client.cc
@@ -38,6 +38,7 @@ worker_global_scope->close(); return; } + worker_reporting_proxy.DidFetchScript(); // (In the update case) Step 9: "Else, continue the rest of these steps after // the algorithm's asynchronous completion, with script being the asynchronous
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn index 16c8e154..36f63ad 100644 --- a/third_party/blink/renderer/platform/BUILD.gn +++ b/third_party/blink/renderer/platform/BUILD.gn
@@ -500,6 +500,7 @@ "data_resource_helper.h", "date_components.cc", "date_components.h", + "dom_node_id.h", "drag_image.cc", "drag_image.h", "exported/file_path_conversion.cc",
diff --git a/third_party/blink/renderer/platform/animation/compositor_float_animation_curve_test.cc b/third_party/blink/renderer/platform/animation/compositor_float_animation_curve_test.cc index e9693a2..ac990edc 100644 --- a/third_party/blink/renderer/platform/animation/compositor_float_animation_curve_test.cc +++ b/third_party/blink/renderer/platform/animation/compositor_float_animation_curve_test.cc
@@ -143,7 +143,7 @@ CubicBezierTimingFunction::EaseType::EASE)); for (int i = 0; i <= 4; ++i) { const double time = i * 0.25; - EXPECT_FLOAT_EQ(timing_function->GetValue(time), curve->GetValue(time)); + EXPECT_NEAR(timing_function->GetValue(time), curve->GetValue(time), 1e-7); } } @@ -178,7 +178,7 @@ CubicBezierTimingFunction::EaseType::EASE_IN)); for (int i = 0; i <= 4; ++i) { const double time = i * 0.25; - EXPECT_FLOAT_EQ(timing_function->GetValue(time), curve->GetValue(time)); + EXPECT_NEAR(timing_function->GetValue(time), curve->GetValue(time), 1e-7); } } @@ -198,7 +198,7 @@ CubicBezierTimingFunction::EaseType::EASE_OUT)); for (int i = 0; i <= 4; ++i) { const double time = i * 0.25; - EXPECT_FLOAT_EQ(timing_function->GetValue(time), curve->GetValue(time)); + EXPECT_NEAR(timing_function->GetValue(time), curve->GetValue(time), 1e-7); } } @@ -218,7 +218,7 @@ CubicBezierTimingFunction::EaseType::EASE_IN_OUT)); for (int i = 0; i <= 4; ++i) { const double time = i * 0.25; - EXPECT_FLOAT_EQ(timing_function->GetValue(time), curve->GetValue(time)); + EXPECT_NEAR(timing_function->GetValue(time), curve->GetValue(time), 1e-7); } } @@ -240,7 +240,7 @@ cc::CubicBezierTimingFunction::Create(x1, y1, x2, y2)); for (int i = 0; i <= 4; ++i) { const double time = i * 0.25; - EXPECT_FLOAT_EQ(timing_function->GetValue(time), curve->GetValue(time)); + EXPECT_NEAR(timing_function->GetValue(time), curve->GetValue(time), 1e-7); } } @@ -260,7 +260,7 @@ CubicBezierTimingFunction::EaseType::EASE)); for (int i = 0; i <= 4; ++i) { const double time = i * 0.25; - EXPECT_FLOAT_EQ(timing_function->GetValue(time), curve->GetValue(time)); + EXPECT_NEAR(timing_function->GetValue(time), curve->GetValue(time), 1e-7); } }
diff --git a/third_party/blink/renderer/platform/blob/blob_bytes_provider_test.cc b/third_party/blink/renderer/platform/blob/blob_bytes_provider_test.cc index f4e71ac3..1ff6f56e 100644 --- a/third_party/blink/renderer/platform/blob/blob_bytes_provider_test.cc +++ b/third_party/blink/renderer/platform/blob/blob_bytes_provider_test.cc
@@ -256,9 +256,9 @@ {10, 128 + 64}, // Parts of all three chunks. }; -INSTANTIATE_TEST_CASE_P(BlobBytesProviderTest, - RequestAsFile, - testing::ValuesIn(file_tests)); +INSTANTIATE_TEST_SUITE_P(BlobBytesProviderTest, + RequestAsFile, + testing::ValuesIn(file_tests)); TEST_F(BlobBytesProviderTest, RequestAsFile_MultipleChunks) { auto provider = CreateProvider();
diff --git a/third_party/blink/renderer/platform/geometry/region.cc b/third_party/blink/renderer/platform/geometry/region.cc index d0623339..a90abdc 100644 --- a/third_party/blink/renderer/platform/geometry/region.cc +++ b/third_party/blink/renderer/platform/geometry/region.cc
@@ -42,8 +42,8 @@ int height = (span + 1)->y - y; for (Shape::SegmentIterator segment = shape_.SegmentsBegin(span), - end = shape_.SegmentsEnd(span); - segment != end && segment + 1 != end; segment += 2) { + segment_end = shape_.SegmentsEnd(span); + segment != segment_end && segment + 1 != segment_end; segment += 2) { int x = *segment; int width = *(segment + 1) - x; @@ -77,8 +77,8 @@ continue; for (Shape::SegmentIterator segment = shape_.SegmentsBegin(span), - end = shape_.SegmentsEnd(span); - segment != end && segment + 1 != end; segment += 2) { + segment_end = shape_.SegmentsEnd(span); + segment != segment_end && segment + 1 != segment_end; segment += 2) { int x = *segment; int max_x = *(segment + 1); @@ -107,8 +107,8 @@ int height = (span + 1)->y - span->y; for (Shape::SegmentIterator segment = shape_.SegmentsBegin(span), - end = shape_.SegmentsEnd(span); - segment != end && segment + 1 != end; segment += 2) { + segment_end = shape_.SegmentsEnd(span); + segment != segment_end && segment + 1 != segment_end; segment += 2) { int width = *(segment + 1) - *segment; area += (uint64_t)height * (uint64_t)width; } @@ -334,8 +334,8 @@ printf("%6d: (", span->y); for (Shape::SegmentIterator segment = SegmentsBegin(span), - end = SegmentsEnd(span); - segment != end; ++segment) + segment_end = SegmentsEnd(span); + segment != segment_end; ++segment) printf("%d ", *segment); printf(")\n"); } @@ -432,16 +432,16 @@ // Iterate over all spans. while (spans1 != spans1_end && spans2 != spans2_end) { int y = 0; - int test = spans1->y - spans2->y; + int y_diff = spans1->y - spans2->y; - if (test <= 0) { + if (y_diff <= 0) { y = spans1->y; segments1 = shape1.SegmentsBegin(spans1); segments1_end = shape1.SegmentsEnd(spans1); ++spans1; } - if (test >= 0) { + if (y_diff >= 0) { y = spans2->y; segments2 = shape2.SegmentsBegin(spans2); @@ -462,15 +462,15 @@ // Now iterate over the segments in each span and construct a new vector of // segments. while (s1 != segments1_end && s2 != segments2_end) { - int test = *s1 - *s2; + int s_diff = *s1 - *s2; int x; - if (test <= 0) { + if (s_diff <= 0) { x = *s1; flag = flag ^ 1; ++s1; } - if (test >= 0) { + if (s_diff >= 0) { x = *s2; flag = flag ^ 2; ++s2;
diff --git a/third_party/blink/renderer/platform/graphics/animation_worklet_mutator_dispatcher_impl.cc b/third_party/blink/renderer/platform/graphics/animation_worklet_mutator_dispatcher_impl.cc index a76626e..50f2bac 100644 --- a/third_party/blink/renderer/platform/graphics/animation_worklet_mutator_dispatcher_impl.cc +++ b/third_party/blink/renderer/platform/graphics/animation_worklet_mutator_dispatcher_impl.cc
@@ -21,9 +21,9 @@ namespace { -int next_async_mutation_id = 0; +int g_next_async_mutation_id = 0; int GetNextAsyncMutationId() { - return next_async_mutation_id++; + return g_next_async_mutation_id++; } } // end namespace
diff --git a/third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.cc b/third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.cc index dc6ed8d62..4916b79 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.cc +++ b/third_party/blink/renderer/platform/graphics/compositing/content_layer_client_impl.cc
@@ -41,9 +41,9 @@ if (!transform) return 0; - auto it = context.transform_id_map.find(transform); - if (it != context.transform_id_map.end()) - return it->value; + auto transform_lookup_result = context.transform_id_map.find(transform); + if (transform_lookup_result != context.transform_id_map.end()) + return transform_lookup_result->value; int parent_id = GetTransformId(transform->Parent(), context); if (transform->Matrix().IsIdentity() && !transform->RenderingContextId()) { @@ -69,12 +69,13 @@ json->SetBoolean("flattenInheritedTransform", false); if (auto rendering_context = transform->RenderingContextId()) { - auto it = context.rendering_context_map.find(rendering_context); + auto context_lookup_result = + context.rendering_context_map.find(rendering_context); int rendering_id = context.rendering_context_map.size() + 1; - if (it == context.rendering_context_map.end()) + if (context_lookup_result == context.rendering_context_map.end()) context.rendering_context_map.Set(rendering_context, rendering_id); else - rendering_id = it->value; + rendering_id = context_lookup_result->value; json->SetInteger("renderingContext", rendering_id); }
diff --git a/third_party/blink/renderer/platform/graphics/compositor_element_id.cc b/third_party/blink/renderer/platform/graphics/compositor_element_id.cc index 3678cee..b80cf9e 100644 --- a/third_party/blink/renderer/platform/graphics/compositor_element_id.cc +++ b/third_party/blink/renderer/platform/graphics/compositor_element_id.cc
@@ -45,6 +45,7 @@ CompositorElementId PLATFORM_EXPORT CompositorElementIdFromDOMNodeId(DOMNodeId id) { + DCHECK_GE(id, 0); return CreateCompositorElementId( id, CompositorElementIdNamespace::kUniqueObjectId); }
diff --git a/third_party/blink/renderer/platform/graphics/compositor_element_id.h b/third_party/blink/renderer/platform/graphics/compositor_element_id.h index eeaeed8..43858166 100644 --- a/third_party/blink/renderer/platform/graphics/compositor_element_id.h +++ b/third_party/blink/renderer/platform/graphics/compositor_element_id.h
@@ -8,6 +8,7 @@ #include <unordered_set> #include "cc/trees/element_id.h" +#include "third_party/blink/renderer/platform/graphics/dom_node_id.h" #include "third_party/blink/renderer/platform/platform_export.h" namespace blink { @@ -35,7 +36,6 @@ using CompositorElementId = cc::ElementId; using ScrollbarId = uint64_t; using UniqueObjectId = uint64_t; -using DOMNodeId = uint64_t; using SyntheticEffectId = uint64_t; // Call this to get a globally unique object id for a newly allocated object.
diff --git a/third_party/blink/renderer/platform/graphics/compositor_element_id_test.cc b/third_party/blink/renderer/platform/graphics/compositor_element_id_test.cc index c3aeb9d4..225187d 100644 --- a/third_party/blink/renderer/platform/graphics/compositor_element_id_test.cc +++ b/third_party/blink/renderer/platform/graphics/compositor_element_id_test.cc
@@ -15,12 +15,23 @@ } TEST_F(CompositorElementIdTest, EncodeDecode) { - CompositorElementId element_id = CompositorElementIdFromUniqueObjectId(1); + auto element_id = CompositorElementIdFromUniqueObjectId(1); EXPECT_EQ(1u, IdFromCompositorElementId(element_id)); + EXPECT_EQ(CompositorElementIdNamespace::kUniqueObjectId, + NamespaceFromCompositorElementId(element_id)); element_id = CompositorElementIdFromUniqueObjectId( 1, CompositorElementIdNamespace::kPrimary); EXPECT_EQ(1u, IdFromCompositorElementId(element_id)); + EXPECT_EQ(CompositorElementIdNamespace::kPrimary, + NamespaceFromCompositorElementId(element_id)); +} + +TEST_F(CompositorElementIdTest, FromDOMNodeId) { + auto element_id = CompositorElementIdFromDOMNodeId(1); + EXPECT_EQ(1u, IdFromCompositorElementId(element_id)); + EXPECT_EQ(CompositorElementIdNamespace::kUniqueObjectId, + NamespaceFromCompositorElementId(element_id)); } } // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/dom_node_id.h b/third_party/blink/renderer/platform/graphics/dom_node_id.h new file mode 100644 index 0000000..0563dca --- /dev/null +++ b/third_party/blink/renderer/platform/graphics/dom_node_id.h
@@ -0,0 +1,19 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_DOM_NODE_ID_H_ +#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_DOM_NODE_ID_H_ + +namespace blink { + +// Uniquely identifies a DOM node. See renderer/core/dom/dom_node_ids.h. +// The DevTools protocol requires the type to be int, see +// renderer/core/inspector/browser_protocol-*.json. +using DOMNodeId = int; + +static const DOMNodeId kInvalidDOMNodeId = 0; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_DOM_NODE_ID_H_
diff --git a/third_party/blink/renderer/platform/loader/fetch/script_fetch_options.h b/third_party/blink/renderer/platform/loader/fetch/script_fetch_options.h index 4a24a92..f541334 100644 --- a/third_party/blink/renderer/platform/loader/fetch/script_fetch_options.h +++ b/third_party/blink/renderer/platform/loader/fetch/script_fetch_options.h
@@ -44,8 +44,7 @@ ParserDisposition parser_state, network::mojom::FetchCredentialsMode credentials_mode, network::mojom::ReferrerPolicy referrer_policy, - mojom::FetchImportanceMode importance = - mojom::FetchImportanceMode::kImportanceAuto) + mojom::FetchImportanceMode importance) : nonce_(nonce), integrity_metadata_(integrity_metadata), integrity_attribute_(integrity_attribute), @@ -97,7 +96,9 @@ const network::mojom::ReferrerPolicy referrer_policy_; // Priority Hints and a request's "importance" mode are currently - // non-standard. See https://crbug.com/821464. + // non-standard. See https://crbug.com/821464, and the HTML Standard issue + // https://github.com/whatwg/html/issues/3670 for some discussion on adding an + // "importance" member to the script fetch options struct. const mojom::FetchImportanceMode importance_; };
diff --git a/third_party/blink/renderer/platform/scheduler/BUILD.gn b/third_party/blink/renderer/platform/scheduler/BUILD.gn index 786897f..3257835 100644 --- a/third_party/blink/renderer/platform/scheduler/BUILD.gn +++ b/third_party/blink/renderer/platform/scheduler/BUILD.gn
@@ -24,7 +24,6 @@ "common/pollable_thread_safe_flag.cc", "common/pollable_thread_safe_flag.h", "common/post_cancellable_task.cc", - "common/post_cross_thread_task.cc", "common/process_state.cc", "common/process_state.h", "common/scheduler_helper.cc",
diff --git a/third_party/blink/renderer/platform/scheduler/common/post_cross_thread_task.cc b/third_party/blink/renderer/platform/scheduler/common/post_cross_thread_task.cc deleted file mode 100644 index bf8827b0..0000000 --- a/third_party/blink/renderer/platform/scheduler/common/post_cross_thread_task.cc +++ /dev/null
@@ -1,41 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h" - -#include "base/bind.h" - -namespace blink { - -namespace { - -void RunCrossThreadClosure(WTF::CrossThreadClosure task) { - std::move(task).Run(); -} - -} // namespace - -// In those functions, we must use plain base::BindOnce() because: -// -// * WTF::Bind() does thread checks which isn't compatible with our use case. -// * CrossThreadBind() returns WTF::CrossThreadFunction which isn't -// convertible to base::OnceClosure (this is actually a chicken-and-egg; -// we need base::BindOnce() as an escape hatch). -void PostCrossThreadTask(base::SequencedTaskRunner& task_runner, - const base::Location& location, - WTF::CrossThreadClosure task) { - task_runner.PostDelayedTask( - location, base::BindOnce(&RunCrossThreadClosure, std::move(task)), - base::TimeDelta()); -} - -void PostDelayedCrossThreadTask(base::SequencedTaskRunner& task_runner, - const base::Location& location, - WTF::CrossThreadClosure task, - base::TimeDelta delay) { - task_runner.PostDelayedTask( - location, base::BindOnce(&RunCrossThreadClosure, std::move(task)), delay); -} - -} // namespace blink
diff --git a/third_party/blink/renderer/platform/scheduler/common/throttling/task_queue_throttler_unittest.cc b/third_party/blink/renderer/platform/scheduler/common/throttling/task_queue_throttler_unittest.cc index 1927fb0..3828f8d 100644 --- a/third_party/blink/renderer/platform/scheduler/common/throttling/task_queue_throttler_unittest.cc +++ b/third_party/blink/renderer/platform/scheduler/common/throttling/task_queue_throttler_unittest.cc
@@ -174,9 +174,9 @@ DISALLOW_COPY_AND_ASSIGN(TaskQueueThrottlerWithAutoAdvancingTimeTest); }; -INSTANTIATE_TEST_CASE_P(, - TaskQueueThrottlerWithAutoAdvancingTimeTest, - testing::Bool()); +INSTANTIATE_TEST_SUITE_P(, + TaskQueueThrottlerWithAutoAdvancingTimeTest, + testing::Bool()); TEST_F(TaskQueueThrottlerTest, ThrottledTasksReportRealTime) { EXPECT_EQ(timer_queue_->GetTimeDomain()->Now(),
diff --git a/third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h b/third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h index f40cf47..acb9aece 100644 --- a/third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h +++ b/third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h
@@ -5,23 +5,29 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_PUBLIC_POST_CROSS_THREAD_TASK_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_PUBLIC_POST_CROSS_THREAD_TASK_H_ +#include <utility> #include "base/location.h" #include "base/sequenced_task_runner.h" #include "base/time/time.h" -#include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/functional.h" namespace blink { // For cross-thread posting. Can be called from any thread. -PLATFORM_EXPORT void PostCrossThreadTask(base::SequencedTaskRunner&, - const base::Location&, - WTF::CrossThreadClosure); +inline void PostCrossThreadTask(base::SequencedTaskRunner& task_runner, + const base::Location& location, + WTF::CrossThreadClosure task) { + task_runner.PostDelayedTask(location, ConvertToBaseCallback(std::move(task)), + base::TimeDelta()); +} -PLATFORM_EXPORT void PostDelayedCrossThreadTask(base::SequencedTaskRunner&, - const base::Location&, - WTF::CrossThreadClosure, - base::TimeDelta delay); +inline void PostDelayedCrossThreadTask(base::SequencedTaskRunner& task_runner, + const base::Location& location, + WTF::CrossThreadClosure task, + base::TimeDelta delay) { + task_runner.PostDelayedTask(location, ConvertToBaseCallback(std::move(task)), + delay); +} } // namespace blink
diff --git a/third_party/blink/renderer/platform/transforms/interpolated_transform_operation.cc b/third_party/blink/renderer/platform/transforms/interpolated_transform_operation.cc index 95d9ae3ba..2c15f0a 100644 --- a/third_party/blink/renderer/platform/transforms/interpolated_transform_operation.cc +++ b/third_party/blink/renderer/platform/transforms/interpolated_transform_operation.cc
@@ -40,7 +40,7 @@ return false; const InterpolatedTransformOperation* t = static_cast<const InterpolatedTransformOperation*>(&o); - return progress == t->progress && from == t->from && to == t->to; + return progress_ == t->progress_ && from_ == t->from_ && to_ == t->to_; } void InterpolatedTransformOperation::Apply( @@ -48,10 +48,10 @@ const FloatSize& border_box_size) const { TransformationMatrix from_transform; TransformationMatrix to_transform; - from.ApplyRemaining(border_box_size, starting_index, from_transform); - to.ApplyRemaining(border_box_size, starting_index, to_transform); + from_.ApplyRemaining(border_box_size, starting_index_, from_transform); + to_.ApplyRemaining(border_box_size, starting_index_, to_transform); - to_transform.Blend(from_transform, progress); + to_transform.Blend(from_transform, progress_); transform.Multiply(to_transform); }
diff --git a/third_party/blink/renderer/platform/transforms/interpolated_transform_operation.h b/third_party/blink/renderer/platform/transforms/interpolated_transform_operation.h index 9020146..9a2875e7 100644 --- a/third_party/blink/renderer/platform/transforms/interpolated_transform_operation.h +++ b/third_party/blink/renderer/platform/transforms/interpolated_transform_operation.h
@@ -65,29 +65,30 @@ double progress, bool blend_to_identity = false) override; scoped_refptr<TransformOperation> Zoom(double factor) final { - return Create(from.Zoom(factor), to.Zoom(factor), starting_index, progress); + return Create(from_.Zoom(factor), to_.Zoom(factor), starting_index_, + progress_); } bool DependsOnBoxSize() const override { - return from.DependsOnBoxSize() || to.DependsOnBoxSize(); + return from_.DependsOnBoxSize() || to_.DependsOnBoxSize(); } InterpolatedTransformOperation(const TransformOperations& from, const TransformOperations& to, int starting_index, double progress) - : from(from), - to(to), - starting_index(starting_index), - progress(progress) {} + : from_(from), + to_(to), + starting_index_(starting_index), + progress_(progress) {} - const TransformOperations from; - const TransformOperations to; + const TransformOperations from_; + const TransformOperations to_; // Number of operations to skip from the start of each list. By spec, // pairwise interpolations are performed for compatible operations at the // start of the list and matrix interpolation for the remainder. - int starting_index; - double progress; + int starting_index_; + double progress_; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/transforms/transform_operations.cc b/third_party/blink/renderer/platform/transforms/transform_operations.cc index 213314d..7149321 100644 --- a/third_party/blink/renderer/platform/transforms/transform_operations.cc +++ b/third_party/blink/renderer/platform/transforms/transform_operations.cc
@@ -215,14 +215,13 @@ to_degrees); FloatPoint3D from_point = from_matrix.MapPoint(point); - FloatPoint3D to_point = to_matrix.MapPoint(point); if (box.IsEmpty()) box.SetOrigin(from_point); else box.ExpandTo(from_point); - box.ExpandTo(to_point); + box.ExpandTo(to_matrix.MapPoint(point)); switch (from_transform.GetType()) { case TransformOperation::kRotateX: @@ -415,14 +414,14 @@ FloatBox from_box = *bounds; bool first = true; - for (size_t i = 0; i < 2; ++i) { - for (size_t j = 0; j < 2; ++j) { - for (size_t k = 0; k < 2; ++k) { + for (size_t j = 0; j < 2; ++j) { + for (size_t k = 0; k < 2; ++k) { + for (size_t m = 0; m < 2; ++m) { FloatBox bounds_for_arc; FloatPoint3D corner(from_box.X(), from_box.Y(), from_box.Z()); corner += - FloatPoint3D(i * from_box.Width(), j * from_box.Height(), - k * from_box.Depth()); + FloatPoint3D(j * from_box.Width(), k * from_box.Height(), + m * from_box.Depth()); BoundingBoxForArc(corner, *from_rotation, *to_rotation, min_progress, max_progress, bounds_for_arc); if (first) {
diff --git a/third_party/blink/renderer/platform/wtf/doubly_linked_list.h b/third_party/blink/renderer/platform/wtf/doubly_linked_list.h index 0d070336..a38511a 100644 --- a/third_party/blink/renderer/platform/wtf/doubly_linked_list.h +++ b/third_party/blink/renderer/platform/wtf/doubly_linked_list.h
@@ -26,7 +26,6 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_DOUBLY_LINKED_LIST_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_DOUBLY_LINKED_LIST_H_ -#include "base/callback.h" #include "base/macros.h" #include "third_party/blink/renderer/platform/wtf/allocator.h" #include "third_party/blink/renderer/platform/wtf/wtf_size_t.h" @@ -99,10 +98,6 @@ explicit operator bool() const { return is_new_entry; } }; - // This function should return -1 if the first argument is strictly - // less than the second, 0 if they are equal or 1 otherwise. - using CompareFunc = base::RepeatingCallback<int(T*, T*)>; - // The following two functions can be used to implement a sorted // version of the doubly linked list. It's guaranteed that the list // will be sorted by only using Insert(). However the caller is the @@ -110,8 +105,14 @@ // InsertAfter() is used. The main use case of the latter is to // cheaply insert several consecutive items without having to // traverse the whole list. + // + // CompareFunc should return -1 if the first argument is strictly + // less than the second, 0 if they are equal or 1 otherwise. + template <typename CompareFunc> AddResult Insert(std::unique_ptr<T>, const CompareFunc&); AddResult InsertAfter(std::unique_ptr<T> node, T* insertion_point); + + template <typename CompareFunc> AddResult Insert(T*, const CompareFunc&); AddResult InsertAfter(T* node, T* insertion_point); @@ -225,6 +226,7 @@ } template <typename T, typename PointerType> +template <typename CompareFunc> inline typename DoublyLinkedList<T, PointerType>::AddResult DoublyLinkedList<T, PointerType>::Insert(std::unique_ptr<T> node, const CompareFunc& compare_func) { @@ -236,15 +238,16 @@ } template <typename T, typename PointerType> +template <typename CompareFunc> inline typename DoublyLinkedList<T, PointerType>::AddResult DoublyLinkedList<T, PointerType>::Insert(T* node, const CompareFunc& compare_func) { DCHECK(node); T* iter = head_; - while (iter && compare_func.Run(iter, node) < 0) + while (iter && compare_func(iter, node) < 0) iter = iter->Next(); - if (iter && !compare_func.Run(iter, node)) + if (iter && !compare_func(iter, node)) return {iter, false}; return InsertAfter(node, iter ? iter->Prev() : tail_);
diff --git a/third_party/blink/renderer/platform/wtf/doubly_linked_list_test.cc b/third_party/blink/renderer/platform/wtf/doubly_linked_list_test.cc index b9b10d7..69621b7 100644 --- a/third_party/blink/renderer/platform/wtf/doubly_linked_list_test.cc +++ b/third_party/blink/renderer/platform/wtf/doubly_linked_list_test.cc
@@ -71,8 +71,7 @@ int i) { size_t current_size = list_.size(); - auto result = - list_.Insert(std::make_unique<TestNode>(i), BindRepeating(CompareInt)); + auto result = list_.Insert(std::make_unique<TestNode>(i), CompareInt); EXPECT_EQ(list_.size(), result.is_new_entry ? current_size + 1 : current_size); EXPECT_EQ(test_node_counter, @@ -100,7 +99,7 @@ delete list_.RemoveHead(); TestNode node_stack(-1); - list_.Insert(&node_stack, BindRepeating(CompareInt)); + list_.Insert(&node_stack, CompareInt); EXPECT_EQ(1ul, list_.size()); EXPECT_EQ(1ul, test_node_counter); EXPECT_EQ(list_.Head(), list_.Tail()); @@ -117,8 +116,7 @@ int items[6] = {2, -1, 3, 4, 0, 1}; for (int item : items) { - auto result = list_.Insert(std::make_unique<TestNode>(item), - BindRepeating(CompareInt)); + auto result = list_.Insert(std::make_unique<TestNode>(item), CompareInt); EXPECT_TRUE(result.is_new_entry); } EXPECT_EQ(num_items, list_.size()); @@ -134,8 +132,7 @@ int items[6] = {0, 1, 2, 3, 4, 5}; for (int item : items) { - auto result = list_.Insert(std::make_unique<TestNode>(item), - BindRepeating(CompareInt)); + auto result = list_.Insert(std::make_unique<TestNode>(item), CompareInt); EXPECT_TRUE(result.is_new_entry); } EXPECT_EQ(num_items, list_.size());
diff --git a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG index f6d885e..f1f0bd5 100644 --- a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG +++ b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG
@@ -262,10 +262,13 @@ crbug.com/591099 external/wpt/fetch/api/request/request-keepalive-quota.html?include=slow-2 [ Pass ] crbug.com/591099 external/wpt/fullscreen/api/element-ready-check-containing-iframe-manual.html [ Pass ] crbug.com/591099 external/wpt/geolocation-API/PositionOptions.https.html [ Failure Pass ] -crbug.com/591099 external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects.html [ Pass ] +crbug.com/591099 external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects.html [ Crash Pass ] crbug.com/591099 external/wpt/html/browsers/the-window-object/window-open-noopener.html?_parent [ Pass ] crbug.com/591099 external/wpt/html/browsers/the-window-object/window-open-noopener.html?_top [ Pass ] +crbug.com/591099 external/wpt/html/semantics/embedded-content/the-embed-element/embed-represent-nothing-02.html [ Pass ] crbug.com/845902 external/wpt/quirks/line-height-trailing-collapsable-whitespace.html [ Pass ] +crbug.com/591099 external/wpt/webmessaging/with-ports/018.html [ Pass ] +crbug.com/591099 external/wpt/webmessaging/without-ports/018.html [ Pass ] crbug.com/591099 fast/backgrounds/quirks-mode-line-box-backgrounds.html [ Failure ] crbug.com/591099 fast/borders/inline-mask-overlay-image-outset-vertical-rl.html [ Failure ] crbug.com/591099 fast/canvas/OffscreenCanvas-copyImage.html [ Failure Pass ] @@ -278,7 +281,7 @@ crbug.com/591099 fast/events/touch/compositor-touch-hit-rects-list-translate.html [ Failure ] crbug.com/591099 fast/events/touch/compositor-touch-hit-rects.html [ Failure ] crbug.com/889721 fast/inline/outline-continuations.html [ Failure ] -crbug.com/591099 fast/replaced/replaced-breaking.html [ Failure Pass ] +crbug.com/591099 fast/replaced/replaced-breaking.html [ Failure ] crbug.com/591099 fast/text/descent-clip-in-scaled-page.html [ Failure ] crbug.com/899902 fast/text/ellipsis-with-self-painting-layer.html [ Pass ] crbug.com/796943 fast/text/international/shape-across-elements-simple.html [ Pass ] @@ -286,13 +289,13 @@ crbug.com/591099 fast/writing-mode/auto-sizing-orthogonal-flows.html [ Failure ] crbug.com/591099 fast/writing-mode/percentage-height-orthogonal-writing-modes.html [ Failure ] crbug.com/591099 fast/writing-mode/table-percent-width-quirk.html [ Pass ] -crbug.com/591099 http/tests/html/validation-bubble-oopif-clip.html [ Failure ] +crbug.com/591099 http/tests/devtools/tracing-session-id.js [ Failure Pass ] +crbug.com/591099 http/tests/html/validation-bubble-oopif-clip.html [ Failure Pass ] crbug.com/591099 http/tests/images/image-decode-in-frame.html [ Pass ] crbug.com/591099 http/tests/images/restyle-decode-error.html [ Failure ] crbug.com/591099 http/tests/media/autoplay/document-user-activation-cross-origin-feature-policy-disabled.html [ Failure Pass ] crbug.com/591099 inspector-protocol/dom-snapshot/dom-snapshot-getSnapshot-pseudo-element.js [ Failure ] crbug.com/591099 media/autoplay/webaudio-audio-context-resume.html [ Failure Pass ] -crbug.com/591099 paint/float/float-under-inline-self-painting-change.html [ Failure Pass ] crbug.com/591099 paint/invalidation/flexbox/scrollbars-changed.html [ Failure ] crbug.com/835484 paint/invalidation/outline/inline-focus.html [ Failure ] crbug.com/591099 paint/invalidation/overflow/opacity-change-on-overflow-float.html [ Failure ] @@ -315,11 +318,12 @@ crbug.com/591099 virtual/display-lock/display-lock/lock-before-append/measure-updated-layout.html [ Failure ] crbug.com/591099 virtual/exotic-color-space/ [ Skip ] crbug.com/591099 virtual/gpu-rasterization/images/color-profile-image-filter-all.html [ Pass ] -crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-copyImage.html [ Failure Pass ] +crbug.com/591099 virtual/gpu/fast/canvas/OffscreenCanvas-copyImage.html [ Pass ] crbug.com/591099 virtual/layout_ng/ [ Skip ] crbug.com/824918 virtual/layout_ng_experimental/ [ Skip ] crbug.com/591099 virtual/mouseevent_fractional/fast/events/touch/compositor-touch-hit-rects-continuation.html [ Failure ] crbug.com/591099 virtual/new-remote-playback-pipeline/ [ Skip ] +crbug.com/591099 virtual/not-site-per-process/http/tests/devtools/isolated-code-cache/same-origin-test.js [ Failure Pass ] crbug.com/591099 virtual/outofblink-cors-ns/external/wpt/fetch/api/redirect/redirect-count.any.html [ Pass ] crbug.com/591099 virtual/outofblink-cors-ns/external/wpt/fetch/api/redirect/redirect-count.any.worker.html [ Pass ] crbug.com/591099 virtual/outofblink-cors-ns/external/wpt/fetch/api/request/request-keepalive-quota.html?include=slow-2 [ Pass ] @@ -330,4 +334,3 @@ crbug.com/591099 virtual/stable/ [ Skip ] crbug.com/591099 virtual/threaded/ [ Skip ] crbug.com/591099 virtual/user-activation-v2/fast/events/touch/compositor-touch-hit-rects-continuation.html [ Failure ] -crbug.com/591099 virtual/user-activation-v2/fast/events/touch/gesture/touch-gesture-scroll-listbox.html [ Failure Pass ]
diff --git a/third_party/blink/web_tests/MSANExpectations b/third_party/blink/web_tests/MSANExpectations index 84fc4ec..8752f2b6 100644 --- a/third_party/blink/web_tests/MSANExpectations +++ b/third_party/blink/web_tests/MSANExpectations
@@ -215,3 +215,6 @@ crbug.com/914900 [ Linux ] http/tests/devtools/network/preview-searchable.js [ Pass Timeout ] crbug.com/914900 [ Linux ] virtual/outofblink-cors-ns/external/wpt/fetch/api/idl.any.sharedworker.html [ Pass Timeout ] crbug.com/914900 [ Linux ] virtual/outofblink-cors/external/wpt/xhr/idlharness.any.worker.html [ Pass Timeout ] + +# Sheriff 2019-01-28 +crbug.com/925600 [ Linux ] external/wpt/webrtc-quic/RTCQuicStream.https.html [ Pass Timeout ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index bd4d7b0..c5a9bbbe 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -5858,3 +5858,22 @@ # Sheriff 2019-01-25 crbug.com/925325 [ Mac ] storage/indexeddb/index-population.html [ Pass Failure ] + +# Sheriff 2019-01-28 +crbug.com/925866 [ Mac10.10 ] fast/text/atsui-spacing-features.html [ Failure ] +crbug.com/925866 [ Mac10.10 ] fast/text/emphasis-complex.html [ Failure ] +crbug.com/925866 [ Mac10.10 ] fast/text/international/hebrew-vowels.html [ Failure ] +crbug.com/925866 [ Mac10.10 ] svg/text/combining-character-queries.html [ Failure ] +crbug.com/925866 [ Mac10.10 ] svg/text/ligature-queries.html [ Failure ] +crbug.com/925866 [ Mac10.11 ] fast/text/atsui-spacing-features.html [ Failure ] +crbug.com/925866 [ Mac10.11 ] fast/text/emphasis-complex.html [ Failure ] +crbug.com/925866 [ Mac10.11 ] fast/text/international/hebrew-vowels.html [ Failure ] +crbug.com/925866 [ Mac10.11 ] svg/text/combining-character-queries.html [ Failure ] +crbug.com/925866 [ Mac10.11 ] svg/text/ligature-queries.html [ Failure ] +crbug.com/925866 [ Mac10.11 ] svg/text/surrogate-pair-queries.html [ Failure ] +crbug.com/925866 [ Mac10.12 ] fast/text/atsui-spacing-features.html [ Failure ] +crbug.com/925866 [ Mac10.12 ] fast/text/emphasis-complex.html [ Failure ] +crbug.com/925866 [ Mac10.12 ] fast/text/international/hebrew-vowels.html [ Failure ] +crbug.com/925866 [ Mac10.12 ] svg/text/combining-character-queries.html [ Failure ] +crbug.com/925866 [ Mac10.12 ] svg/text/ligature-queries.html [ Failure ] +crbug.com/925866 [ Mac10.12 ] svg/text/surrogate-pair-queries.html [ Failure ]
diff --git a/third_party/blink/web_tests/display-lock/lock-after-append/acquire-immediate-update-and-commit-expected.html b/third_party/blink/web_tests/display-lock/lock-after-append/acquire-immediate-update-and-commit-expected.html deleted file mode 100644 index 9801e1a..0000000 --- a/third_party/blink/web_tests/display-lock/lock-after-append/acquire-immediate-update-and-commit-expected.html +++ /dev/null
@@ -1,18 +0,0 @@ -<!doctype HTML> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log">PASS</div> -<div id="container"><div id="child"></div></div>
diff --git a/third_party/blink/web_tests/display-lock/lock-after-append/acquire-immediate-update-and-commit.html b/third_party/blink/web_tests/display-lock/lock-after-append/acquire-immediate-update-and-commit.html deleted file mode 100644 index ccff550..0000000 --- a/third_party/blink/web_tests/display-lock/lock-after-append/acquire-immediate-update-and-commit.html +++ /dev/null
@@ -1,50 +0,0 @@ -<!doctype HTML> - -<!-- -Runs an acquire, and calls updateAndCommit without waiting for the acquire promise. ---> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> -<div id="container"></div> - -<script> -// TODO(vmpstr): In WPT this needs to be replaced with reftest-wait. -if (window.testRunner) - window.testRunner.waitUntilDone(); - -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - if (window.testRunner) - window.testRunner.notifyDone(); -} - -function runTest() { - let container = document.getElementById("container"); - container.displayLock.acquire({ timeout: Infinity }); - - let child = document.createElement("div"); - child.id = "child"; - container.appendChild(child); - - container.displayLock.updateAndCommit().then( - () => { finishTest("PASS"); }, - () => { finishTest("FAIL"); }); -} - -window.onload = runTest; -</script>
diff --git a/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-and-commit-expected.html b/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-and-commit-expected.html deleted file mode 100644 index 9801e1a..0000000 --- a/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-and-commit-expected.html +++ /dev/null
@@ -1,18 +0,0 @@ -<!doctype HTML> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log">PASS</div> -<div id="container"><div id="child"></div></div>
diff --git a/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-and-commit.html b/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-and-commit.html deleted file mode 100644 index 2ff1ffd..0000000 --- a/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-and-commit.html +++ /dev/null
@@ -1,52 +0,0 @@ -<!doctype HTML> - -<!-- -Runs an acquire, appends a child, and calls updateAndCommit. ---> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> - -<script> -// TODO(vmpstr): In WPT this needs to be replaced with reftest-wait. -if (window.testRunner) - window.testRunner.waitUntilDone(); - -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - if (window.testRunner) - window.testRunner.notifyDone(); -} - -function runTest() { - let container = document.createElement("div"); - container.displayLock.acquire({ timeout: Infinity }).then(() => { - let child = document.createElement("div"); - child.id = "child"; - container.appendChild(child); - - container.id = "container"; - document.body.appendChild(container); - - container.displayLock.updateAndCommit().then( - () => { finishTest("PASS"); }, - () => { finishTest("FAIL"); }); - }); -} - -window.onload = runTest; -</script>
diff --git a/third_party/blink/web_tests/display-lock/lock-before-append/commit-followed-by-update-and-commit-expected.html b/third_party/blink/web_tests/display-lock/lock-before-append/commit-followed-by-update-and-commit-expected.html deleted file mode 100644 index 9801e1a..0000000 --- a/third_party/blink/web_tests/display-lock/lock-before-append/commit-followed-by-update-and-commit-expected.html +++ /dev/null
@@ -1,18 +0,0 @@ -<!doctype HTML> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log">PASS</div> -<div id="container"><div id="child"></div></div>
diff --git a/third_party/blink/web_tests/display-lock/lock-before-append/commit-followed-by-update-and-commit.html b/third_party/blink/web_tests/display-lock/lock-before-append/commit-followed-by-update-and-commit.html deleted file mode 100644 index ca6f5084..0000000 --- a/third_party/blink/web_tests/display-lock/lock-before-append/commit-followed-by-update-and-commit.html +++ /dev/null
@@ -1,48 +0,0 @@ -<!doctype HTML> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> - -<script> -// TODO(vmpstr): In WPT this needs to be replaced with reftest-wait. -if (window.testRunner) - window.testRunner.waitUntilDone(); - -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - if (window.testRunner) - window.testRunner.notifyDone(); -} - -function runTest() { - let container = document.createElement("div"); - container.displayLock.acquire({ timeout: Infinity }).then(() => { - let child = document.createElement("div"); - child.id = "child"; - container.appendChild(child); - - container.id = "container"; - document.body.appendChild(container); - - let first_promise = container.displayLock.commit(); - let second_promise = container.displayLock.updateAndCommit(); - Promise.all([first_promise, second_promise]).then(() => finishTest("PASS")); - }); -} - -window.onload = runTest; -</script>
diff --git a/third_party/blink/web_tests/display-lock/lock-before-append/multiple-update-and-commit-expected.html b/third_party/blink/web_tests/display-lock/lock-before-append/multiple-update-and-commit-expected.html deleted file mode 100644 index 9801e1a..0000000 --- a/third_party/blink/web_tests/display-lock/lock-before-append/multiple-update-and-commit-expected.html +++ /dev/null
@@ -1,18 +0,0 @@ -<!doctype HTML> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log">PASS</div> -<div id="container"><div id="child"></div></div>
diff --git a/third_party/blink/web_tests/display-lock/lock-before-append/multiple-update-and-commit.html b/third_party/blink/web_tests/display-lock/lock-before-append/multiple-update-and-commit.html deleted file mode 100644 index f881f209..0000000 --- a/third_party/blink/web_tests/display-lock/lock-before-append/multiple-update-and-commit.html +++ /dev/null
@@ -1,50 +0,0 @@ -<!doctype HTML> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> - -<script> -// TODO(vmpstr): In WPT this needs to be replaced with reftest-wait. -if (window.testRunner) - window.testRunner.waitUntilDone(); - -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - if (window.testRunner) - window.testRunner.notifyDone(); -} - -function runTest() { - let container = document.createElement("div"); - container.displayLock.acquire({ timeout: Infinity }).then(() => { - let child = document.createElement("div"); - child.id = "child"; - container.appendChild(child); - - container.id = "container"; - document.body.appendChild(container); - - let promises = [] - for (let i = 0; i < 10; ++i) { - promises.push(container.displayLock.updateAndCommit()); - } - Promise.all(promises).then(() => finishTest("PASS")); - }); -} - -window.onload = runTest; -</script>
diff --git a/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit-expected.html b/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit-expected.html deleted file mode 100644 index a1a74ba..0000000 --- a/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit-expected.html +++ /dev/null
@@ -1,3 +0,0 @@ -<!doctype HTML> - -<div id="log">PASS</div>
diff --git a/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit-followed-by-commit-expected.html b/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit-followed-by-commit-expected.html deleted file mode 100644 index 9801e1a..0000000 --- a/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit-followed-by-commit-expected.html +++ /dev/null
@@ -1,18 +0,0 @@ -<!doctype HTML> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log">PASS</div> -<div id="container"><div id="child"></div></div>
diff --git a/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit-followed-by-commit.html b/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit-followed-by-commit.html deleted file mode 100644 index 9e56578f..0000000 --- a/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit-followed-by-commit.html +++ /dev/null
@@ -1,48 +0,0 @@ -<!doctype HTML> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> - -<script> -// TODO(vmpstr): In WPT this needs to be replaced with reftest-wait. -if (window.testRunner) - window.testRunner.waitUntilDone(); - -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - if (window.testRunner) - window.testRunner.notifyDone(); -} - -function runTest() { - let container = document.createElement("div"); - container.displayLock.acquire({ timeout: Infinity }).then(() => { - let child = document.createElement("div"); - child.id = "child"; - container.appendChild(child); - - container.id = "container"; - document.body.appendChild(container); - - let first_promise = container.displayLock.updateAndCommit(); - let second_promise = container.displayLock.commit(); - Promise.all([first_promise, second_promise]).then(() => finishTest("PASS")); - }); -} - -window.onload = runTest; -</script>
diff --git a/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit-followed-by-update-expected.html b/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit-followed-by-update-expected.html deleted file mode 100644 index 9801e1a..0000000 --- a/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit-followed-by-update-expected.html +++ /dev/null
@@ -1,18 +0,0 @@ -<!doctype HTML> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log">PASS</div> -<div id="container"><div id="child"></div></div>
diff --git a/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit-followed-by-update.html b/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit-followed-by-update.html deleted file mode 100644 index f0d2b63..0000000 --- a/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit-followed-by-update.html +++ /dev/null
@@ -1,48 +0,0 @@ -<!doctype HTML> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> - -<script> -// TODO(vmpstr): In WPT this needs to be replaced with reftest-wait. -if (window.testRunner) - window.testRunner.waitUntilDone(); - -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - if (window.testRunner) - window.testRunner.notifyDone(); -} - -function runTest() { - let container = document.createElement("div"); - container.displayLock.acquire({ timeout: Infinity }).then(() => { - let child = document.createElement("div"); - child.id = "child"; - container.appendChild(child); - - container.id = "container"; - document.body.appendChild(container); - - let first_promise = container.displayLock.updateAndCommit(); - let second_promise = container.displayLock.update(); - Promise.all([first_promise, second_promise]).then(() => finishTest("PASS")); - }); -} - -window.onload = runTest; -</script>
diff --git a/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit.html b/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit.html deleted file mode 100644 index 0ea2539..0000000 --- a/third_party/blink/web_tests/display-lock/lock-before-append/update-and-commit.html +++ /dev/null
@@ -1,39 +0,0 @@ -<!doctype HTML> - -<!-- -Runs an updateAndCommit() without acquiring, which fails. ---> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -</style> - -<div id="log"></div> - -<script> -// TODO(vmpstr): In WPT this needs to be replaced with reftest-wait. -if (window.testRunner) - window.testRunner.waitUntilDone(); - -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - if (window.testRunner) - window.testRunner.notifyDone(); -} - -function runTest() { - let container = document.createElement("div"); - container.id = "container"; - container.displayLock.updateAndCommit().then( - () => { finishTest("FAIL"); }, - () => { finishTest("PASS"); }); -} - -window.onload = runTest; -</script>
diff --git a/third_party/blink/web_tests/display-lock/lock-before-append/update-followed-by-update-and-commit-expected.html b/third_party/blink/web_tests/display-lock/lock-before-append/update-followed-by-update-and-commit-expected.html deleted file mode 100644 index 9801e1a..0000000 --- a/third_party/blink/web_tests/display-lock/lock-before-append/update-followed-by-update-and-commit-expected.html +++ /dev/null
@@ -1,18 +0,0 @@ -<!doctype HTML> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log">PASS</div> -<div id="container"><div id="child"></div></div>
diff --git a/third_party/blink/web_tests/display-lock/lock-before-append/update-followed-by-update-and-commit.html b/third_party/blink/web_tests/display-lock/lock-before-append/update-followed-by-update-and-commit.html deleted file mode 100644 index 0e40582..0000000 --- a/third_party/blink/web_tests/display-lock/lock-before-append/update-followed-by-update-and-commit.html +++ /dev/null
@@ -1,48 +0,0 @@ -<!doctype HTML> - -<style> -#container { - contain: style layout; - width: 150px; - height: 150px; - background: lightblue; -} -#child { - width: 50px; - height: 50px; - background: lightgreen; -} -</style> - -<div id="log"></div> - -<script> -// TODO(vmpstr): In WPT this needs to be replaced with reftest-wait. -if (window.testRunner) - window.testRunner.waitUntilDone(); - -function finishTest(status_string) { - if (document.getElementById("log").innerHTML === "") - document.getElementById("log").innerHTML = status_string; - if (window.testRunner) - window.testRunner.notifyDone(); -} - -function runTest() { - let container = document.createElement("div"); - container.displayLock.acquire({ timeout: Infinity }).then(() => { - let child = document.createElement("div"); - child.id = "child"; - container.appendChild(child); - - container.id = "container"; - document.body.appendChild(container); - - let first_promise = container.displayLock.update(); - let second_promise = container.displayLock.updateAndCommit(); - Promise.all([first_promise, second_promise]).then(() => finishTest("PASS")); - }); -} - -window.onload = runTest; -</script>
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_5.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_5.json index e293a12..73eab32 100644 --- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_5.json +++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_5.json
@@ -155568,6 +155568,11 @@ {} ] ], + "dom/events/EventListener-handleEvent-expected.txt": [ + [ + {} + ] + ], "dom/events/EventListener-incumbent-global-subframe-1.sub.html": [ [ {} @@ -207559,6 +207564,12 @@ {} ] ], + "css/css-device-adapt/documentElement-clientWidth-on-minimum-scale-size.tentative.html": [ + [ + "/css/css-device-adapt/documentElement-clientWidth-on-minimum-scale-size.tentative.html", + {} + ] + ], "css/css-device-adapt/idlharness.html": [ [ "/css/css-device-adapt/idlharness.html", @@ -333450,6 +333461,10 @@ "f04eba57ce450541e9283f62718dd3ed71f3631c", "support" ], + "css/css-device-adapt/documentElement-clientWidth-on-minimum-scale-size.tentative.html": [ + "74e2172510f8496bda64bb2ae3600b0e165347fd", + "testharness" + ], "css/css-device-adapt/idlharness.html": [ "b9cca1bb7ee2fbee354ec90a3afc5e8e33609bc8", "testharness" @@ -389062,8 +389077,12 @@ "b44bc332859da52fad9015a06119b8dd93782c7a", "testharness" ], + "dom/events/EventListener-handleEvent-expected.txt": [ + "5269d0c706742beeafd9b5be98bf7f4b08e1c4ac", + "support" + ], "dom/events/EventListener-handleEvent.html": [ - "b33b030a641dd0d2a4e1319f366e3db975e9dc3f", + "6630f273fff4b450d1fcc425828b5f1f53357e54", "testharness" ], "dom/events/EventListener-incumbent-global-1.sub.html": [ @@ -416183,7 +416202,7 @@ "support" ], "html/webappapis/scripting/events/event-handler-attributes-frameset-window.html": [ - "ecfe90e88ea404604dfaeb649b8067c15fc03d5a", + "b583eca52da2b9b5e58fb25e73b3766452b7c472", "testharness" ], "html/webappapis/scripting/events/event-handler-attributes-window-body-expected.txt": [ @@ -417987,7 +418006,7 @@ "support" ], "interfaces/webxr.idl": [ - "3054500f5903f72214b4bd8984488a186b2a5d8a", + "63643a11b6b0cb7ecf7aabc19b03edf1d47a6642", "support" ], "interfaces/worklets.idl": [ @@ -458203,7 +458222,7 @@ "support" ], "webxr/idlharness.https.window-expected.txt": [ - "9934c0e74341e721507df3958ae09289e90cbfc2", + "1e286cea44f62c70bb4ef8bf74557209d51223cb", "support" ], "webxr/idlharness.https.window.js": [
diff --git a/third_party/blink/web_tests/external/wpt/css/css-device-adapt/documentElement-clientWidth-on-minimum-scale-size.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-device-adapt/documentElement-clientWidth-on-minimum-scale-size.tentative.html new file mode 100644 index 0000000..74e2172 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-device-adapt/documentElement-clientWidth-on-minimum-scale-size.tentative.html
@@ -0,0 +1,29 @@ +<!doctype html> +<meta charset=utf-8> +<meta name="viewport" content="width=device-width minimum-scale=0.5"> +<link rel="help" href="https://drafts.csswg.org/css-device-adapt/"> +<style> +html { + overflow: hidden; +} +body { + margin: 0; +} +div { + height: 200%; + position: absolute; +} +</style> +<title></title> +<div style="width: 200%;"></div> +<div id="reference" style="width: 100%;"></div> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script> +'use strict'; +test(() => { + assert_equals(document.documentElement.clientWidth, reference.clientWidth, + 'documentElement clientWidth should be 100%'); +}, 'documentElement clientWidth should be equal to device-width even if ' + + 'overflow:hidden region is visible'); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-display/display-none-inline-img-ref.html b/third_party/blink/web_tests/external/wpt/css/css-display/display-none-inline-img-ref.html new file mode 100644 index 0000000..a3e7369a --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-display/display-none-inline-img-ref.html
@@ -0,0 +1,46 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Test Reference</title> +<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> +<style> +.carousel { + position: relative; + overflow: hidden; + height: 300px; +} + +.scroller { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + overflow: auto; +} + +.slides { + width: 200%; + display: flex; +} + +.slide { + flex: 0 0 50%; + contain: paint; +} + +img { + width: 300px; + height: 250px; +} +</style> + +<div class="carousel"> + <div class="scroller"> + <div class="slides"> + <div class="slide"> + <img id="image" src="/images/green-256x256.png"> + </div> + </div> + </div> +</div> +
diff --git a/third_party/blink/web_tests/external/wpt/css/css-display/display-none-inline-img.html b/third_party/blink/web_tests/external/wpt/css/css-display/display-none-inline-img.html new file mode 100644 index 0000000..f97ca7bb --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-display/display-none-inline-img.html
@@ -0,0 +1,70 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Test: display: none then inline on img</title> +<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-display-3/#valdef-display-inline"> +<link rel="match" href="display-none-inline-img-ref.html"> +<html class="reftest-wait"> +<style> +.carousel { + position: relative; + overflow: hidden; + height: 300px; +} + +.scroller { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + overflow: auto; +} + +.slides { + width: 200%; + display: flex; +} + +.slide { + flex: 0 0 50%; + contain: paint; +} + +img { + width: 300px; + height: 250px; +} +</style> + +<div class="carousel"> + <div class="scroller"> + <div class="slides"> + <div class="slide"> + <img id="image" src="/images/green-256x256.png"> + </div> + <div class="slide"> + <img> + </div> + </div> + </div> +</div> + +<script> + +function toggleDisplay() { + var img = document.getElementById("image"); + img.style.display = img.style.display == 'none' ? 'inline' : 'none'; +} + +window.onload = () => { + requestAnimationFrame(() => { + toggleDisplay(); + requestAnimationFrame(() => { + toggleDisplay(); + document.documentElement.classList.remove("reftest-wait"); + }); + }); +}; +</script> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/dom/events/EventListener-handleEvent-expected.txt b/third_party/blink/web_tests/external/wpt/dom/events/EventListener-handleEvent-expected.txt new file mode 100644 index 0000000..5269d0c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/dom/events/EventListener-handleEvent-expected.txt
@@ -0,0 +1,7 @@ +This is a testharness.js-based test. +PASS calls `handleEvent` method of `EventListener` +PASS rethrows errors when getting `handleEvent` +PASS performs `Get` every time event is dispatched +FAIL throws if `handleEvent` is not callable assert_true: expected true got false +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/dom/events/EventListener-handleEvent.html b/third_party/blink/web_tests/external/wpt/dom/events/EventListener-handleEvent.html index b33b030a..6630f27 100644 --- a/third_party/blink/web_tests/external/wpt/dom/events/EventListener-handleEvent.html +++ b/third_party/blink/web_tests/external/wpt/dom/events/EventListener-handleEvent.html
@@ -3,40 +3,83 @@ <title>EventListener::handleEvent()</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<link rel="help" href="https://dom.spec.whatwg.org/#callbackdef-eventlistener"> <div id=log></div> -<table id="table" border="1" style="display: none"> - <tbody id="table-body"> - <tr id="table-row"> - <td id="table-cell">Shady Grove</td> - <td>Aeolian</td> - </tr> - <tr id="parent"> - <td id="target">Over the river, Charlie</td> - <td>Dorian</td> - </tr> - </tbody> -</table> +<div id=target></div> <script> -test(function(t) { - var event = "foo"; - var target = document.getElementById("target"); +setup({ allow_uncaught_exception: true }); - var event_listener = { - "handleEvent": function(evt) { +test(function(t) { + var type = "foo"; + var target = document.getElementById("target"); + var eventListener = { + handleEvent: function(evt) { var that = this; t.step(function() { - assert_equals(evt.type, event); + assert_equals(evt.type, type); assert_equals(evt.target, target); assert_equals(evt.srcElement, target); - assert_equals(that, event_listener); + assert_equals(that, eventListener); }); - } + }, }; - var evt = document.createEvent("Event"); - evt.initEvent(event, true, true); + target.addEventListener(type, eventListener); + target.dispatchEvent(new Event(type)); +}, "calls `handleEvent` method of `EventListener`"); - target.addEventListener(event, event_listener, true); - target.dispatchEvent(evt); -}); +test(function(t) { + var type = "foo"; + var target = document.getElementById("target"); + var thrownError = new Error(); + var uncaughtError; + + window.addEventListener("error", function(event) { + uncaughtError = event.error; + }); + + target.addEventListener(type, { + get handleEvent() { + throw thrownError; + }, + }); + + target.dispatchEvent(new Event(type)); + assert_equals(thrownError, uncaughtError); +}, "rethrows errors when getting `handleEvent`"); + +test(function(t) { + var type = "foo"; + var target = document.getElementById("target"); + var calls = 0; + + target.addEventListener(type, { + get handleEvent() { + calls++; + return function() {}; + }, + }); + + assert_equals(calls, 0); + target.dispatchEvent(new Event(type)); + target.dispatchEvent(new Event(type)); + assert_equals(calls, 2); +}, "performs `Get` every time event is dispatched"); + +test(function(t) { + var type = "foo"; + var target = document.getElementById("target"); + var uncaughtError; + + window.addEventListener("error", function(event) { + uncaughtError = event.error; + }); + + target.addEventListener(type, { + handleEvent: null, + }); + + target.dispatchEvent(new Event(type)); + assert_true(uncaughtError instanceof TypeError); +}, "throws if `handleEvent` is not callable"); </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-frameset-window.html b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-frameset-window.html index ecfe90e..b583eca 100644 --- a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-frameset-window.html +++ b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/events/event-handler-attributes-frameset-window.html
@@ -17,7 +17,9 @@ add_completion_callback(() => { const log_elem = document.getElementById("log"); const frame_elem = document.querySelector("frame"); - frame_elem.contentDocument.body.innerHTML = log_elem.innerHTML; + if (log_elem) { + frame_elem.contentDocument.body.innerHTML = log_elem.innerHTML; + } }); done();
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/webxr.idl b/third_party/blink/web_tests/external/wpt/interfaces/webxr.idl index 3054500..63643a1 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/webxr.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/webxr.idl
@@ -28,12 +28,10 @@ readonly attribute XRSessionMode mode; readonly attribute XRPresentationContext? outputContext; readonly attribute XREnvironmentBlendMode environmentBlendMode; - - attribute double depthNear; - attribute double depthFar; - attribute XRLayer? baseLayer; + readonly attribute XRRenderState renderState; // Methods + void updateRenderState(optional XRRenderStateInit state); Promise<XRReferenceSpace> requestReferenceSpace(XRReferenceSpaceOptions options); FrozenArray<XRInputSource> getInputSources(); @@ -64,6 +62,18 @@ XRPresentationContext? outputContext = null; }; +dictionary XRRenderStateInit { + double depthNear; + double depthFar; + XRLayer? baseLayer; +}; + +[SecureContext, Exposed=Window] interface XRRenderState { + readonly attribute double depthNear; + readonly attribute double depthFar; + readonly attribute XRLayer? baseLayer; +}; + callback XRFrameRequestCallback = void (DOMHighResTimeStamp time, XRFrame frame); [SecureContext, Exposed=Window] interface XRFrame {
diff --git a/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window-expected.txt index 9934c0e..1e286cea 100644 --- a/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window-expected.txt +++ b/third_party/blink/web_tests/external/wpt/webxr/idlharness.https.window-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 207 tests; 188 PASS, 19 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 215 tests; 185 PASS, 30 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS idl_test setup PASS Partial interface Navigator: original interface defined PASS Partial dictionary WebGLContextAttributes: original dictionary defined @@ -29,9 +29,8 @@ PASS XRSession interface: attribute mode PASS XRSession interface: attribute outputContext PASS XRSession interface: attribute environmentBlendMode -PASS XRSession interface: attribute depthNear -PASS XRSession interface: attribute depthFar -PASS XRSession interface: attribute baseLayer +FAIL XRSession interface: attribute renderState assert_true: The prototype object must have a property "renderState" expected true got false +FAIL XRSession interface: operation updateRenderState(XRRenderStateInit) assert_own_property: interface prototype object missing non-static operation expected property "updateRenderState" missing PASS XRSession interface: operation requestReferenceSpace(XRReferenceSpaceOptions) PASS XRSession interface: operation getInputSources() PASS XRSession interface: operation requestAnimationFrame(XRFrameRequestCallback) @@ -44,6 +43,15 @@ FAIL XRSession interface: attribute oninputsourceschange assert_true: The prototype object must have a property "oninputsourceschange" expected true got false FAIL XRSession interface: attribute onselectstart assert_true: The prototype object must have a property "onselectstart" expected true got false FAIL XRSession interface: attribute onselectend assert_true: The prototype object must have a property "onselectend" expected true got false +FAIL XRRenderState interface: existence and properties of interface object assert_own_property: self does not have own property "XRRenderState" expected property "XRRenderState" missing +FAIL XRRenderState interface object length assert_own_property: self does not have own property "XRRenderState" expected property "XRRenderState" missing +FAIL XRRenderState interface object name assert_own_property: self does not have own property "XRRenderState" expected property "XRRenderState" missing +FAIL XRRenderState interface: existence and properties of interface prototype object assert_own_property: self does not have own property "XRRenderState" expected property "XRRenderState" missing +FAIL XRRenderState interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "XRRenderState" expected property "XRRenderState" missing +FAIL XRRenderState interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "XRRenderState" expected property "XRRenderState" missing +FAIL XRRenderState interface: attribute depthNear assert_own_property: self does not have own property "XRRenderState" expected property "XRRenderState" missing +FAIL XRRenderState interface: attribute depthFar assert_own_property: self does not have own property "XRRenderState" expected property "XRRenderState" missing +FAIL XRRenderState interface: attribute baseLayer assert_own_property: self does not have own property "XRRenderState" expected property "XRRenderState" missing PASS XRFrame interface: existence and properties of interface object PASS XRFrame interface object length PASS XRFrame interface object name
diff --git a/third_party/blink/web_tests/fast/css/invalidation/independent-inheritance-fast-path-slots.html b/third_party/blink/web_tests/fast/css/invalidation/independent-inheritance-fast-path-slots.html index 31894d12..a4e1a79 100644 --- a/third_party/blink/web_tests/fast/css/invalidation/independent-inheritance-fast-path-slots.html +++ b/third_party/blink/web_tests/fast/css/invalidation/independent-inheritance-fast-path-slots.html
@@ -10,33 +10,8 @@ <div id="c3"></div> </div> <script> -// The aim of this test is to expose a bug in the independent inheritance fast -// path when using slotting with shadow trees, since we traverse the DOM in -// tree-of-trees order, but inheritance happens in flat-tree order. -// -// The final tree-of-trees for this test will look like: -// -// <div id="host"> -// <:shadow-root> -// <span> -// <slot></slot> -// </span> -// </:shadow-root> -// <div id="c1"></div> -// <div id="c2"></div> -// </div> -// -// Which means the final flat tree after slotting will look like: -// -// <div id="host"> -// <span> -// <div id="c1"></div> -// <div id="c2"></div> -// </span> -// </div> -// -// This test passes if changes in the span element propagate correctly to the -// slotted child divs. +// The aim of this test is to check that independent inheritance work down the +// flat tree through slot elements. test(function(t) { var shadow_root = host.attachShadow({mode: 'closed'}); @@ -49,15 +24,12 @@ host.scrollTop; // Force recalc. span.style.pointerEvents = "none"; - // Only 4 elements should update: the span and the 3 child divs - assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 4); + // Only one element should do a recalc. Independent inheritance down to the + // 3 child divs. + assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 1); assert_equals(getComputedStyle(c1).pointerEvents, "none"); assert_equals(getComputedStyle(c2).pointerEvents, "none"); }, "Changing pointerEvents, an independent inherited property, propagates correctly through slotted elements."); </script> - - - -
diff --git a/third_party/blink/web_tests/fast/text/wbr-nowrap-expected.html b/third_party/blink/web_tests/fast/text/wbr-nowrap-expected.html new file mode 100644 index 0000000..4c1c550 --- /dev/null +++ b/third_party/blink/web_tests/fast/text/wbr-nowrap-expected.html
@@ -0,0 +1,3 @@ +<!DOCTYPE html> +<div>1234567<br>7654321</div> +<div><span>1234567<br>7654321</span></div>
diff --git a/third_party/blink/web_tests/fast/text/wbr-nowrap.html b/third_party/blink/web_tests/fast/text/wbr-nowrap.html new file mode 100644 index 0000000..b8ce692 --- /dev/null +++ b/third_party/blink/web_tests/fast/text/wbr-nowrap.html
@@ -0,0 +1,11 @@ +<!DOCTYPE html> +<style> +div { + width: 10ch; +} +.nowrap { + white-space: nowrap; +} +</style> +<div class="nowrap">1234567<wbr>7654321</div> +<div><span class="nowrap">1234567<wbr>7654321</span></div>
diff --git a/third_party/blink/web_tests/http/tests/priority-hints/script-dynamic-insertion-expected.txt b/third_party/blink/web_tests/http/tests/priority-hints/script-dynamic-insertion-expected.txt index 9558182..5689d28 100644 --- a/third_party/blink/web_tests/http/tests/priority-hints/script-dynamic-insertion-expected.txt +++ b/third_party/blink/web_tests/http/tests/priority-hints/script-dynamic-insertion-expected.txt
@@ -8,6 +8,6 @@ FAIL low importance on dynamically-inserted module <script>s translates to kLow resource load priority assert_equals: expected 3 but got 1 PASS auto importance on dynamically-inserted module <script>s has no effect on resource load priority PASS invalid importance on dynamically-inserted module <script>s has no effect on resource load priority -PASS missing importance on module dynamica-inserted <script>s has no effect on resource load priority +PASS missing importance on dynamically-inserted module <script>s has no effect on resource load priority Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/http/tests/priority-hints/script-dynamic-insertion.html b/third_party/blink/web_tests/http/tests/priority-hints/script-dynamic-insertion.html index 0ef68d5..f1c8b4a 100644 --- a/third_party/blink/web_tests/http/tests/priority-hints/script-dynamic-insertion.html +++ b/third_party/blink/web_tests/http/tests/priority-hints/script-dynamic-insertion.html
@@ -14,14 +14,18 @@ // Dynamically-inserted <script type=module> tests. {test: async_test('high importance on dynamically-inserted module <script>s has no effect on resource load priority'), importance: 'high', module: true, expected_priority: kHigh}, + // This test below actually fails because ResourceFetcher currently does + // not make it easy to down-prioritize ResourceRequests whose priority is + // pre-set, and module scripts have their priority set to kHigh before they + // reach ResourceFetcher. This is related to crbug.com/882344. {test: async_test('low importance on dynamically-inserted module <script>s translates to kLow resource load priority'), importance: 'low', module: true, expected_priority: kLow}, {test: async_test('auto importance on dynamically-inserted module <script>s has no effect on resource load priority'), importance: 'auto', module: true, expected_priority: kHigh}, {test: async_test('invalid importance on dynamically-inserted module <script>s has no effect on resource load priority'), importance: 'xyz', module: true, expected_priority: kHigh}, - {test: async_test('missing importance on module dynamica-inserted <script>s has no effect on resource load priority'), - expected_priority: kLow} + {test: async_test('missing importance on dynamically-inserted module <script>s has no effect on resource load priority'), + module: true, expected_priority: kHigh} ];
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/atsui-spacing-features-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/atsui-spacing-features-expected.png index 9b33c06e..be1b136 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/atsui-spacing-features-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/atsui-spacing-features-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/emphasis-complex-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/emphasis-complex-expected.png index 2c60d328..6b4b59a 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/emphasis-complex-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/emphasis-complex-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/international/hebrew-vowels-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/international/hebrew-vowels-expected.png index d30d19e6..a38de1b 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/international/hebrew-vowels-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.10/fast/text/international/hebrew-vowels-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/svg/text/surrogate-pair-queries-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/svg/text/surrogate-pair-queries-expected.png new file mode 100644 index 0000000..5528978 --- /dev/null +++ b/third_party/blink/web_tests/platform/mac-mac10.10/svg/text/surrogate-pair-queries-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/fast/text/emphasis-complex-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/fast/text/emphasis-complex-expected.png index 39cf5de..4e9c333 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/fast/text/emphasis-complex-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/fast/text/emphasis-complex-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/svg/text/surrogate-pair-queries-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/svg/text/surrogate-pair-queries-expected.png index 5528978..9fa7679e 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.11/svg/text/surrogate-pair-queries-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.11/svg/text/surrogate-pair-queries-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/atsui-spacing-features-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/atsui-spacing-features-expected.png index f284f95..76378a9 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/atsui-spacing-features-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/atsui-spacing-features-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/emphasis-complex-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/emphasis-complex-expected.png index 4c83e26..3f94b96 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/emphasis-complex-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/emphasis-complex-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/international/hebrew-vowels-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/international/hebrew-vowels-expected.png index cb21b18..567b6937 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/international/hebrew-vowels-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/text/international/hebrew-vowels-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/text/combining-character-queries-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/text/combining-character-queries-expected.png index 3a5b6ca4..cc78f133 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/text/combining-character-queries-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/text/combining-character-queries-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/text/ligature-queries-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/text/ligature-queries-expected.png index cfb9c164..2f331b4 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/text/ligature-queries-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/text/ligature-queries-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/svg/text/surrogate-pair-queries-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/svg/text/surrogate-pair-queries-expected.png index 7e27ed5..c160869 100644 --- a/third_party/blink/web_tests/platform/mac-mac10.12/svg/text/surrogate-pair-queries-expected.png +++ b/third_party/blink/web_tests/platform/mac-mac10.12/svg/text/surrogate-pair-queries-expected.png Binary files differ
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 7393d074..a761b4b 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -2642,6 +2642,26 @@ <int value="1" label="Suggestion Selected"/> </enum> +<enum name="AutofillAssistantDropOutReason"> + <int value="0" label="Autofill Assistant started"/> + <int value="1" label="Autostart timed out"/> + <int value="2" label="No scripts available"/> + <int value="3" label="Custom tab closed"/> + <int value="4" label="User declined"/> + <int value="5" label="Sheet closed"/> + <int value="6" label="Script failed"/> + <int value="7" label="User navigation"/> + <int value="8" label="Unexpected taps on overlay"/> + <int value="9" label="Request payment info failed"/> + <int value="10" label="Web contents destroyed"/> + <int value="11" label="Render process gone"/> + <int value="12" label="Interstitial page attached"/> + <int value="13" label="Script initiated shutdown"/> + <int value="14" label="Safety net termination"/> + <int value="15" label="Tab detached"/> + <int value="16" label="Tab changed"/> +</enum> + <enum name="AutofillCardholderNameFixFlowPromptEvent"> <int value="0" label="Shown"/> <int value="1" label="Accepted"/> @@ -30743,6 +30763,7 @@ <int value="-1655535052" label="enable-pointer-events"/> <int value="-1654344175" label="disable-extension-info-dialog"/> <int value="-1653838003" label="PauseBackgroundTabs:enabled"/> + <int value="-1650769314" label="enable-webgl2-compute-context"/> <int value="-1649778035" label="disable-clear-browsing-data-counters"/> <int value="-1648216169" label="NewOmniboxAnswerTypes:disabled"/> <int value="-1638815914" label="enable-experimental-productivity-features"/> @@ -50778,6 +50799,16 @@ </int> </enum> +<enum name="SupervisionStatusReportEvent"> + <summary>Events that trigger status report for supervised accounts</summary> + <int value="0" label="APP_INSTALLED"/> + <int value="1" label="APP_UPDATED"/> + <int value="2" label="SESSION_ACTIVE"/> + <int value="3" label="SESSION_LOCKED"/> + <int value="4" label="DEVICE_ONLINE"/> + <int value="5" label="SUSPEND_DONE"/> +</enum> + <enum name="SurveyDownloadResponseCodes"> <int value="-1" label="Response code missing"/> <int value="0" label="Survey downloaded"/> @@ -51124,6 +51155,12 @@ <int value="3" label="Disabled"/> </enum> +<enum name="SyncGetUpdatesToken"> + <int value="0" label="New token"/> + <int value="1" label="Same token"/> + <int value="2" label="Different token"/> +</enum> + <enum name="SyncGlobalIdConflict"> <int value="0" label="Conflict"/> <int value="1" label="No conflict, new global id"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 23f2bdda..083a206 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -1310,6 +1310,18 @@ </summary> </histogram> +<histogram name="Android.AutofillAssistant.DropOutReason" + enum="AutofillAssistantDropOutReason" expires_after="2020-01-25"> + <owner>mcarlen@chromium.org</owner> + <summary> + Reports the drop out reason of an Autofill Assistant script. It is recorded + when Autofill Assistant is shut down or terminated. The AA_START value is + used as a baseline and counts the number of attempted starts of Autofill + Assistant flows. The sum of all drop out reasons should be the same as the + number of attempted starts (i.e. AA_START). + </summary> +</histogram> + <histogram name="Android.BackgroundTaskScheduler.TaskCanceled" enum="BackgroundTaskId"> <owner>fgorski@chromium.org</owner> @@ -112637,6 +112649,16 @@ </summary> </histogram> +<histogram name="Supervision.StatusReport.Event" + enum="SupervisionStatusReportEvent" expires_after="M76"> + <owner>escordeiro@google.com</owner> + <owner>brunoad@google.com</owner> + <owner>ldaguilar@google.com</owner> + <summary> + The event that triggered status report for supervised account. + </summary> +</histogram> + <histogram name="Sync.AppAssociationTime" units="ms"> <obsolete> Deprecated in M53. @@ -114483,6 +114505,17 @@ <summary>Time taken from startup for the user to reauthorize.</summary> </histogram> +<histogram base="true" name="Sync.ReceivedDataTypeGetUpdatesResponseWithToken" + enum="SyncGetUpdatesToken" expires_after="2019-06-01"> + <owner>jkrcal@chromium.org</owner> + <owner>mastiz@chromium.org</owner> + <summary> + Recorded for each GetUpdates response (and each data type included). Records + whether the newly received token is new (as this data type had none before) + or whether it is the same as before or whether it has changed. + </summary> +</histogram> + <histogram name="Sync.RefreshTokenAvailable" enum="BooleanSuccess"> <obsolete> Deprecated 04/2016 as not useful since it always logged true. @@ -115021,6 +115054,16 @@ <summary>Counts directory to USS migration successes per model type.</summary> </histogram> +<histogram name="Sync.Wallet.EntitiesClearedWhenDisabled" units="entities" + expires_after="M74"> + <owner>jkrcal@chromium.org</owner> + <owner>feuunk@chromium.org</owner> + <summary> + Counts number of data entities that are removed when sync / Wallet sync gets + disabled. + </summary> +</histogram> + <histogram name="Sync.WifiCredentialsAssociationTime" units="ms"> <obsolete> Deprecated in M53. @@ -142864,6 +142907,7 @@ </affected-histogram> <affected-histogram name="Sync.ModelTypeEntityChange3"/> <affected-histogram name="Sync.ModelTypeMemoryKB"/> + <affected-histogram name="Sync.ReceivedDataTypeGetUpdatesResponseWithToken"/> <affected-histogram name="Sync.USSMigrationEntityCount"/> </histogram_suffixes>
diff --git a/tools/perf/core/perf_benchmark.py b/tools/perf/core/perf_benchmark.py index a358680..4579155 100644 --- a/tools/perf/core/perf_benchmark.py +++ b/tools/perf/core/perf_benchmark.py
@@ -115,8 +115,7 @@ # Switch Chrome to use Perfetto instead of TraceLog as the tracing backend, # needed until the feature gets turned on by default everywhere. if options.browser_type != 'reference': - options.AppendExtraBrowserArgs( - '--enable-features=TracingPerfettoBackend') + options.AppendExtraBrowserArgs('--enable-perfetto') self.SetExtraBrowserOptions(options)
diff --git a/tools/perf/core/perf_data_generator.py b/tools/perf/core/perf_data_generator.py index 968d173..544a19f 100755 --- a/tools/perf/core/perf_data_generator.py +++ b/tools/perf/core/perf_data_generator.py
@@ -931,20 +931,27 @@ return test_args - def generate_non_telemetry_args(test_name): # --gtest-benchmark-name so the benchmark name is consistent with the test # step's name. This is not always the same as the test binary's name (see # crbug.com/870692). + # --non-telemetry tells run_performance_tests.py that this test needs + # to be executed differently + # --migrated-test tells run_performance_test_wrapper that this has + # non-telemetry test has been migrated to the new recipe. return [ '--gtest-benchmark-name', test_name, + '--non-telemetry=true', + '--migrated-test=true' ] - def generate_performance_test(tester_config, test): isolate_name = test['isolate'] - test_suite = test.get('test_suite', isolate_name) + # Check to see if the name is different than the isolate + test_suite = isolate_name + if test.get('test_suite', False): + test_suite = test['test_suite'] if test.get('telemetry', True): test_args = generate_telemetry_args(tester_config)
diff --git a/tools/perf/core/perf_data_generator_unittest.py b/tools/perf/core/perf_data_generator_unittest.py index 2e6b27e2..9925042 100644 --- a/tools/perf/core/perf_data_generator_unittest.py +++ b/tools/perf/core/perf_data_generator_unittest.py
@@ -72,7 +72,8 @@ expected_generated_test = { 'override_compile_targets': ['angle_perftest'], 'isolate_name': 'angle_perftest', - 'args': ['--gtest-benchmark-name', 'angle_perftest'], + 'args': ['--gtest-benchmark-name', 'angle_perftest', + '--non-telemetry=true', '--migrated-test=true'], 'trigger_script': { 'args': [ '--multiple-dimension-script-verbose', @@ -120,8 +121,7 @@ 'override_compile_targets': ['performance_test_suite'], 'isolate_name': 'performance_test_suite', 'args': ['-v', '--browser=android-webview', '--upload-results', - '--webview-embedder-apk=../../out/Release' - '/apks/SystemWebViewShell.apk', + '--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk', '--run-ref-build', '--test-shard-map-filename=shard_map.json'], 'trigger_script': {
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_te.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_te.xtb index 85701f2..8234ac6a 100644 --- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_te.xtb +++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_te.xtb
@@ -65,5 +65,5 @@ <translation id="8321034316479930120">యానిమేషన్ విధానం</translation> <translation id="8480209185614411573">అధిక కాంట్రాస్ట్</translation> <translation id="8609925175482059018">కేరెట్ బ్రౌజింగ్ను ఆన్ చేయడానికి <span class='key'>F7</span> నొక్కండి. అలాగే ఆఫ్ చేయడానికి దాన్నే మళ్లీ నొక్కండి.</translation> -<translation id="894241283505723656">సందర్భోచిత మెనూలో సుదీర్ఘ వివరణలు</translation> +<translation id="894241283505723656">సందర్భ మెనూలో సుదీర్ఘ వివరణలు</translation> </translationbundle> \ No newline at end of file
diff --git a/ui/android/java/res/values-v17/styles.xml b/ui/android/java/res/values-v17/styles.xml index 123d07f..2c4aa52 100644 --- a/ui/android/java/res/values-v17/styles.xml +++ b/ui/android/java/res/values-v17/styles.xml
@@ -67,17 +67,23 @@ <item name="rippleColor">@color/chip_ripple_color</item> </style> <style name="SuggestionChip" parent="Chip" tools:ignore="UnusedResources"> + <item name="primaryTextAppearance">@style/TextAppearance.ChipText</item> <item name="cornerRadius">@dimen/chip_corner_radius</item> </style> <style name="InputChip" parent="Chip" tools:ignore="UnusedResources"> + <item name="primaryTextAppearance">@style/TextAppearance.ChipText</item> + <item name="cornerRadius">@dimen/chip_default_height</item> + </style> + <style name="AssistiveChip" parent="Chip" tools:ignore="UnusedResources"> + <item name="primaryTextAppearance">@style/TextAppearance.ChipText.Assistive</item> + <item name="secondaryTextAppearance">@style/TextAppearance.ChipText.Assistive.Secondary</item> <item name="cornerRadius">@dimen/chip_default_height</item> </style> <style name="ChipTextView" tools:ignore="UnusedResources"> <item name="android:gravity">center</item> <item name="android:maxLines">1</item> - <item name="android:paddingStart">@dimen/chip_icon_padding</item> - <item name="android:paddingEnd">@dimen/chip_no_icon_padding</item> + <item name="android:paddingStart">@dimen/chip_element_leading_padding</item> <item name="android:textAlignment">center</item> </style> @@ -211,6 +217,14 @@ </style> <!-- Chip Text Styles --> + <style name="TextAppearance.ChipText.Assistive" parent="TextAppearance.AccentMediumStyle"> + <item name="android:textColor">@color/default_text_color</item> + <item name="android:textSize">@dimen/text_size_medium</item> + </style> + <style name="TextAppearance.ChipText.Assistive.Secondary" parent="TextAppearance.AccentMediumStyle"> + <item name="android:textColor">@color/chip_text_color</item> + <item name="android:textSize">@dimen/text_size_medium</item> + </style> <style name="TextAppearance.ChipText" parent="TextAppearance.RobotoMediumStyle"> <item name="android:textColor">@color/chip_text_color</item> <item name="android:textSize">@dimen/text_size_medium</item>
diff --git a/ui/android/java/res/values/attrs.xml b/ui/android/java/res/values/attrs.xml index d6f53cee..b9ce9b6 100644 --- a/ui/android/java/res/values/attrs.xml +++ b/ui/android/java/res/values/attrs.xml
@@ -26,6 +26,8 @@ <attr name="cornerRadius" format="reference|dimension"/> <attr name="iconWidth" format="reference|dimension"/> <attr name="iconHeight" format="reference|dimension"/> + <attr name="primaryTextAppearance" format="reference"/> + <attr name="secondaryTextAppearance" format="reference"/> <attr name="rippleColor" format="color"/> </declare-styleable>
diff --git a/ui/android/java/res/values/dimens.xml b/ui/android/java/res/values/dimens.xml index 6b3c7ac2..627b3f1 100644 --- a/ui/android/java/res/values/dimens.xml +++ b/ui/android/java/res/values/dimens.xml
@@ -27,8 +27,8 @@ <dimen name="chip_border_width">1dp</dimen> <dimen name="chip_corner_radius">8dp</dimen> <dimen name="chip_default_height">32dp</dimen> - <dimen name="chip_no_icon_padding">16dp</dimen> - <dimen name="chip_icon_padding">8dp</dimen> + <dimen name="chip_end_padding">16dp</dimen> + <dimen name="chip_element_leading_padding">8dp</dimen> <item name="chip_background_selected_focused_alpha" format="float" type="dimen">0.12</item> <item name="chip_background_selected_alpha" format="float" type="dimen">0.06</item> <dimen name="chip_icon_size">20dp</dimen>
diff --git a/ui/android/java/src/org/chromium/ui/widget/ChipView.java b/ui/android/java/src/org/chromium/ui/widget/ChipView.java index c2a0529c..a6b9781 100644 --- a/ui/android/java/src/org/chromium/ui/widget/ChipView.java +++ b/ui/android/java/src/org/chromium/ui/widget/ChipView.java
@@ -4,11 +4,11 @@ package org.chromium.ui.widget; import android.content.Context; -import android.content.res.ColorStateList; import android.content.res.TypedArray; import android.support.annotation.DrawableRes; +import android.support.annotation.IdRes; +import android.support.annotation.Px; import android.support.annotation.StyleRes; -import android.support.v4.view.MarginLayoutParamsCompat; import android.support.v4.view.ViewCompat; import android.util.AttributeSet; import android.view.ContextThemeWrapper; @@ -21,14 +21,15 @@ /** The view responsible for displaying a material chip. */ public class ChipView extends LinearLayout { - /** An id to use for {@link #setIcon(int)} when there is no icon on the chip. */ + /** An id to use for {@link #setIcon(int, boolean)} when there is no icon on the chip. */ public static final int INVALID_ICON_ID = -1; - private final int mTextStartPaddingWithIconPx; - private final int mTextStartPaddingWithNoIconPx; private final RippleBackgroundHelper mRippleBackgroundHelper; - private final TextView mText; + private final TextView mPrimaryText; private final ChromeImageView mIcon; + private final @IdRes int mSecondaryTextAppearanceId; + + private TextView mSecondaryText; /** * Constructor for inflating from XML. @@ -47,10 +48,9 @@ private ChipView(Context context, AttributeSet attrs, @StyleRes int themeOverlay) { super(new ContextThemeWrapper(context, themeOverlay), attrs, R.attr.chipStyle); - mTextStartPaddingWithIconPx = - getResources().getDimensionPixelSize(R.dimen.chip_icon_padding); - mTextStartPaddingWithNoIconPx = - getResources().getDimensionPixelSize(R.dimen.chip_no_icon_padding); + final @Px int leadingElementPadding = + getResources().getDimensionPixelSize(R.dimen.chip_element_leading_padding); + final @Px int endPadding = getResources().getDimensionPixelSize(R.dimen.chip_end_padding); TypedArray a = getContext().obtainStyledAttributes( attrs, R.styleable.ChipView, R.attr.chipStyle, 0); @@ -64,25 +64,28 @@ getResources().getDimensionPixelSize(R.dimen.chip_icon_size)); int iconHeight = a.getDimensionPixelSize(R.styleable.ChipView_iconHeight, getResources().getDimensionPixelSize(R.dimen.chip_icon_size)); + int primaryTextAppearance = a.getResourceId( + R.styleable.ChipView_primaryTextAppearance, R.style.TextAppearance_ChipText); + mSecondaryTextAppearanceId = a.getResourceId( + R.styleable.ChipView_secondaryTextAppearance, R.style.TextAppearance_ChipText); a.recycle(); mIcon = new ChromeImageView(getContext()); - LayoutParams lp = new LayoutParams(iconWidth, iconHeight); - MarginLayoutParamsCompat.setMarginStart(lp, mTextStartPaddingWithIconPx); - mIcon.setLayoutParams(lp); + mIcon.setLayoutParams(new LayoutParams(iconWidth, iconHeight)); addView(mIcon); - mText = new TextView(new ContextThemeWrapper(getContext(), R.style.ChipTextView)); - ApiCompatibilityUtils.setTextAppearance(mText, R.style.TextAppearance_ChipText); - addView(mText); + // Setting this enforces 16dp padding at the end and 8dp at the start. For text, the start + // padding needs to be 16dp which is why a ChipTextView contributes the remaining 8dp. + ViewCompat.setPaddingRelative(this, leadingElementPadding, 0, endPadding, 0); + + mPrimaryText = new TextView(new ContextThemeWrapper(getContext(), R.style.ChipTextView)); + ApiCompatibilityUtils.setTextAppearance(mPrimaryText, primaryTextAppearance); + addView(mPrimaryText); // Reset icon and background: mRippleBackgroundHelper = new RippleBackgroundHelper(this, chipColorId, rippleColorId, cornerRadius, R.color.chip_stroke_color, R.dimen.chip_border_width); - setIcon(INVALID_ICON_ID); - - ColorStateList textColors = mText.getTextColors(); - if (textColors != null) ApiCompatibilityUtils.setImageTintList(mIcon, textColors); + setIcon(INVALID_ICON_ID, false); } @Override @@ -97,26 +100,38 @@ * Sets the icon at the start of the chip view. * @param icon The resource id pointing to the icon. */ - public void setIcon(@DrawableRes int icon) { - final int textStartPadding; + public void setIcon(@DrawableRes int icon, boolean tintWithTextColor) { if (icon == INVALID_ICON_ID) { mIcon.setVisibility(ViewGroup.GONE); - textStartPadding = mTextStartPaddingWithNoIconPx; - } else { - textStartPadding = mTextStartPaddingWithIconPx; - mIcon.setVisibility(ViewGroup.VISIBLE); - mIcon.setImageResource(icon); + return; } - - ViewCompat.setPaddingRelative(mText, textStartPadding, mText.getPaddingTop(), - ViewCompat.getPaddingEnd(mText), mText.getPaddingBottom()); + mIcon.setVisibility(ViewGroup.VISIBLE); + mIcon.setImageResource(icon); + if (mPrimaryText.getTextColors() != null && tintWithTextColor) { + ApiCompatibilityUtils.setImageTintList(mIcon, mPrimaryText.getTextColors()); + } } /** * Returns the {@link TextView} that contains the label of the chip. * @return A {@link TextView}. */ - public TextView getInnerTextView() { - return mText; + public TextView getPrimaryTextView() { + return mPrimaryText; + } + + /** + * Returns the {@link TextView} that contains the secondary label of the chip. If it wasn't used + * until now, this creates the view. + * @return A {@link TextView}. + */ + public TextView getSecondaryTextView() { + if (mSecondaryText == null) { + mSecondaryText = + new TextView(new ContextThemeWrapper(getContext(), R.style.ChipTextView)); + ApiCompatibilityUtils.setTextAppearance(mSecondaryText, mSecondaryTextAppearanceId); + addView(mSecondaryText); + } + return mSecondaryText; } }
diff --git a/ui/android/java/src/org/chromium/ui/widget/RippleBackgroundHelper.java b/ui/android/java/src/org/chromium/ui/widget/RippleBackgroundHelper.java index 8780438..5b658702 100644 --- a/ui/android/java/src/org/chromium/ui/widget/RippleBackgroundHelper.java +++ b/ui/android/java/src/org/chromium/ui/widget/RippleBackgroundHelper.java
@@ -19,6 +19,7 @@ import android.support.annotation.Px; import android.support.v4.graphics.ColorUtils; import android.support.v4.graphics.drawable.DrawableCompat; +import android.support.v4.view.ViewCompat; import android.support.v7.content.res.AppCompatResources; import android.util.StateSet; import android.view.View; @@ -71,9 +72,9 @@ @DimenRes int borderSizeDimenId) { mView = view; - int paddingLeft = mView.getPaddingLeft(); + int paddingStart = ViewCompat.getPaddingStart(mView); int paddingTop = mView.getPaddingTop(); - int paddingRight = mView.getPaddingRight(); + int paddingEnd = ViewCompat.getPaddingEnd(mView); int paddingBottom = mView.getPaddingBottom(); mView.setBackground(createBackgroundDrawable( AppCompatResources.getColorStateList(view.getContext(), rippleColorResId), @@ -85,7 +86,8 @@ // On KitKat, setting the background on the view can cause padding reset. Save the padding // and re-apply after background is set. if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - mView.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom); + ViewCompat.setPaddingRelative( + mView, paddingStart, paddingTop, paddingEnd, paddingBottom); } }
diff --git a/ui/aura/mus/window_tree_client_unittest.cc b/ui/aura/mus/window_tree_client_unittest.cc index 7992377..0dfd1b45 100644 --- a/ui/aura/mus/window_tree_client_unittest.cc +++ b/ui/aura/mus/window_tree_client_unittest.cc
@@ -284,9 +284,9 @@ window_tree()->GetChangeCountForType(WindowTreeChangeType::BOUNDS)); } -INSTANTIATE_TEST_CASE_P(/* no prefix */, - WindowTreeClientTestSurfaceSync, - ::testing::Bool()); +INSTANTIATE_TEST_SUITE_P(/* no prefix */, + WindowTreeClientTestSurfaceSync, + ::testing::Bool()); // Verifies that windows with an embedding create a ClientSurfaceEmbedder. TEST_P(WindowTreeClientTestSurfaceSync, ClientSurfaceEmbedderCreated) {
diff --git a/ui/aura/window_event_dispatcher_unittest.cc b/ui/aura/window_event_dispatcher_unittest.cc index 9475308..13480664 100644 --- a/ui/aura/window_event_dispatcher_unittest.cc +++ b/ui/aura/window_event_dispatcher_unittest.cc
@@ -3145,17 +3145,17 @@ root_window()->RemovePreTargetHandler(&root_recorder); } -INSTANTIATE_TEST_CASE_P(/* no prefix */, - WindowEventDispatcherTest, - ::testing::Values(Env::Mode::LOCAL, Env::Mode::MUS)); +INSTANTIATE_TEST_SUITE_P(/* no prefix */, + WindowEventDispatcherTest, + ::testing::Values(Env::Mode::LOCAL, Env::Mode::MUS)); -INSTANTIATE_TEST_CASE_P(/* no prefix */, - WindowEventDispatcherTestWithMessageLoop, - ::testing::Values(Env::Mode::LOCAL, Env::Mode::MUS)); +INSTANTIATE_TEST_SUITE_P(/* no prefix */, + WindowEventDispatcherTestWithMessageLoop, + ::testing::Values(Env::Mode::LOCAL, Env::Mode::MUS)); -INSTANTIATE_TEST_CASE_P(/* no prefix */, - WindowEventDispatcherTestInHighDPI, - ::testing::Values(Env::Mode::LOCAL, Env::Mode::MUS)); +INSTANTIATE_TEST_SUITE_P(/* no prefix */, + WindowEventDispatcherTestInHighDPI, + ::testing::Values(Env::Mode::LOCAL, Env::Mode::MUS)); using WindowEventDispatcherMusTest = test::AuraTestBaseMus;
diff --git a/ui/aura/window_targeter_unittest.cc b/ui/aura/window_targeter_unittest.cc index 1085c08..39466c5 100644 --- a/ui/aura/window_targeter_unittest.cc +++ b/ui/aura/window_targeter_unittest.cc
@@ -330,9 +330,9 @@ EXPECT_EQ(root_window(), targeter->FindTargetForEvent(root_target, &mouse2)); } -INSTANTIATE_TEST_CASE_P(/* no prefix */, - WindowTargeterTest, - ::testing::Values(Env::Mode::LOCAL, Env::Mode::MUS)); +INSTANTIATE_TEST_SUITE_P(/* no prefix */, + WindowTargeterTest, + ::testing::Values(Env::Mode::LOCAL, Env::Mode::MUS)); using WindowTargeterMus = aura::test::AuraMusClientTestBase;
diff --git a/ui/aura/window_unittest.cc b/ui/aura/window_unittest.cc index a7c1506..92c9774 100644 --- a/ui/aura/window_unittest.cc +++ b/ui/aura/window_unittest.cc
@@ -3316,13 +3316,13 @@ EXPECT_NE(local_surface_id5, local_surface_id6); } -INSTANTIATE_TEST_CASE_P(/* no prefix */, - WindowTest, - ::testing::Values(Env::Mode::LOCAL, Env::Mode::MUS)); +INSTANTIATE_TEST_SUITE_P(/* no prefix */, + WindowTest, + ::testing::Values(Env::Mode::LOCAL, Env::Mode::MUS)); -INSTANTIATE_TEST_CASE_P(/* no prefix */, - WindowObserverTest, - ::testing::Values(Env::Mode::LOCAL, Env::Mode::MUS)); +INSTANTIATE_TEST_SUITE_P(/* no prefix */, + WindowObserverTest, + ::testing::Values(Env::Mode::LOCAL, Env::Mode::MUS)); } // namespace } // namespace test
diff --git a/ui/display/util/edid_parser_unittest.cc b/ui/display/util/edid_parser_unittest.cc index 500e4a4..365a922 100644 --- a/ui/display/util/edid_parser_unittest.cc +++ b/ui/display/util/edid_parser_unittest.cc
@@ -292,6 +292,6 @@ GetParam().product_id_string); } -INSTANTIATE_TEST_CASE_P(, EDIDParserTest, ValuesIn(kTestCases)); +INSTANTIATE_TEST_SUITE_P(, EDIDParserTest, ValuesIn(kTestCases)); } // namespace display
diff --git a/ui/events/blink/input_handler_proxy_unittest.cc b/ui/events/blink/input_handler_proxy_unittest.cc index 2c81c8a..7a49a18 100644 --- a/ui/events/blink/input_handler_proxy_unittest.cc +++ b/ui/events/blink/input_handler_proxy_unittest.cc
@@ -2336,12 +2336,12 @@ input_handler_->HandleInputEvent(gesture_scroll_end_)); } -INSTANTIATE_TEST_CASE_P(AnimateInput, - InputHandlerProxyTest, - testing::ValuesIn(test_types)); +INSTANTIATE_TEST_SUITE_P(AnimateInput, + InputHandlerProxyTest, + testing::ValuesIn(test_types)); -INSTANTIATE_TEST_CASE_P(AnimateInput, - InputHandlerProxyMainThreadScrollingReasonTest, - testing::ValuesIn(test_types)); +INSTANTIATE_TEST_SUITE_P(AnimateInput, + InputHandlerProxyMainThreadScrollingReasonTest, + testing::ValuesIn(test_types)); } // namespace test } // namespace ui
diff --git a/ui/gl/gl_image_dxgi_unittest.cc b/ui/gl/gl_image_dxgi_unittest.cc index b0057706..78ab903 100644 --- a/ui/gl/gl_image_dxgi_unittest.cc +++ b/ui/gl/gl_image_dxgi_unittest.cc
@@ -90,21 +90,21 @@ GLImageDXGITestDelegate<gfx::BufferFormat::RGBX_8888>>; // Disabled by default as it requires DX11. -INSTANTIATE_TYPED_TEST_CASE_P(DISABLED_GLImageDXGIHandle, - GLImageTest, - GLImageTestTypes); +INSTANTIATE_TYPED_TEST_SUITE_P(DISABLED_GLImageDXGIHandle, + GLImageTest, + GLImageTestTypes); using GLImageRGBTestTypes = testing::Types<GLImageDXGITestDelegate<gfx::BufferFormat::RGBA_8888>, GLImageDXGITestDelegate<gfx::BufferFormat::RGBX_8888>>; // Disabled by default as it requires DX11. -INSTANTIATE_TYPED_TEST_CASE_P(DISABLED_GLImageDXGIHandle, - GLImageZeroInitializeTest, - GLImageRGBTestTypes); +INSTANTIATE_TYPED_TEST_SUITE_P(DISABLED_GLImageDXGIHandle, + GLImageZeroInitializeTest, + GLImageRGBTestTypes); // Disabled by default as it requires DX11. -INSTANTIATE_TYPED_TEST_CASE_P( +INSTANTIATE_TYPED_TEST_SUITE_P( DISABLED_GLImageDXGIHandle, GLImageBindTest, GLImageDXGITestDelegate<gfx::BufferFormat::RGBA_8888>);
diff --git a/ui/gl/gl_image_io_surface_unittest.cc b/ui/gl/gl_image_io_surface_unittest.cc index e057fecb..7319662 100644 --- a/ui/gl/gl_image_io_surface_unittest.cc +++ b/ui/gl/gl_image_io_surface_unittest.cc
@@ -97,7 +97,7 @@ GLImageIOSurfaceTestDelegate<gfx::BufferFormat::YUV_420_BIPLANAR>, GLImageIOSurfaceTestDelegate<gfx::BufferFormat::BGRX_1010102>>; -INSTANTIATE_TYPED_TEST_CASE_P(GLImageIOSurface, GLImageTest, GLImageTestTypes); +INSTANTIATE_TYPED_TEST_SUITE_P(GLImageIOSurface, GLImageTest, GLImageTestTypes); using GLImageRGBTestTypes = testing::Types< GLImageIOSurfaceTestDelegate<gfx::BufferFormat::RGBA_8888>, @@ -106,9 +106,9 @@ GLImageIOSurfaceTestDelegate<gfx::BufferFormat::RGBA_F16>, GLImageIOSurfaceTestDelegate<gfx::BufferFormat::BGRX_1010102>>; -INSTANTIATE_TYPED_TEST_CASE_P(GLImageIOSurface, - GLImageZeroInitializeTest, - GLImageRGBTestTypes); +INSTANTIATE_TYPED_TEST_SUITE_P(GLImageIOSurface, + GLImageZeroInitializeTest, + GLImageRGBTestTypes); using GLImageBindTestTypes = testing::Types< GLImageIOSurfaceTestDelegate<gfx::BufferFormat::BGRA_8888>, @@ -117,11 +117,11 @@ GLImageIOSurfaceTestDelegate<gfx::BufferFormat::RGBA_F16>, GLImageIOSurfaceTestDelegate<gfx::BufferFormat::BGRX_1010102>>; -INSTANTIATE_TYPED_TEST_CASE_P(GLImageIOSurface, - GLImageBindTest, - GLImageBindTestTypes); +INSTANTIATE_TYPED_TEST_SUITE_P(GLImageIOSurface, + GLImageBindTest, + GLImageBindTestTypes); -INSTANTIATE_TYPED_TEST_CASE_P( +INSTANTIATE_TYPED_TEST_SUITE_P( GLImageIOSurface, GLImageCopyTest, GLImageIOSurfaceTestDelegate<gfx::BufferFormat::YUV_420_BIPLANAR>);
diff --git a/ui/gl/gl_image_native_pixmap_unittest.cc b/ui/gl/gl_image_native_pixmap_unittest.cc index 6b2bcd69..4611960 100644 --- a/ui/gl/gl_image_native_pixmap_unittest.cc +++ b/ui/gl/gl_image_native_pixmap_unittest.cc
@@ -69,7 +69,7 @@ class GLImageNativePixmapToDmabufTest : public GLImageTest<GLImageTestDelegate> {}; -TYPED_TEST_CASE_P(GLImageNativePixmapToDmabufTest); +TYPED_TEST_SUITE_P(GLImageNativePixmapToDmabufTest); TYPED_TEST_P(GLImageNativePixmapToDmabufTest, GLTexture2DToDmabuf) { if (this->delegate_.SkipTest()) @@ -97,8 +97,8 @@ } // This test verifies that GLImageNativePixmap can be exported as dmabuf fds. -REGISTER_TYPED_TEST_CASE_P(GLImageNativePixmapToDmabufTest, - GLTexture2DToDmabuf); +REGISTER_TYPED_TEST_SUITE_P(GLImageNativePixmapToDmabufTest, + GLTexture2DToDmabuf); using GLImageTestTypes = testing::Types< GLImageNativePixmapTestDelegate<gfx::BufferFormat::RGBX_8888>, @@ -108,17 +108,17 @@ #if !defined(MEMORY_SANITIZER) // Fails under MSAN: crbug.com/886995 -INSTANTIATE_TYPED_TEST_CASE_P(GLImageNativePixmap, - GLImageTest, - GLImageTestTypes); +INSTANTIATE_TYPED_TEST_SUITE_P(GLImageNativePixmap, + GLImageTest, + GLImageTestTypes); -INSTANTIATE_TYPED_TEST_CASE_P(GLImageNativePixmap, - GLImageOddSizeTest, - GLImageTestTypes); +INSTANTIATE_TYPED_TEST_SUITE_P(GLImageNativePixmap, + GLImageOddSizeTest, + GLImageTestTypes); -INSTANTIATE_TYPED_TEST_CASE_P(GLImageNativePixmap, - GLImageNativePixmapToDmabufTest, - GLImageTestTypes); +INSTANTIATE_TYPED_TEST_SUITE_P(GLImageNativePixmap, + GLImageNativePixmapToDmabufTest, + GLImageTestTypes); #endif } // namespace
diff --git a/ui/keyboard/keyboard_controller.cc b/ui/keyboard/keyboard_controller.cc index 87bca7b..cb42418 100644 --- a/ui/keyboard/keyboard_controller.cc +++ b/ui/keyboard/keyboard_controller.cc
@@ -990,6 +990,7 @@ } void KeyboardController::ReportLingeringState() { + LOG(ERROR) << "KeyboardController lingering in " << StateToStr(state_); UMA_HISTOGRAM_ENUMERATION("VirtualKeyboard.LingeringIntermediateState", state_, KeyboardControllerState::COUNT); }
diff --git a/ui/native_theme/common_theme.cc b/ui/native_theme/common_theme.cc index 120aa3ab..4a1b7da 100644 --- a/ui/native_theme/common_theme.cc +++ b/ui/native_theme/common_theme.cc
@@ -91,6 +91,14 @@ return gfx::kGoogleGrey800; case NativeTheme::kColorId_TreeText: return SkColorSetA(SK_ColorWHITE, 0xDD); + case NativeTheme::kColorId_AlertSeverityLow: + return gfx::kGoogleGreen300; + case NativeTheme::kColorId_AlertSeverityMedium: + return gfx::kGoogleYellow300; + case NativeTheme::kColorId_AlertSeverityHigh: + return gfx::kGoogleRed300; + case NativeTheme::kColorId_ThrobberSpinningColor: + return gfx::kGoogleBlue300; default: break; }
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_unittest.cc b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_unittest.cc index 17bd6a8..8c2a3d2 100644 --- a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_unittest.cc +++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_unittest.cc
@@ -780,18 +780,18 @@ crtc_properties_, plane_properties_, property_names_, use_atomic_)); } -INSTANTIATE_TEST_CASE_P(/* no prefix */, - HardwareDisplayPlaneManagerTest, - testing::Values(false, true)); +INSTANTIATE_TEST_SUITE_P(/* no prefix */, + HardwareDisplayPlaneManagerTest, + testing::Values(false, true)); // TODO(dnicoara): Migrate as many tests as possible to the general list above. -INSTANTIATE_TEST_CASE_P(/* no prefix */, - HardwareDisplayPlaneManagerLegacyTest, - testing::Values(false)); +INSTANTIATE_TEST_SUITE_P(/* no prefix */, + HardwareDisplayPlaneManagerLegacyTest, + testing::Values(false)); -INSTANTIATE_TEST_CASE_P(/* no prefix */, - HardwareDisplayPlaneManagerAtomicTest, - testing::Values(true)); +INSTANTIATE_TEST_SUITE_P(/* no prefix */, + HardwareDisplayPlaneManagerAtomicTest, + testing::Values(true)); class FakeFenceFD { public:
diff --git a/ui/ozone/platform/wayland/wayland_output.h b/ui/ozone/platform/wayland/wayland_output.h index ddf7946b..41a4d395 100644 --- a/ui/ozone/platform/wayland/wayland_output.h +++ b/ui/ozone/platform/wayland/wayland_output.h
@@ -35,6 +35,7 @@ void TriggerDelegateNotification() const; uint32_t output_id() const { return output_id_; } + bool has_output(wl_output* output) const { return output_.get() == output; } // Tells if the output has already received physical screen dimensions in the // global compositor space.
diff --git a/ui/ozone/platform/wayland/wayland_output_manager.cc b/ui/ozone/platform/wayland/wayland_output_manager.cc index 654f3c3a..992d0c3 100644 --- a/ui/ozone/platform/wayland/wayland_output_manager.cc +++ b/ui/ozone/platform/wayland/wayland_output_manager.cc
@@ -78,6 +78,15 @@ return wayland_screen; } +uint32_t WaylandOutputManager::GetIdForOutput(wl_output* output) const { + auto output_it = std::find_if( + output_list_.begin(), output_list_.end(), + [output](const auto& item) { return item->has_output(output); }); + // This is unlikely to happen, but better to be explicit here. + DCHECK(output_it != output_list_.end()); + return output_it->get()->output_id(); +} + void WaylandOutputManager::OnWaylandOutputAdded(uint32_t output_id) { if (wayland_screen_) wayland_screen_->OnOutputAdded(output_id);
diff --git a/ui/ozone/platform/wayland/wayland_output_manager.h b/ui/ozone/platform/wayland/wayland_output_manager.h index dcd6ca2f..cae7097 100644 --- a/ui/ozone/platform/wayland/wayland_output_manager.h +++ b/ui/ozone/platform/wayland/wayland_output_manager.h
@@ -38,6 +38,8 @@ std::unique_ptr<WaylandScreen> CreateWaylandScreen( WaylandConnection* connection); + uint32_t GetIdForOutput(wl_output* output) const; + private: void OnWaylandOutputAdded(uint32_t output_id); void OnWaylandOutputRemoved(uint32_t output_id);
diff --git a/ui/ozone/platform/wayland/wayland_screen.cc b/ui/ozone/platform/wayland/wayland_screen.cc index 86fac9f7..a3561bf 100644 --- a/ui/ozone/platform/wayland/wayland_screen.cc +++ b/ui/ozone/platform/wayland/wayland_screen.cc
@@ -98,12 +98,33 @@ display::Display WaylandScreen::GetDisplayForAcceleratedWidget( gfx::AcceleratedWidget widget) const { - // TODO(msisov): implement wl_surface_listener::enter and - // wl_surface_listener::leave for a wl_surface to know what surface the window - // is located on. - // - // https://crbug.com/890271 - NOTIMPLEMENTED_LOG_ONCE(); + auto* wayland_window = connection_->GetWindow(widget); + DCHECK(wayland_window); + + const std::set<uint32_t> entered_outputs_ids = + wayland_window->GetEnteredOutputsIds(); + // Although spec says a surface receives enter/leave surface events on + // create/move/resize actions, this might be called right after a window is + // created, but it has not been configured by a Wayland compositor and it has + // not received enter surface events yet. Another case is when a user switches + // between displays in a single output mode - Wayland may not send enter + // events immediately, which can result in empty container of entered ids + // (check comments in WaylandWindow::RemoveEnteredOutputId). In this case, + // it's also safe to return the primary display. + if (entered_outputs_ids.empty()) + return GetPrimaryDisplay(); + + DCHECK(!display_list_.displays().empty()); + + // A widget can be located on two or more displays. It would be better if the + // most in pixels occupied display was returned, but it's impossible to do in + // Wayland. Thus, return the one, which was the very first used. + for (const auto& display : display_list_.displays()) { + if (display.id() == *entered_outputs_ids.begin()) + return display; + } + + NOTREACHED(); return GetPrimaryDisplay(); } @@ -129,9 +150,12 @@ display::Display WaylandScreen::GetDisplayMatching( const gfx::Rect& match_rect) const { - // TODO(msisov): https://crbug.com/890272 - NOTIMPLEMENTED_LOG_ONCE(); - return GetPrimaryDisplay(); + const display::Display* display_matching = + display::FindDisplayWithBiggestIntersection(display_list_.displays(), + match_rect); + if (!display_matching) + return display::Display(); + return *display_matching; } void WaylandScreen::AddObserver(display::DisplayObserver* observer) {
diff --git a/ui/ozone/platform/wayland/wayland_screen_unittest.cc b/ui/ozone/platform/wayland/wayland_screen_unittest.cc index 2b309c9..0b76334 100644 --- a/ui/ozone/platform/wayland/wayland_screen_unittest.cc +++ b/ui/ozone/platform/wayland/wayland_screen_unittest.cc
@@ -103,6 +103,13 @@ wl_output_send_done(output_resource); } + void ValidateTheDisplayForWidget(gfx::AcceleratedWidget widget, + int64_t expected_display_id) { + display::Display display_for_widget = + platform_screen_->GetDisplayForAcceleratedWidget(widget); + EXPECT_EQ(display_for_widget.id(), expected_display_id); + } + wl::MockOutput* output_ = nullptr; WaylandOutputManager* output_manager_ = nullptr; @@ -281,6 +288,142 @@ window_->set_pointer_focus(false); } +TEST_P(WaylandScreenTest, GetDisplayMatching) { + TestDisplayObserver observer; + platform_screen_->AddObserver(&observer); + + const display::Display primary_display = + platform_screen_->GetPrimaryDisplay(); + + wl::MockOutput* output2 = server_.CreateAndInitializeOutput(); + + Sync(); + + // Place it on the right side of the primary display. + const gfx::Rect output2_rect = + gfx::Rect(primary_display.bounds().width(), 0, 1024, 768); + UpdateOutputGeometry(output2->resource(), output2_rect); + + Sync(); + + const display::Display second_display = observer.GetDisplay(); + EXPECT_EQ(second_display.bounds(), output2_rect); + + // We have two displays: display1(0:0,1024x768) and display2(1024:0,1024x768). + EXPECT_EQ( + primary_display.id(), + platform_screen_->GetDisplayMatching(gfx::Rect(0, 0, 100, 100)).id()); + EXPECT_EQ( + second_display.id(), + platform_screen_->GetDisplayMatching(gfx::Rect(1024, 0, 10, 10)).id()); + + // More pixels on second display. + EXPECT_EQ( + second_display.id(), + platform_screen_->GetDisplayMatching(gfx::Rect(1020, 0, 10, 10)).id()); + + // More pixels on first display. + EXPECT_EQ( + primary_display.id(), + platform_screen_->GetDisplayMatching(gfx::Rect(1018, 0, 10, 10)).id()); + + // Half pixels on second and half on primary. + EXPECT_EQ( + primary_display.id(), + platform_screen_->GetDisplayMatching(gfx::Rect(1019, 0, 10, 10)).id()); + + // Place second display 700 pixels below along y axis (1024:700,1024x768) + UpdateOutputGeometry( + output2->resource(), + gfx::Rect(gfx::Point(output2_rect.x(), output2_rect.y() + 700), + output2_rect.size())); + + Sync(); + + // The match rect is located outside the displays. + EXPECT_EQ( + display::kInvalidDisplayId, + platform_screen_->GetDisplayMatching(gfx::Rect(1024, 0, 10, 10)).id()); + + // At least some of the pixels are located on the display. + EXPECT_EQ( + primary_display.id(), + platform_screen_->GetDisplayMatching(gfx::Rect(1023, 0, 10, 10)).id()); + + // Most of pixels are located on second display. + EXPECT_EQ( + second_display.id(), + platform_screen_->GetDisplayMatching(gfx::Rect(1023, 695, 10, 10)).id()); + + platform_screen_->RemoveObserver(&observer); +} + +TEST_P(WaylandScreenTest, GetDisplayForAcceleratedWidget) { + TestDisplayObserver observer; + platform_screen_->AddObserver(&observer); + + const display::Display primary_display = + platform_screen_->GetPrimaryDisplay(); + + // Create an additional display. + wl::MockOutput* output2 = server_.CreateAndInitializeOutput(); + + Sync(); + + // Place it on the right side of the primary + // display. + const gfx::Rect output2_rect = + gfx::Rect(primary_display.bounds().width(), 0, 1024, 768); + UpdateOutputGeometry(output2->resource(), output2_rect); + + Sync(); + + const display::Display secondary_display = observer.GetDisplay(); + EXPECT_EQ(secondary_display.bounds(), output2_rect); + + const gfx::AcceleratedWidget widget = window_->GetWidget(); + // There must be a primary display used if the window has not received an + // enter event yet. + ValidateTheDisplayForWidget(widget, primary_display.id()); + + // Now, send enter event for the surface, which was created before. + wl::MockSurface* surface = server_.GetObject<wl::MockSurface>(widget); + ASSERT_TRUE(surface); + wl_surface_send_enter(surface->resource(), output_->resource()); + + Sync(); + + // The id of the entered display must correspond to the primary output. + ValidateTheDisplayForWidget(widget, primary_display.id()); + + Sync(); + + // Enter the second output now. + wl_surface_send_enter(surface->resource(), output2->resource()); + + Sync(); + + // The id of the entered display must still correspond to the primary output. + ValidateTheDisplayForWidget(widget, primary_display.id()); + + // Leave the first output. + wl_surface_send_leave(surface->resource(), output_->resource()); + + Sync(); + + // The id of the entered display must correspond to the second output. + ValidateTheDisplayForWidget(widget, secondary_display.id()); + + // Leaving the same output twice (check comment in + // WaylandWindow::RemoveEnteredOutputId), must be ok and nothing must change. + wl_surface_send_leave(surface->resource(), output_->resource()); + + Sync(); + + // The id of the entered display must correspond to the second output. + ValidateTheDisplayForWidget(widget, secondary_display.id()); +} + INSTANTIATE_TEST_SUITE_P(XdgVersionV5Test, WaylandScreenTest, ::testing::Values(kXdgShellV5));
diff --git a/ui/ozone/platform/wayland/wayland_window.cc b/ui/ozone/platform/wayland/wayland_window.cc index eeb3068c1..82d6c016 100644 --- a/ui/ozone/platform/wayland/wayland_window.cc +++ b/ui/ozone/platform/wayland/wayland_window.cc
@@ -16,6 +16,7 @@ #include "ui/events/ozone/events_ozone.h" #include "ui/gfx/geometry/point_f.h" #include "ui/ozone/platform/wayland/wayland_connection.h" +#include "ui/ozone/platform/wayland/wayland_output_manager.h" #include "ui/ozone/platform/wayland/wayland_pointer.h" #include "ui/ozone/platform/wayland/xdg_popup_wrapper_v5.h" #include "ui/ozone/platform/wayland/xdg_popup_wrapper_v6.h" @@ -119,6 +120,7 @@ return false; } wl_surface_set_user_data(surface_.get(), this); + AddSurfaceListener(); ui::PlatformWindowType ui_window_type = properties.type; switch (ui_window_type) { @@ -153,6 +155,10 @@ return surface_.id(); } +std::set<uint32_t> WaylandWindow::GetEnteredOutputsIds() const { + return entered_outputs_ids_; +} + void WaylandWindow::CreateXdgPopup() { if (bounds_.IsEmpty()) return; @@ -643,4 +649,56 @@ return static_cast<WmMoveResizeHandler*>(this); } +void WaylandWindow::AddSurfaceListener() { + static struct wl_surface_listener surface_listener = { + &WaylandWindow::Enter, + &WaylandWindow::Leave, + }; + wl_surface_add_listener(surface_.get(), &surface_listener, this); +} + +void WaylandWindow::AddEnteredOutputId(struct wl_output* output) { + const uint32_t entered_output_id = + connection_->wayland_output_manager()->GetIdForOutput(output); + DCHECK_NE(entered_output_id, 0u); + auto entered_output_id_it = entered_outputs_ids_.insert(entered_output_id); + DCHECK(entered_output_id_it.second); +} + +void WaylandWindow::RemoveEnteredOutputId(struct wl_output* output) { + const uint32_t left_output_id = + connection_->wayland_output_manager()->GetIdForOutput(output); + auto entered_output_id_it = entered_outputs_ids_.find(left_output_id); + // Workaround: when a user switches physical output between two displays, + // a window does not necessarily receive enter events immediately or until + // a user resizes/moves the window. It means that switching output between + // displays in a single output mode results in leave events, but the surface + // might not have received enter event before. Thus, remove the id of left + // output only if it was stored before. + if (entered_output_id_it != entered_outputs_ids_.end()) + entered_outputs_ids_.erase(entered_output_id_it); +} + +// static +void WaylandWindow::Enter(void* data, + struct wl_surface* wl_surface, + struct wl_output* output) { + auto* window = static_cast<WaylandWindow*>(data); + if (window) { + DCHECK(window->surface_.get() == wl_surface); + window->AddEnteredOutputId(output); + } +} + +// static +void WaylandWindow::Leave(void* data, + struct wl_surface* wl_surface, + struct wl_output* output) { + auto* window = static_cast<WaylandWindow*>(data); + if (window) { + DCHECK(window->surface_.get() == wl_surface); + window->RemoveEnteredOutputId(output); + } +} + } // namespace ui
diff --git a/ui/ozone/platform/wayland/wayland_window.h b/ui/ozone/platform/wayland/wayland_window.h index a3ab6c47..4176c6a 100644 --- a/ui/ozone/platform/wayland/wayland_window.h +++ b/ui/ozone/platform/wayland/wayland_window.h
@@ -5,6 +5,9 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_WAYLAND_WINDOW_H_ #define UI_OZONE_PLATFORM_WAYLAND_WAYLAND_WINDOW_H_ +#include <set> +#include <vector> + #include "base/callback.h" #include "base/memory/ref_counted.h" #include "ui/events/platform/platform_event_dispatcher.h" @@ -54,6 +57,13 @@ gfx::AcceleratedWidget GetWidget() const; + // Returns the list of wl_outputs aka displays, which this window occupies. + // The window can be shown on one or more displays at the same time. An empty + // vector can also be returned if the window is not configured on the + // compositor side or it has been moved due to unplug action (check the + // comment in RemoveEnteredOutputId). + std::set<uint32_t> GetEnteredOutputsIds() const; + // Apply the bounds specified in the most recent configure event. This should // be called after processing all pending events in the wayland connection. void ApplyPendingBounds(); @@ -154,6 +164,20 @@ WmMoveResizeHandler* AsWmMoveResizeHandler(); + // Install a surface listener and start getting wl_output enter/leave events. + void AddSurfaceListener(); + + void AddEnteredOutputId(struct wl_output* output); + void RemoveEnteredOutputId(struct wl_output* output); + + // wl_surface_listener + static void Enter(void* data, + struct wl_surface* wl_surface, + struct wl_output* output); + static void Leave(void* data, + struct wl_surface* wl_surface, + struct wl_output* output); + PlatformWindowDelegate* delegate_; WaylandConnection* connection_; WaylandWindow* parent_window_ = nullptr; @@ -195,6 +219,9 @@ bool is_tooltip_ = false; + // Stores the list of entered outputs that the window is currently in. + std::set<uint32_t> entered_outputs_ids_; + DISALLOW_COPY_AND_ASSIGN(WaylandWindow); };
diff --git a/ui/strings/translations/ui_strings_es-419.xtb b/ui/strings/translations/ui_strings_es-419.xtb index 24264aa9..7db62a1e 100644 --- a/ui/strings/translations/ui_strings_es-419.xtb +++ b/ui/strings/translations/ui_strings_es-419.xtb
@@ -5,7 +5,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{Hace 1 día.}other{Hace # días.}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{Hace 1 minuto}other{Hace # minutos}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 min}other{# min}}</translation> -<translation id="1181037720776840403">Eliminar</translation> +<translation id="1181037720776840403">Quitar</translation> <translation id="1243314992276662751">Cargar</translation> <translation id="1269641567813814718">Win</translation> <translation id="1293699935367580298">Esc</translation>
diff --git a/ui/strings/translations/ui_strings_es.xtb b/ui/strings/translations/ui_strings_es.xtb index 8a0bc1a6..5dfc3a3 100644 --- a/ui/strings/translations/ui_strings_es.xtb +++ b/ui/strings/translations/ui_strings_es.xtb
@@ -5,7 +5,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{Hace 1 día}other{Hace # días}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{Hace 1 minuto}other{Hace # minutos}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 min}other{# min}}</translation> -<translation id="1181037720776840403">Eliminar</translation> +<translation id="1181037720776840403">Quitar</translation> <translation id="1243314992276662751">Subir</translation> <translation id="1269641567813814718">Win</translation> <translation id="1293699935367580298">Esc</translation>
diff --git a/ui/strings/translations/ui_strings_gu.xtb b/ui/strings/translations/ui_strings_gu.xtb index 26054ea3..a7e55f39 100644 --- a/ui/strings/translations/ui_strings_gu.xtb +++ b/ui/strings/translations/ui_strings_gu.xtb
@@ -5,7 +5,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{1 દિવસ પહેલા}one{# દિવસ પહેલાં}other{# દિવસ પહેલાં}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{1 મિનિટ પહેલાં}one{# મિનિટ પહેલાં}other{# મિનિટ પહેલાં}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 મિ}one{# મિ}other{# મિ}}</translation> -<translation id="1181037720776840403">દૂર કરો</translation> +<translation id="1181037720776840403">કાઢી નાખો</translation> <translation id="1243314992276662751">અપલોડ કરો</translation> <translation id="1269641567813814718">Win</translation> <translation id="1293699935367580298">Esc</translation>
diff --git a/ui/strings/translations/ui_strings_hi.xtb b/ui/strings/translations/ui_strings_hi.xtb index bd41fa8..b745c82 100644 --- a/ui/strings/translations/ui_strings_hi.xtb +++ b/ui/strings/translations/ui_strings_hi.xtb
@@ -5,7 +5,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{1 दिन पहले}one{# दिन पहले}other{# दिन पहले}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{1 मिनट पहले}one{# मिनट पहले}other{# मिनट पहले}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 मिनट}one{# मिनट}other{# मिनट}}</translation> -<translation id="1181037720776840403">निकालें</translation> +<translation id="1181037720776840403">हटाएं</translation> <translation id="1243314992276662751">अपलोड करें</translation> <translation id="1269641567813814718">Win</translation> <translation id="1293699935367580298">Esc</translation>
diff --git a/ui/strings/translations/ui_strings_iw.xtb b/ui/strings/translations/ui_strings_iw.xtb index c647a01b..1db0d80 100644 --- a/ui/strings/translations/ui_strings_iw.xtb +++ b/ui/strings/translations/ui_strings_iw.xtb
@@ -5,7 +5,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{לפני יום אחד}two{לפני יומיים}many{לפני # ימים}other{לפני # ימים}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{לפני דקה אחת}two{לפני # דקות}many{לפני # דקות}other{לפני # דקות}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{דקה}two{# דק}many{# דק}other{# דק}}</translation> -<translation id="1181037720776840403">הסר</translation> +<translation id="1181037720776840403">הסרה</translation> <translation id="1243314992276662751">העלה</translation> <translation id="1269641567813814718">Win</translation> <translation id="1293699935367580298">Esc</translation>
diff --git a/ui/strings/translations/ui_strings_kn.xtb b/ui/strings/translations/ui_strings_kn.xtb index 02ce022..59075009 100644 --- a/ui/strings/translations/ui_strings_kn.xtb +++ b/ui/strings/translations/ui_strings_kn.xtb
@@ -5,7 +5,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{1 ದಿನದ ಹಿಂದೆ}one{# ದಿನಗಳ ಹಿಂದೆ}other{# ದಿನಗಳ ಹಿಂದೆ}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{1 ನಿಮಿಷದ ಹಿಂದೆ}one{# ನಿಮಿಷಗಳ ಹಿಂದೆ}other{# ನಿಮಿಷಗಳ ಹಿಂದೆ}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1ಮೀ}one{#ಮೀ}other{#ಮೀ}}</translation> -<translation id="1181037720776840403">ತೆಗೆದುಹಾಕು</translation> +<translation id="1181037720776840403">ತೆಗೆದುಹಾಕಿ</translation> <translation id="1243314992276662751">ಅಪ್ಲೋಡ್</translation> <translation id="1269641567813814718">Win</translation> <translation id="1293699935367580298">Esc</translation>
diff --git a/ui/strings/translations/ui_strings_te.xtb b/ui/strings/translations/ui_strings_te.xtb index d68a3edc2..381b21ac0 100644 --- a/ui/strings/translations/ui_strings_te.xtb +++ b/ui/strings/translations/ui_strings_te.xtb
@@ -11,7 +11,7 @@ <translation id="1293699935367580298">Esc</translation> <translation id="1306549533752902673">సిఫార్సు చేసిన యాప్లు</translation> <translation id="1368832886055348810">ఎడమ నుండి కుడికి</translation> -<translation id="1383876407941801731">శోధించు</translation> +<translation id="1383876407941801731">వెతుకు</translation> <translation id="1398853756734560583">గరిష్ఠీకరించు</translation> <translation id="1413622004203049571"><ph name="NOTIFIER_NAME" /> నుండి వచ్చే నోటిఫికేషన్లను నిలిపివేయి</translation> <translation id="1591184457164800433">{MINUTES,plural, =1{1 నిమిషం మరియు }other{# నిమిషాలు మరియు }}</translation>
diff --git a/ui/strings/translations/ui_strings_zh-CN.xtb b/ui/strings/translations/ui_strings_zh-CN.xtb index af2c8805..0f3987bc 100644 --- a/ui/strings/translations/ui_strings_zh-CN.xtb +++ b/ui/strings/translations/ui_strings_zh-CN.xtb
@@ -5,7 +5,7 @@ <translation id="1127811143501539442">{DAYS,plural, =1{1 天前}other{# 天前}}</translation> <translation id="1156623771253174079">{SECONDS,plural, =1{1 分钟前}other{# 分钟前}}</translation> <translation id="1169783199079129864">{MINUTES,plural, =1{1 分钟}other{# 分钟}}</translation> -<translation id="1181037720776840403">删除</translation> +<translation id="1181037720776840403">移除</translation> <translation id="1243314992276662751">上传</translation> <translation id="1269641567813814718">Win 键</translation> <translation id="1293699935367580298">Esc</translation>