summaryrefslogtreecommitdiff
path: root/chromium/components
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components')
-rw-r--r--chromium/components/autofill/content/common/autofill_param_traits_macros.h1
-rw-r--r--chromium/components/autofill/content/common/autofill_types.mojom1
-rw-r--r--chromium/components/autofill/content/common/autofill_types_struct_traits.cc2
-rw-r--r--chromium/components/autofill/content/common/autofill_types_struct_traits.h4
-rw-r--r--chromium/components/autofill/content/renderer/form_autofill_util.cc11
-rw-r--r--chromium/components/autofill/core/browser/autofill_manager.cc8
-rw-r--r--chromium/components/autofill/core/browser/autofill_manager_unittest.cc151
-rw-r--r--chromium/components/autofill/core/browser/autofill_metrics_unittest.cc57
-rw-r--r--chromium/components/autofill/core/browser/autofill_test_utils.cc1
-rw-r--r--chromium/components/autofill/core/browser/credit_card_unittest.cc4
-rw-r--r--chromium/components/autofill/core/browser/form_structure.cc9
-rw-r--r--chromium/components/autofill/core/browser/form_structure.h5
-rw-r--r--chromium/components/autofill/core/browser/form_structure_unittest.cc7
-rw-r--r--chromium/components/autofill/core/common/BUILD.gn1
-rw-r--r--chromium/components/autofill/core/common/DEPS3
-rw-r--r--chromium/components/autofill/core/common/form_data.cc15
-rw-r--r--chromium/components/autofill/core/common/form_data.h2
-rw-r--r--chromium/components/autofill/core/common/form_data_unittest.cc35
-rw-r--r--chromium/components/autofill/core/common/signatures_util.cc33
-rw-r--r--chromium/components/favicon/ios/web_favicon_driver.h12
-rw-r--r--chromium/components/favicon/ios/web_favicon_driver.mm43
-rw-r--r--chromium/components/password_manager/core/browser/password_manager.cc6
-rw-r--r--chromium/components/password_manager/core/browser/password_manager_unittest.cc42
-rw-r--r--chromium/components/safe_browsing/password_protection/password_protection_navigation_throttle.cc16
-rw-r--r--chromium/components/safe_browsing/password_protection/password_protection_navigation_throttle.h5
-rw-r--r--chromium/components/safe_browsing/password_protection/password_protection_request.h5
-rw-r--r--chromium/components/safe_browsing/password_protection/password_protection_service.cc9
-rw-r--r--chromium/components/strings/components_chromium_strings_el.xtb6
-rw-r--r--chromium/components/strings/components_google_chrome_strings_el.xtb6
-rw-r--r--chromium/components/strings/components_strings_am.xtb5
-rw-r--r--chromium/components/strings/components_strings_ar.xtb15
-rw-r--r--chromium/components/strings/components_strings_bg.xtb1
-rw-r--r--chromium/components/strings/components_strings_bn.xtb21
-rw-r--r--chromium/components/strings/components_strings_ca.xtb9
-rw-r--r--chromium/components/strings/components_strings_cs.xtb1
-rw-r--r--chromium/components/strings/components_strings_da.xtb1
-rw-r--r--chromium/components/strings/components_strings_de.xtb11
-rw-r--r--chromium/components/strings/components_strings_el.xtb1
-rw-r--r--chromium/components/strings/components_strings_en-GB.xtb5
-rw-r--r--chromium/components/strings/components_strings_es-419.xtb3
-rw-r--r--chromium/components/strings/components_strings_es.xtb7
-rw-r--r--chromium/components/strings/components_strings_et.xtb3
-rw-r--r--chromium/components/strings/components_strings_fa.xtb7
-rw-r--r--chromium/components/strings/components_strings_fi.xtb9
-rw-r--r--chromium/components/strings/components_strings_fil.xtb3
-rw-r--r--chromium/components/strings/components_strings_fr.xtb1
-rw-r--r--chromium/components/strings/components_strings_gu.xtb7
-rw-r--r--chromium/components/strings/components_strings_hi.xtb5
-rw-r--r--chromium/components/strings/components_strings_hr.xtb1
-rw-r--r--chromium/components/strings/components_strings_hu.xtb1
-rw-r--r--chromium/components/strings/components_strings_id.xtb7
-rw-r--r--chromium/components/strings/components_strings_it.xtb5
-rw-r--r--chromium/components/strings/components_strings_iw.xtb1
-rw-r--r--chromium/components/strings/components_strings_ja.xtb1
-rw-r--r--chromium/components/strings/components_strings_kn.xtb15
-rw-r--r--chromium/components/strings/components_strings_ko.xtb5
-rw-r--r--chromium/components/strings/components_strings_lt.xtb1
-rw-r--r--chromium/components/strings/components_strings_lv.xtb7
-rw-r--r--chromium/components/strings/components_strings_ml.xtb19
-rw-r--r--chromium/components/strings/components_strings_mr.xtb53
-rw-r--r--chromium/components/strings/components_strings_ms.xtb3
-rw-r--r--chromium/components/strings/components_strings_nl.xtb5
-rw-r--r--chromium/components/strings/components_strings_no.xtb7
-rw-r--r--chromium/components/strings/components_strings_pl.xtb3
-rw-r--r--chromium/components/strings/components_strings_pt-BR.xtb7
-rw-r--r--chromium/components/strings/components_strings_pt-PT.xtb1
-rw-r--r--chromium/components/strings/components_strings_ro.xtb1
-rw-r--r--chromium/components/strings/components_strings_ru.xtb5
-rw-r--r--chromium/components/strings/components_strings_sk.xtb5
-rw-r--r--chromium/components/strings/components_strings_sl.xtb1
-rw-r--r--chromium/components/strings/components_strings_sr.xtb1
-rw-r--r--chromium/components/strings/components_strings_sv.xtb7
-rw-r--r--chromium/components/strings/components_strings_sw.xtb5
-rw-r--r--chromium/components/strings/components_strings_ta.xtb5
-rw-r--r--chromium/components/strings/components_strings_te.xtb1
-rw-r--r--chromium/components/strings/components_strings_th.xtb3
-rw-r--r--chromium/components/strings/components_strings_tr.xtb3
-rw-r--r--chromium/components/strings/components_strings_uk.xtb3
-rw-r--r--chromium/components/strings/components_strings_vi.xtb1
-rw-r--r--chromium/components/strings/components_strings_zh-CN.xtb3
-rw-r--r--chromium/components/strings/components_strings_zh-TW.xtb1
-rw-r--r--chromium/components/ukm/test_ukm_recorder.cc6
-rw-r--r--chromium/components/ukm/test_ukm_recorder.h2
-rw-r--r--chromium/components/ukm/ukm_recorder_impl.cc72
-rw-r--r--chromium/components/ukm/ukm_recorder_impl.h8
-rw-r--r--chromium/components/ukm/ukm_service_unittest.cc172
-rw-r--r--chromium/components/ukm/ukm_source.cc4
-rw-r--r--chromium/components/ukm/ukm_source.h7
88 files changed, 790 insertions, 283 deletions
diff --git a/chromium/components/autofill/content/common/autofill_param_traits_macros.h b/chromium/components/autofill/content/common/autofill_param_traits_macros.h
index e738b99bdaa..76bd83dc37f 100644
--- a/chromium/components/autofill/content/common/autofill_param_traits_macros.h
+++ b/chromium/components/autofill/content/common/autofill_param_traits_macros.h
@@ -50,6 +50,7 @@ IPC_STRUCT_TRAITS_BEGIN(autofill::FormData)
IPC_STRUCT_TRAITS_MEMBER(name)
IPC_STRUCT_TRAITS_MEMBER(origin)
IPC_STRUCT_TRAITS_MEMBER(action)
+ IPC_STRUCT_TRAITS_MEMBER(main_frame_origin)
IPC_STRUCT_TRAITS_MEMBER(is_form_tag)
IPC_STRUCT_TRAITS_MEMBER(is_formless_checkout)
IPC_STRUCT_TRAITS_MEMBER(fields)
diff --git a/chromium/components/autofill/content/common/autofill_types.mojom b/chromium/components/autofill/content/common/autofill_types.mojom
index f37fb144071..b798c695d10 100644
--- a/chromium/components/autofill/content/common/autofill_types.mojom
+++ b/chromium/components/autofill/content/common/autofill_types.mojom
@@ -104,6 +104,7 @@ struct FormData {
string name;
url.mojom.Url origin;
url.mojom.Url action;
+ url.mojom.Url main_frame_origin;
bool is_form_tag;
bool is_formless_checkout;
array<FormFieldData> fields;
diff --git a/chromium/components/autofill/content/common/autofill_types_struct_traits.cc b/chromium/components/autofill/content/common/autofill_types_struct_traits.cc
index 8b016138358..0e88facc0ab 100644
--- a/chromium/components/autofill/content/common/autofill_types_struct_traits.cc
+++ b/chromium/components/autofill/content/common/autofill_types_struct_traits.cc
@@ -476,6 +476,8 @@ bool StructTraits<autofill::mojom::FormDataDataView, autofill::FormData>::Read(
return false;
if (!data.ReadAction(&out->action))
return false;
+ if (!data.ReadMainFrameOrigin(&out->main_frame_origin))
+ return false;
out->is_form_tag = data.is_form_tag();
out->is_formless_checkout = data.is_formless_checkout();
diff --git a/chromium/components/autofill/content/common/autofill_types_struct_traits.h b/chromium/components/autofill/content/common/autofill_types_struct_traits.h
index f1102ba9a37..8d3b9bc9e19 100644
--- a/chromium/components/autofill/content/common/autofill_types_struct_traits.h
+++ b/chromium/components/autofill/content/common/autofill_types_struct_traits.h
@@ -191,6 +191,10 @@ struct StructTraits<autofill::mojom::FormDataDataView, autofill::FormData> {
static const GURL& action(const autofill::FormData& r) { return r.action; }
+ static const GURL& main_frame_origin(const autofill::FormData& r) {
+ return r.main_frame_origin;
+ }
+
static bool is_form_tag(const autofill::FormData& r) { return r.is_form_tag; }
static bool is_formless_checkout(const autofill::FormData& r) {
diff --git a/chromium/components/autofill/content/renderer/form_autofill_util.cc b/chromium/components/autofill/content/renderer/form_autofill_util.cc
index 31d27cbfeb5..a832d801838 100644
--- a/chromium/components/autofill/content/renderer/form_autofill_util.cc
+++ b/chromium/components/autofill/content/renderer/form_autofill_util.cc
@@ -1145,6 +1145,11 @@ bool UnownedFormElementsAndFieldSetsToFormData(
FormData* form,
FormFieldData* field) {
form->origin = GetCanonicalOriginForDocument(document);
+ DCHECK(document.GetFrame()->Top());
+ url::Origin main_frame_origin =
+ document.GetFrame()->Top()->GetSecurityOrigin();
+ form->main_frame_origin = main_frame_origin.GetURL();
+
form->is_form_tag = false;
return FormOrFieldsetsToFormData(
@@ -1463,14 +1468,16 @@ bool WebFormElementToFormData(
ExtractMask extract_mask,
FormData* form,
FormFieldData* field) {
- const WebLocalFrame* frame = form_element.GetDocument().GetFrame();
+ WebLocalFrame* frame = form_element.GetDocument().GetFrame();
if (!frame)
return false;
form->name = GetFormIdentifier(form_element);
form->origin = GetCanonicalOriginForDocument(frame->GetDocument());
form->action = frame->GetDocument().CompleteURL(form_element.Action());
-
+ DCHECK(frame->Top());
+ url::Origin main_frame_origin = frame->Top()->GetSecurityOrigin();
+ form->main_frame_origin = main_frame_origin.GetURL();
// If the completed URL is not valid, just use the action we get from
// WebKit.
if (!form->action.is_valid())
diff --git a/chromium/components/autofill/core/browser/autofill_manager.cc b/chromium/components/autofill/core/browser/autofill_manager.cc
index 01583656d21..50d4ecb114c 100644
--- a/chromium/components/autofill/core/browser/autofill_manager.cc
+++ b/chromium/components/autofill/core/browser/autofill_manager.cc
@@ -20,6 +20,7 @@
#include "base/feature_list.h"
#include "base/files/file_util.h"
#include "base/guid.h"
+#include "base/i18n/rtl.h"
#include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "base/message_loop/message_loop.h"
@@ -114,7 +115,12 @@ bool SectionIsAutofilled(const FormStructure& form_structure,
// characters removed.
base::string16 SanitizeCreditCardFieldValue(const base::string16& value) {
base::string16 sanitized;
+ // We remove whitespace as well as some invisible unicode characters.
base::TrimWhitespace(value, base::TRIM_ALL, &sanitized);
+ base::TrimString(sanitized,
+ base::string16({base::i18n::kRightToLeftMark,
+ base::i18n::kLeftToRightMark}),
+ &sanitized);
// Some sites have ____-____-____-____ in their credit card number fields, for
// example.
base::ReplaceChars(sanitized, base::ASCIIToUTF16("-_"),
@@ -2068,7 +2074,7 @@ void AutofillManager::ParseForms(const std::vector<FormData>& forms) {
return;
// Setup the url for metrics that we will collect for this form.
- form_interactions_ukm_logger_->OnFormsParsed(forms[0].origin);
+ form_interactions_ukm_logger_->OnFormsParsed(forms[0].main_frame_origin);
std::vector<FormStructure*> non_queryable_forms;
std::vector<FormStructure*> queryable_forms;
diff --git a/chromium/components/autofill/core/browser/autofill_manager_unittest.cc b/chromium/components/autofill/core/browser/autofill_manager_unittest.cc
index 74d41a7f88f..1fdfdee5ba1 100644
--- a/chromium/components/autofill/core/browser/autofill_manager_unittest.cc
+++ b/chromium/components/autofill/core/browser/autofill_manager_unittest.cc
@@ -95,6 +95,12 @@ const char kUTF8MidlineEllipsis[] =
const base::Time kArbitraryTime = base::Time::FromDoubleT(25);
const base::Time kMuchLaterTime = base::Time::FromDoubleT(5000);
+const std::string NextYear() {
+ base::Time::Exploded now;
+ base::Time::Now().LocalExplode(&now);
+ return std::to_string(now.year + 1);
+}
+
class MockAutofillClient : public TestAutofillClient {
public:
MockAutofillClient() {}
@@ -982,9 +988,11 @@ class AutofillManagerTest : public testing::Test {
if (is_https) {
form->origin = GURL("https://myform.com/form.html");
form->action = GURL("https://myform.com/submit.html");
+ form->main_frame_origin = GURL("https://myform_root.com/form.html");
} else {
form->origin = GURL("http://myform.com/form.html");
form->action = GURL("http://myform.com/submit.html");
+ form->main_frame_origin = GURL("http://myform_root.com/form.html");
}
FormFieldData field;
@@ -1042,7 +1050,7 @@ class AutofillManagerTest : public testing::Test {
// Edit the data, and submit.
form.fields[1].value = ASCIIToUTF16("4111111111111111");
form.fields[2].value = ASCIIToUTF16("11");
- form.fields[3].value = ASCIIToUTF16("2017");
+ form.fields[3].value = ASCIIToUTF16(NextYear());
EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _));
FormSubmitted(form);
}
@@ -1057,7 +1065,7 @@ class AutofillManagerTest : public testing::Test {
FormsSeen(std::vector<FormData>(1, *form));
*card = CreditCard(CreditCard::MASKED_SERVER_CARD, "a123");
test::SetCreditCardInfo(card, "John Dillinger", "1881" /* Visa */, "01",
- "2017", "1");
+ NextYear().c_str(), "1");
card->SetNetworkForMaskedCard(kVisaCard);
EXPECT_CALL(*autofill_driver_, SendFormDataToRenderer(_, _, _))
@@ -1719,13 +1727,36 @@ TEST_F(AutofillManagerTest, GetCreditCardSuggestions_StopCharsOnly) {
}
// Test that we return all credit card profile suggestions when the triggering
+// field has some invisible unicode characters in it.
+TEST_F(AutofillManagerTest, GetCreditCardSuggestions_InvisibleUnicodeOnly) {
+ // Set up our form data.
+ FormData form;
+ CreateTestCreditCardFormData(&form, true, false);
+ std::vector<FormData> forms(1, form);
+ FormsSeen(forms);
+
+ FormFieldData field = form.fields[1];
+ field.value = base::string16({0x200E, 0x200F});
+ GetAutofillSuggestions(form, field);
+
+ // Test that we sent the right values to the external delegate.
+ external_delegate_->CheckSuggestions(
+ kDefaultPageID,
+ Suggestion(std::string("Visa") + kUTF8MidlineEllipsis + "3456", "04/99",
+ kVisaCard, autofill_manager_->GetPackedCreditCardID(4)),
+ Suggestion(std::string("Mastercard") + kUTF8MidlineEllipsis + "8765",
+ "10/98", kMasterCard,
+ autofill_manager_->GetPackedCreditCardID(5)));
+}
+
+// Test that we return all credit card profile suggestions when the triggering
// field has stop characters in it and some input.
TEST_F(AutofillManagerTest, GetCreditCardSuggestions_StopCharsWithInput) {
// Add a credit card with particular numbers that we will attempt to recall.
CreditCard credit_card;
test::SetCreditCardInfo(&credit_card, "John Smith",
"5255667890123123", // Mastercard
- "08", "2017", "1");
+ "08", NextYear().c_str(), "1");
credit_card.set_guid("00000000-0000-0000-0000-000000000007");
autofill_manager_->AddCreditCard(credit_card);
@@ -1740,11 +1771,13 @@ TEST_F(AutofillManagerTest, GetCreditCardSuggestions_StopCharsWithInput) {
field.value = ASCIIToUTF16("5255-66__-____-____");
GetAutofillSuggestions(form, field);
+ std::string expected_date = "08/" + NextYear().substr(2, 2);
+
// Test that we sent the right value to the external delegate.
external_delegate_->CheckSuggestions(
kDefaultPageID,
Suggestion(std::string("Mastercard") + kUTF8MidlineEllipsis + "3123",
- "08/17", kMasterCard,
+ expected_date, kMasterCard,
autofill_manager_->GetPackedCreditCardID(7)));
}
@@ -4014,7 +4047,7 @@ TEST_F(AutofillManagerTest, MAYBE_CreditCardSavedWhenAutocompleteOff) {
// Edit the data, and submit.
form.fields[1].value = ASCIIToUTF16("4111111111111111");
form.fields[2].value = ASCIIToUTF16("11");
- form.fields[3].value = ASCIIToUTF16("2017");
+ form.fields[3].value = ASCIIToUTF16(NextYear());
EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _));
FormSubmitted(form);
}
@@ -4033,7 +4066,7 @@ TEST_F(AutofillManagerTest, InvalidCreditCardNumberIsNotSaved) {
ASSERT_FALSE(autofill::IsValidCreditCardNumber(ASCIIToUTF16(card)));
form.fields[1].value = ASCIIToUTF16(card);
form.fields[2].value = ASCIIToUTF16("11");
- form.fields[3].value = ASCIIToUTF16("2017");
+ form.fields[3].value = ASCIIToUTF16(NextYear());
EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
FormSubmitted(form);
}
@@ -4762,7 +4795,7 @@ TEST_F(AutofillManagerTest, DontOfferToSavePaymentsCard) {
else if (form.fields[i].name == ASCIIToUTF16("ccmonth"))
form.fields[i].value = ASCIIToUTF16("01");
else if (form.fields[i].name == ASCIIToUTF16("ccyear"))
- form.fields[i].value = ASCIIToUTF16("2017");
+ form.fields[i].value = ASCIIToUTF16(NextYear());
}
CardUnmaskDelegate::UnmaskResponse response;
@@ -4810,7 +4843,7 @@ TEST_F(AutofillManagerTest, CreditCardDisabledDoesNotSave) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -4886,7 +4919,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -4937,7 +4970,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_RequestCVCEnabled_DoesNotTrigger) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
@@ -4974,7 +5007,7 @@ TEST_F(AutofillManagerTest, UploadCreditCardAndSaveCopy) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16(card_number);
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
FormSubmitted(credit_card_form);
@@ -5019,7 +5052,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_FeatureNotEnabled) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -5057,7 +5090,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_CvcUnavailable) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16(""); // CVC MISSING
base::HistogramTester histogram_tester;
@@ -5095,7 +5128,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_CvcInvalidLength) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("1234");
base::HistogramTester histogram_tester;
@@ -5133,6 +5166,8 @@ TEST_F(AutofillManagerTest, UploadCreditCard_MultipleCvcFields) {
credit_card_form.name = ASCIIToUTF16("MyForm");
credit_card_form.origin = GURL("https://myform.com/form.html");
credit_card_form.action = GURL("https://myform.com/submit.html");
+ credit_card_form.main_frame_origin =
+ GURL("https://myform_root.com/form.html");
FormFieldData field;
test::CreateTestFormField("Card Name", "cardname", "", "text", &field);
@@ -5154,7 +5189,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_MultipleCvcFields) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16(""); // CVC MISSING
credit_card_form.fields[5].value = ASCIIToUTF16("123");
@@ -5193,6 +5228,8 @@ TEST_F(AutofillManagerTest, UploadCreditCard_NoCvcFieldOnForm) {
credit_card_form.name = ASCIIToUTF16("MyForm");
credit_card_form.origin = GURL("https://myform.com/form.html");
credit_card_form.action = GURL("https://myform.com/submit.html");
+ credit_card_form.main_frame_origin =
+ GURL("https://myform_root.com/form.html");
FormFieldData field;
test::CreateTestFormField("Card Name", "cardname", "", "text", &field);
@@ -5210,7 +5247,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_NoCvcFieldOnForm) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
base::HistogramTester histogram_tester;
@@ -5248,6 +5285,8 @@ TEST_F(AutofillManagerTest,
credit_card_form.name = ASCIIToUTF16("MyForm");
credit_card_form.origin = GURL("https://myform.com/form.html");
credit_card_form.action = GURL("https://myform.com/submit.html");
+ credit_card_form.main_frame_origin =
+ GURL("https://myform_root.com/form.html");
FormFieldData field;
test::CreateTestFormField("Card Name", "cardname", "", "text", &field);
@@ -5267,7 +5306,7 @@ TEST_F(AutofillManagerTest,
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("1234");
base::HistogramTester histogram_tester;
@@ -5306,6 +5345,8 @@ TEST_F(AutofillManagerTest,
credit_card_form.name = ASCIIToUTF16("MyForm");
credit_card_form.origin = GURL("https://myform.com/form.html");
credit_card_form.action = GURL("https://myform.com/submit.html");
+ credit_card_form.main_frame_origin =
+ GURL("https://myform_root.com/form.html");
FormFieldData field;
test::CreateTestFormField("Card Name", "cardname", "", "text", &field);
@@ -5325,7 +5366,7 @@ TEST_F(AutofillManagerTest,
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -5366,6 +5407,8 @@ TEST_F(AutofillManagerTest,
credit_card_form.name = ASCIIToUTF16("MyForm");
credit_card_form.origin = GURL("https://myform.com/form.html");
credit_card_form.action = GURL("https://myform.com/submit.html");
+ credit_card_form.main_frame_origin =
+ GURL("https://myform_root.com/form.html");
FormFieldData field;
test::CreateTestFormField("Card Name", "cardname", "", "text", &field);
@@ -5385,7 +5428,7 @@ TEST_F(AutofillManagerTest,
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -5433,6 +5476,8 @@ TEST_F(AutofillManagerTest,
credit_card_form.name = ASCIIToUTF16("MyForm");
credit_card_form.origin = GURL("https://myform.com/form.html");
credit_card_form.action = GURL("https://myform.com/submit.html");
+ credit_card_form.main_frame_origin =
+ GURL("https://myform_root.com/form.html");
FormFieldData field;
test::CreateTestFormField("Card Name", "cardname", "", "text", &field);
@@ -5450,7 +5495,7 @@ TEST_F(AutofillManagerTest,
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
base::HistogramTester histogram_tester;
@@ -5494,6 +5539,8 @@ TEST_F(AutofillManagerTest, UploadCreditCard_NoCvcFieldOnFormExperimentOff) {
credit_card_form.name = ASCIIToUTF16("MyForm");
credit_card_form.origin = GURL("https://myform.com/form.html");
credit_card_form.action = GURL("https://myform.com/submit.html");
+ credit_card_form.main_frame_origin =
+ GURL("https://myform_root.com/form.html");
FormFieldData field;
test::CreateTestFormField("Card Name", "cardname", "", "text", &field);
@@ -5511,7 +5558,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_NoCvcFieldOnFormExperimentOff) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
base::HistogramTester histogram_tester;
@@ -5553,7 +5600,7 @@ TEST_F(AutofillManagerTest,
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
// Confirm upload happened and the new UI flag was sent in the request.
@@ -5586,7 +5633,7 @@ TEST_F(AutofillManagerTest,
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
// Confirm upload happened and the new UI flag was not sent in the request.
@@ -5619,7 +5666,7 @@ TEST_F(AutofillManagerTest,
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
// Confirm upload happened and the show Google logo flag was sent in the
@@ -5653,7 +5700,7 @@ TEST_F(AutofillManagerTest,
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
// Confirm upload happened and the show Google logo flag was not sent in the
@@ -5680,7 +5727,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_NoProfileAvailable) {
credit_card_form.fields[0].value = ASCIIToUTF16("Bob Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -5726,7 +5773,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_NoRecentlyUsedProfile) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -5764,7 +5811,7 @@ TEST_F(AutofillManagerTest,
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16(""); // CVC MISSING
base::HistogramTester histogram_tester;
@@ -5810,7 +5857,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_NoNameAvailable) {
// Edit the data, but don't include a name, and submit.
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -5858,7 +5905,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_ZipCodesConflict) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -5902,7 +5949,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_ZipCodesDiscardWhitespace) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -5946,7 +5993,7 @@ TEST_F(AutofillManagerTest,
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -5993,7 +6040,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_ZipCodesHavePrefixMatch) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -6038,7 +6085,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_NoZipCodeAvailable) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -6083,7 +6130,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_CCFormHasMiddleInitial) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo W. Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -6131,7 +6178,7 @@ TEST_F(AutofillManagerTest,
credit_card_form.fields[0].value = ASCIIToUTF16("Flo W. Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -6176,7 +6223,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_NoMiddleInitialInCCForm) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -6220,7 +6267,7 @@ TEST_F(AutofillManagerTest,
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -6257,7 +6304,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_CCFormHasMiddleName) {
credit_card_form.fields[0].value = ASCIIToUTF16("John Quincy Adams");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -6296,7 +6343,7 @@ TEST_F(AutofillManagerTest,
credit_card_form.fields[0].value = ASCIIToUTF16("John Quincy Adams");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -6336,7 +6383,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_CCFormRemovesMiddleName) {
credit_card_form.fields[0].value = ASCIIToUTF16("John Adams");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -6377,7 +6424,7 @@ TEST_F(AutofillManagerTest,
credit_card_form.fields[0].value = ASCIIToUTF16("John Adams");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -6426,7 +6473,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_NamesHaveToMatch) {
credit_card_form.fields[0].value = ASCIIToUTF16("Bob Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -6478,7 +6525,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_IgnoreOldProfiles) {
credit_card_form.fields[0].value = ASCIIToUTF16("Master Blaster");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -6525,7 +6572,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_LogPreviousUseDate) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -6566,7 +6613,7 @@ TEST_F(AutofillManagerTest, UploadCreditCard_UploadDetailsFails) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
base::HistogramTester histogram_tester;
@@ -6603,8 +6650,8 @@ TEST_F(AutofillManagerTest, DuplicateMaskedCreditCard) {
// Add a masked credit card whose |TypeAndLastFourDigits| matches what we will
// enter below.
CreditCard credit_card(CreditCard::MASKED_SERVER_CARD, "a123");
- test::SetCreditCardInfo(&credit_card, "Flo Master", "1111", "11", "2017",
- "1");
+ test::SetCreditCardInfo(&credit_card, "Flo Master", "1111", "11",
+ NextYear().c_str(), "1");
credit_card.SetNetworkForMaskedCard(kVisaCard);
personal_data_.AddServerCreditCard(credit_card);
@@ -6617,7 +6664,7 @@ TEST_F(AutofillManagerTest, DuplicateMaskedCreditCard) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
// The local save prompt should be shown.
@@ -6642,8 +6689,8 @@ TEST_F(AutofillManagerTest, DuplicateMaskedCreditCard_ExperimentOff) {
// Add a masked credit card whose |TypeAndLastFourDigits| matches what we will
// enter below.
CreditCard credit_card(CreditCard::MASKED_SERVER_CARD, "a123");
- test::SetCreditCardInfo(&credit_card, "Flo Master", "1111", "11", "2017",
- "1");
+ test::SetCreditCardInfo(&credit_card, "Flo Master", "1111", "11",
+ NextYear().c_str(), "1");
credit_card.SetNetworkForMaskedCard(kVisaCard);
personal_data_.AddServerCreditCard(credit_card);
@@ -6656,7 +6703,7 @@ TEST_F(AutofillManagerTest, DuplicateMaskedCreditCard_ExperimentOff) {
credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
credit_card_form.fields[2].value = ASCIIToUTF16("11");
- credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[3].value = ASCIIToUTF16(NextYear());
credit_card_form.fields[4].value = ASCIIToUTF16("123");
// The local save prompt should not be shown because the experiment is off.
diff --git a/chromium/components/autofill/core/browser/autofill_metrics_unittest.cc b/chromium/components/autofill/core/browser/autofill_metrics_unittest.cc
index 9bb357a69b4..403b163f054 100644
--- a/chromium/components/autofill/core/browser/autofill_metrics_unittest.cc
+++ b/chromium/components/autofill/core/browser/autofill_metrics_unittest.cc
@@ -309,7 +309,7 @@ class TestAutofillManager : public AutofillManager {
form_structure->set_form_parsed_timestamp(TimeTicks::Now());
form_structures()->push_back(std::move(form_structure));
- form_interactions_ukm_logger()->OnFormsParsed(form.origin);
+ form_interactions_ukm_logger()->OnFormsParsed(form.main_frame_origin);
}
// Calls AutofillManager::OnWillSubmitForm and waits for it to complete.
@@ -369,7 +369,7 @@ void VerifyDeveloperEngagementUkm(
const ukm::UkmSource* source =
ukm_recorder.GetSourceForSourceId(entry->source_id);
ASSERT_NE(nullptr, source);
- EXPECT_EQ(form.origin, source->url());
+ EXPECT_EQ(form.main_frame_origin, source->url());
int expected_metric_value = 0;
for (const auto it : expected_metric_values)
@@ -406,7 +406,7 @@ void VerifyFormInteractionUkm(const ukm::TestAutoSetUkmRecorder& ukm_recorder,
const ukm::UkmSource* source =
ukm_recorder.GetSourceForSourceId(entry->source_id);
ASSERT_NE(nullptr, source);
- EXPECT_EQ(form.origin, source->url());
+ EXPECT_EQ(form.main_frame_origin, source->url());
ASSERT_LT(expected_metrics_index, expected_metrics.size());
EXPECT_THAT(
@@ -576,6 +576,7 @@ TEST_F(AutofillMetricsTest, QualityMetrics) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
std::vector<ServerFieldType> heuristic_types, server_types;
FormFieldData field;
@@ -885,6 +886,7 @@ TEST_P(QualityMetricsTest, Classification) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
std::vector<ServerFieldType> heuristic_types, server_types, actual_types;
AutofillField field;
@@ -1053,6 +1055,7 @@ TEST_F(AutofillMetricsTest, TimingMetrics) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
test::CreateTestFormField(
@@ -1092,6 +1095,7 @@ TEST_F(AutofillMetricsTest, QualityMetrics_NoSubmission) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
std::vector<ServerFieldType> heuristic_types, server_types;
FormFieldData field;
@@ -1279,6 +1283,7 @@ TEST_F(AutofillMetricsTest, QualityMetrics_BasedOnAutocomplete) {
form.name = ASCIIToUTF16("MyForm");
form.origin = GURL("http://myform.com/form.html");
form.action = GURL("http://myform.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
// Heuristic value will match with Autocomplete attribute.
@@ -1389,6 +1394,7 @@ TEST_F(AutofillMetricsTest, UpiVirtualPaymentAddress) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
std::vector<ServerFieldType> heuristic_types, server_types;
FormFieldData field;
@@ -1437,6 +1443,7 @@ TEST_F(AutofillMetricsTest, PredictedMetricsWithAutocomplete) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field1;
test::CreateTestFormField("Select", "select", "USA", "select-one", &field1);
@@ -1504,6 +1511,7 @@ TEST_F(AutofillMetricsTest, SaneMetricsWithCacheMismatch) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
std::vector<ServerFieldType> heuristic_types, server_types;
@@ -1601,6 +1609,7 @@ TEST_F(AutofillMetricsTest, StoredProfileCountAutofillableFormSubmission) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
// Three fields is enough to make it an autofillable form.
FormFieldData field;
@@ -1632,6 +1641,7 @@ TEST_F(AutofillMetricsTest, StoredProfileCountNonAutofillableFormSubmission) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
// Two fields is not enough to make it an autofillable form.
FormFieldData field;
@@ -1661,6 +1671,7 @@ TEST_F(AutofillMetricsTest, NumberOfEditedAutofilledFields) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
std::vector<ServerFieldType> heuristic_types, server_types;
@@ -1712,6 +1723,7 @@ TEST_F(AutofillMetricsTest, NumberOfEditedAutofilledFields_NoSubmission) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
std::vector<ServerFieldType> heuristic_types, server_types;
@@ -1762,6 +1774,7 @@ TEST_F(AutofillMetricsTest, DeveloperEngagement) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
test::CreateTestFormField("Name", "name", "", "text", &field);
@@ -1851,6 +1864,7 @@ TEST_F(AutofillMetricsTest,
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
test::CreateTestFormField("Name", "name", "", "text", &field);
@@ -1895,6 +1909,7 @@ TEST_F(AutofillMetricsTest,
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
test::CreateTestFormField("Name", "name", "", "text", &field);
@@ -1944,6 +1959,7 @@ TEST_F(AutofillMetricsTest, UkmDeveloperEngagement_LogUpiVpaTypeHint) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
test::CreateTestFormField("Name", "name", "", "text", &field);
@@ -2223,6 +2239,7 @@ TEST_F(AutofillMetricsTest, AddressSuggestionsCount) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -2294,6 +2311,7 @@ TEST_F(AutofillMetricsTest, CreditCardCheckoutFlowUserActions) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -2406,6 +2424,7 @@ TEST_F(AutofillMetricsTest, ProfileCheckoutFlowUserActions) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -2578,6 +2597,7 @@ TEST_F(AutofillMetricsTest, QueriedCreditCardFormIsSecure) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
autofill_client_.set_form_origin(form.origin);
FormFieldData field;
@@ -2596,6 +2616,7 @@ TEST_F(AutofillMetricsTest, QueriedCreditCardFormIsSecure) {
// Simulate having seen this insecure form on page load.
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
autofill_manager_->AddSeenForm(form, field_types, field_types);
// Simulate an Autofill query on a credit card field (HTTP, non-secure
@@ -2612,6 +2633,7 @@ TEST_F(AutofillMetricsTest, QueriedCreditCardFormIsSecure) {
autofill_manager_->Reset();
form.origin = GURL("https://example.com/form.html");
form.action = GURL("https://example.com/submit.html");
+ form.main_frame_origin = GURL("https://example_root.com/form.html");
autofill_client_.set_form_origin(form.origin);
autofill_manager_->AddSeenForm(form, field_types, field_types);
@@ -2634,6 +2656,7 @@ TEST_F(AutofillMetricsTest, PolledProfileSuggestions_DebounceLogs) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -2686,6 +2709,7 @@ TEST_F(AutofillMetricsTest, CreditCardInteractedFormEvents) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -2734,6 +2758,7 @@ TEST_F(AutofillMetricsTest, CreditCardShownFormEvents) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -2874,6 +2899,7 @@ TEST_F(AutofillMetricsTest, CreditCardSelectedFormEvents) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -2945,6 +2971,7 @@ TEST_F(AutofillMetricsTest, CreditCardFilledFormEvents) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -3115,6 +3142,7 @@ TEST_F(AutofillMetricsTest, CreditCardGetRealPanDuration) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -3188,6 +3216,7 @@ TEST_F(AutofillMetricsTest,
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -3230,6 +3259,7 @@ TEST_F(AutofillMetricsTest,
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -3274,6 +3304,7 @@ TEST_F(AutofillMetricsTest,
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -3318,6 +3349,7 @@ TEST_F(AutofillMetricsTest,
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -3371,6 +3403,7 @@ TEST_F(AutofillMetricsTest, ShouldNotLogFormEventNoCardForAddressForm) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -3412,6 +3445,7 @@ TEST_F(AutofillMetricsTest, CreditCardSubmittedFormEvents) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -3759,6 +3793,7 @@ TEST_F(AutofillMetricsTest, CreditCardWillSubmitFormEvents) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -3980,6 +4015,7 @@ TEST_F(AutofillMetricsTest, AddressInteractedFormEvents) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -4031,6 +4067,7 @@ TEST_F(AutofillMetricsTest, AddressShownFormEvents) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -4120,6 +4157,7 @@ TEST_F(AutofillMetricsTest, AddressFilledFormEvents) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -4185,6 +4223,7 @@ TEST_F(AutofillMetricsTest, AddressSubmittedFormEvents) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -4385,6 +4424,7 @@ TEST_F(AutofillMetricsTest, AddressWillSubmitFormEvents) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -4556,6 +4596,7 @@ TEST_F(AutofillMetricsTest, CreditCardFormEventsAreSegmented) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -4664,6 +4705,7 @@ TEST_F(AutofillMetricsTest, AddressFormEventsAreSegmented) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
@@ -4749,6 +4791,7 @@ TEST_F(AutofillMetricsTest, AutofillFormSubmittedState) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
test::CreateTestFormField("Name", "name", "", "text", &field);
@@ -5051,6 +5094,7 @@ TEST_F(AutofillMetricsTest, UserHappinessFormInteraction_EmptyForm) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
std::vector<FormData> forms(1, form);
@@ -5072,6 +5116,7 @@ TEST_F(AutofillMetricsTest, UserHappinessFormInteraction_CreditCardForm) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
// Construct a valid credit card form with minimal fields.
FormFieldData field;
@@ -5231,6 +5276,7 @@ TEST_F(AutofillMetricsTest, UserHappinessFormInteraction_AddressForm) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
test::CreateTestFormField("Name", "name", "", "text", &field);
@@ -5443,6 +5489,7 @@ TEST_F(AutofillMetricsTest, FormFillDuration) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
test::CreateTestFormField("Name", "name", "", "text", &field);
@@ -5834,6 +5881,7 @@ TEST_F(AutofillMetricsTest, ProfileActionOnFormSubmitted) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
// Create the form's fields.
FormFieldData field;
@@ -5953,6 +6001,7 @@ class AutofillMetricsParseQueryResponseTest : public testing::Test {
void SetUp() override {
FormData form;
form.origin = GURL("http://foo.com");
+ form.main_frame_origin = GURL("http://foo_root.com");
FormFieldData field;
field.form_control_type = "text";
@@ -6086,6 +6135,7 @@ TEST_F(AutofillMetricsTest, NonsecureCreditCardForm) {
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("http://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
autofill_client_.set_form_origin(form.origin);
FormFieldData field;
@@ -6142,6 +6192,7 @@ TEST_F(AutofillMetricsTest,
form.name = ASCIIToUTF16("TestForm");
form.origin = GURL("https://example.com/form.html");
form.action = GURL("http://example.com/submit.html");
+ form.main_frame_origin = GURL("http://example_root.com/form.html");
FormFieldData field;
std::vector<ServerFieldType> field_types;
diff --git a/chromium/components/autofill/core/browser/autofill_test_utils.cc b/chromium/components/autofill/core/browser/autofill_test_utils.cc
index e0543b1eaf8..874a4b0fa64 100644
--- a/chromium/components/autofill/core/browser/autofill_test_utils.cc
+++ b/chromium/components/autofill/core/browser/autofill_test_utils.cc
@@ -132,6 +132,7 @@ void CreateTestAddressFormData(FormData* form,
form->name = ASCIIToUTF16("MyForm");
form->origin = GURL("http://myform.com/form.html");
form->action = GURL("http://myform.com/submit.html");
+ form->main_frame_origin = GURL("http://myform_root.com/form.html");
types->clear();
FormFieldData field;
diff --git a/chromium/components/autofill/core/browser/credit_card_unittest.cc b/chromium/components/autofill/core/browser/credit_card_unittest.cc
index 93e5f128678..88c50b58c4e 100644
--- a/chromium/components/autofill/core/browser/credit_card_unittest.cc
+++ b/chromium/components/autofill/core/browser/credit_card_unittest.cc
@@ -15,6 +15,7 @@
#include "components/autofill/core/browser/autofill_test_utils.h"
#include "components/autofill/core/browser/autofill_type.h"
#include "components/autofill/core/browser/credit_card.h"
+#include "components/autofill/core/browser/test_autofill_clock.h"
#include "components/autofill/core/browser/validation.h"
#include "components/autofill/core/common/autofill_constants.h"
#include "components/autofill/core/common/form_field_data.h"
@@ -1236,6 +1237,9 @@ TEST(CreditCardTest, GetLastUsedDateForDisplay) {
EXPECT_TRUE(
base::Time::FromLocalExploded(kTestDateTimeExploded, &kArbitraryTime));
+ TestAutofillClock test_clock;
+ test_clock.SetNow(kArbitraryTime);
+
// Test for added to chrome/chromium.
CreditCard credit_card0(base::GenerateGUID(), "https://www.example.com");
credit_card0.set_use_count(1);
diff --git a/chromium/components/autofill/core/browser/form_structure.cc b/chromium/components/autofill/core/browser/form_structure.cc
index 98393571074..550f1ffd58f 100644
--- a/chromium/components/autofill/core/browser/form_structure.cc
+++ b/chromium/components/autofill/core/browser/form_structure.cc
@@ -309,6 +309,7 @@ FormStructure::FormStructure(const FormData& form)
: form_name_(form.name),
source_url_(form.origin),
target_url_(form.action),
+ main_frame_url_(form.main_frame_origin),
autofill_count_(0),
active_field_count_(0),
upload_required_(USE_UPLOAD_RATES),
@@ -391,7 +392,7 @@ void FormStructure::DetermineHeuristicTypes(ukm::UkmRecorder* ukm_recorder) {
}
if (developer_engagement_metrics)
- AutofillMetrics::LogDeveloperEngagementUkm(ukm_recorder, source_url(),
+ AutofillMetrics::LogDeveloperEngagementUkm(ukm_recorder, main_frame_url(),
developer_engagement_metrics);
if (base::FeatureList::IsEnabled(kAutofillRationalizeFieldTypePredictions))
@@ -563,6 +564,7 @@ std::vector<FormDataPredictions> FormStructure::GetFieldTypePredictions(
form.data.name = form_structure->form_name_;
form.data.origin = form_structure->source_url_;
form.data.action = form_structure->target_url_;
+ form.data.main_frame_origin = form_structure->main_frame_url_;
form.data.is_form_tag = form_structure->is_form_tag_;
form.data.is_formless_checkout = form_structure->is_formless_checkout_;
form.signature = form_structure->FormSignatureAsStr();
@@ -808,8 +810,8 @@ void FormStructure::LogQualityMetrics(
GetFormTypes(), did_autofill_some_possible_fields, elapsed);
}
}
- if (form_interactions_ukm_logger->url() != source_url())
- form_interactions_ukm_logger->UpdateSourceURL(source_url());
+ if (form_interactions_ukm_logger->url() != main_frame_url())
+ form_interactions_ukm_logger->UpdateSourceURL(main_frame_url());
AutofillMetrics::LogAutofillFormSubmittedState(
state, form_parsed_timestamp_, form_interactions_ukm_logger);
}
@@ -1033,6 +1035,7 @@ FormData FormStructure::ToFormData() const {
data.name = form_name_;
data.origin = source_url_;
data.action = target_url_;
+ data.main_frame_origin = main_frame_url_;
for (size_t i = 0; i < fields_.size(); ++i) {
data.fields.push_back(FormFieldData(*fields_[i]));
diff --git a/chromium/components/autofill/core/browser/form_structure.h b/chromium/components/autofill/core/browser/form_structure.h
index d02b31beeab..9a8e4de1b6d 100644
--- a/chromium/components/autofill/core/browser/form_structure.h
+++ b/chromium/components/autofill/core/browser/form_structure.h
@@ -208,6 +208,8 @@ class FormStructure {
const GURL& target_url() const { return target_url_; }
+ const GURL& main_frame_url() const { return main_frame_url_; }
+
bool has_author_specified_types() const {
return has_author_specified_types_;
}
@@ -303,6 +305,9 @@ class FormStructure {
// The target URL.
GURL target_url_;
+ // The source URL of the main frame of this form.
+ GURL main_frame_url_;
+
// The number of fields able to be auto-filled.
size_t autofill_count_;
diff --git a/chromium/components/autofill/core/browser/form_structure_unittest.cc b/chromium/components/autofill/core/browser/form_structure_unittest.cc
index 3548474f66b..eb21fa925d6 100644
--- a/chromium/components/autofill/core/browser/form_structure_unittest.cc
+++ b/chromium/components/autofill/core/browser/form_structure_unittest.cc
@@ -3382,6 +3382,7 @@ TEST_F(FormStructureTest, CheckFormSignature) {
"https://login.facebook.com&login_form&email&first")),
form_structure->FormSignatureAsStr());
+ // Checks how digits are removed from field names.
field.check_status = FormFieldData::NOT_CHECKABLE;
field.label = ASCIIToUTF16("Random Field label");
field.name = ASCIIToUTF16("random1234");
@@ -3391,15 +3392,15 @@ TEST_F(FormStructureTest, CheckFormSignature) {
field.name = ASCIIToUTF16("random12345");
form.fields.push_back(field);
field.label = ASCIIToUTF16("Random Field label3");
- field.name = ASCIIToUTF16("1random12345678");
+ field.name = ASCIIToUTF16("1ran12dom12345678");
form.fields.push_back(field);
field.label = ASCIIToUTF16("Random Field label3");
- field.name = ASCIIToUTF16("12345random");
+ field.name = ASCIIToUTF16("12345ran123456dom123");
form.fields.push_back(field);
form_structure.reset(new FormStructure(form));
EXPECT_EQ(FormStructureTest::Hash64Bit(
std::string("https://login.facebook.com&login_form&email&first&"
- "random1234&random&1random&random")),
+ "random1234&random&1ran12dom&random123")),
form_structure->FormSignatureAsStr());
}
diff --git a/chromium/components/autofill/core/common/BUILD.gn b/chromium/components/autofill/core/common/BUILD.gn
index e58160d0360..24f45074e60 100644
--- a/chromium/components/autofill/core/common/BUILD.gn
+++ b/chromium/components/autofill/core/common/BUILD.gn
@@ -49,7 +49,6 @@ static_library("common") {
"//base",
"//base:i18n",
"//components/variations",
- "//third_party/re2",
"//url",
]
diff --git a/chromium/components/autofill/core/common/DEPS b/chromium/components/autofill/core/common/DEPS
deleted file mode 100644
index 0de07bbaf08..00000000000
--- a/chromium/components/autofill/core/common/DEPS
+++ /dev/null
@@ -1,3 +0,0 @@
-include_rules = [
- "+third_party/re2",
-]
diff --git a/chromium/components/autofill/core/common/form_data.cc b/chromium/components/autofill/core/common/form_data.cc
index 81de550a22b..11c651377c7 100644
--- a/chromium/components/autofill/core/common/form_data.cc
+++ b/chromium/components/autofill/core/common/form_data.cc
@@ -5,7 +5,6 @@
#include "components/autofill/core/common/form_data.h"
#include <stddef.h>
-
#include <tuple>
#include "base/base64.h"
@@ -18,7 +17,7 @@ namespace autofill {
namespace {
-const int kPickleVersion = 5;
+const int kPickleVersion = 6;
bool ReadGURL(base::PickleIterator* iter, GURL* url) {
std::string spec;
@@ -66,6 +65,7 @@ FormData::FormData(const FormData& data)
: name(data.name),
origin(data.origin),
action(data.action),
+ main_frame_origin(data.main_frame_origin),
is_form_tag(data.is_form_tag),
is_formless_checkout(data.is_formless_checkout),
fields(data.fields) {}
@@ -119,7 +119,8 @@ bool FormData::operator<(const FormData& form) const {
std::ostream& operator<<(std::ostream& os, const FormData& form) {
os << base::UTF16ToUTF8(form.name) << " " << form.origin << " " << form.action
- << " " << form.is_form_tag << " " << form.is_formless_checkout << " "
+ << " " << form.main_frame_origin << " " << form.is_form_tag << " "
+ << form.is_formless_checkout << " "
<< "Fields:";
for (size_t i = 0; i < form.fields.size(); ++i) {
os << form.fields[i] << ",";
@@ -135,6 +136,7 @@ void SerializeFormData(const FormData& form_data, base::Pickle* pickle) {
SerializeFormFieldDataVector(form_data.fields, pickle);
pickle->WriteBool(form_data.is_form_tag);
pickle->WriteBool(form_data.is_formless_checkout);
+ pickle->WriteString(form_data.main_frame_origin.spec());
}
void SerializeFormDataToBase64String(const FormData& form_data,
@@ -198,6 +200,13 @@ bool DeserializeFormData(base::PickleIterator* iter, FormData* form_data) {
}
}
+ if (version >= 6) {
+ if (!ReadGURL(iter, &temp_form_data.main_frame_origin)) {
+ LogDeserializationError(version);
+ return false;
+ }
+ }
+
*form_data = temp_form_data;
return true;
}
diff --git a/chromium/components/autofill/core/common/form_data.h b/chromium/components/autofill/core/common/form_data.h
index 5e5a42936f1..c7064803a12 100644
--- a/chromium/components/autofill/core/common/form_data.h
+++ b/chromium/components/autofill/core/common/form_data.h
@@ -41,6 +41,8 @@ struct FormData {
GURL origin;
// The action target of the form.
GURL action;
+ // The URL of main frame containing this form.
+ GURL main_frame_origin;
// True if this form is a form tag.
bool is_form_tag;
// True if the form is made of unowned fields in a non checkout flow.
diff --git a/chromium/components/autofill/core/common/form_data_unittest.cc b/chromium/components/autofill/core/common/form_data_unittest.cc
index ee174b715eb..c6dee3bec05 100644
--- a/chromium/components/autofill/core/common/form_data_unittest.cc
+++ b/chromium/components/autofill/core/common/form_data_unittest.cc
@@ -87,6 +87,21 @@ void SerializeInVersion5Format(const FormData& form_data,
pickle->WriteBool(form_data.is_formless_checkout);
}
+void SerializeInVersion6Format(const FormData& form_data,
+ base::Pickle* pickle) {
+ pickle->WriteInt(6);
+ pickle->WriteString16(form_data.name);
+ pickle->WriteString(form_data.origin.spec());
+ pickle->WriteString(form_data.action.spec());
+ pickle->WriteInt(static_cast<int>(form_data.fields.size()));
+ for (size_t i = 0; i < form_data.fields.size(); ++i) {
+ SerializeFormFieldData(form_data.fields[i], pickle);
+ }
+ pickle->WriteBool(form_data.is_form_tag);
+ pickle->WriteBool(form_data.is_formless_checkout);
+ pickle->WriteString(form_data.main_frame_origin.spec());
+}
+
// This function serializes the form data into the pickle in incorrect format
// (no version number).
void SerializeIncorrectFormat(const FormData& form_data, base::Pickle* pickle) {
@@ -102,8 +117,9 @@ void SerializeIncorrectFormat(const FormData& form_data, base::Pickle* pickle) {
void FillInDummyFormData(FormData* data) {
data->name = base::ASCIIToUTF16("name");
- data->origin = GURL("origin");
- data->action = GURL("action");
+ data->origin = GURL("https://example.com");
+ data->action = GURL("https://example.com/action");
+ data->main_frame_origin = GURL("https://origin-example.com");
data->is_form_tag = true; // Default value.
data->is_formless_checkout = false; // Default value.
@@ -249,6 +265,21 @@ TEST(FormDataTest, Serialize_v5_Deserialize_vCurrent) {
EXPECT_TRUE(actual.SameFormAs(data));
}
+TEST(FormDataTest, Serialize_v6_Deserialize_vCurrent) {
+ FormData data;
+ FillInDummyFormData(&data);
+ data.is_formless_checkout = true;
+
+ base::Pickle pickle;
+ SerializeInVersion6Format(data, &pickle);
+
+ base::PickleIterator iter(pickle);
+ FormData actual;
+ EXPECT_TRUE(DeserializeFormData(&iter, &actual));
+
+ EXPECT_TRUE(actual.SameFormAs(data));
+}
+
TEST(FormDataTest, SerializeIncorrectFormatAndDeserialize) {
FormData data;
FillInDummyFormData(&data);
diff --git a/chromium/components/autofill/core/common/signatures_util.cc b/chromium/components/autofill/core/common/signatures_util.cc
index 8e7695eac75..df549b97d2a 100644
--- a/chromium/components/autofill/core/common/signatures_util.cc
+++ b/chromium/components/autofill/core/common/signatures_util.cc
@@ -4,30 +4,41 @@
#include "components/autofill/core/common/signatures_util.h"
+#include <cctype>
+
#include "base/sha1.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "components/autofill/core/common/autofill_util.h"
#include "components/autofill/core/common/form_data.h"
#include "components/autofill/core/common/form_field_data.h"
-#include "third_party/re2/src/re2/re2.h"
-#include "third_party/re2/src/re2/stringpiece.h"
#include "url/gurl.h"
namespace autofill {
namespace {
-// Strip away >= 5 consecutive digits.
-const char kIgnorePatternInFieldName[] = "\\d{5,}";
-
-// Returns a copy of |input| without all occurrences of
-// |kIgnorePatternInFieldName|
+// Returns a copy of |input| without >= 5 consecutive digits.
std::string StripDigitsIfRequired(const base::string16& input) {
- std::string return_string = base::UTF16ToUTF8(input);
- re2::RE2::GlobalReplace(&return_string, re2::RE2(kIgnorePatternInFieldName),
- re2::StringPiece());
- return return_string;
+ std::string input_utf8 = base::UTF16ToUTF8(input);
+ std::string result;
+ result.reserve(input_utf8.length());
+
+ for (size_t i = 0; i < input_utf8.length();) {
+ if (std::isdigit(input_utf8[i])) {
+ size_t count = 0;
+ while (i < input_utf8.length() && std::isdigit(input_utf8[i])) {
+ i++;
+ count++;
+ }
+ if (count < 5)
+ result.append(input_utf8, i - count, count);
+ } else {
+ result.push_back(input_utf8[i]);
+ i++;
+ }
+ }
+ return result;
}
} // namespace
diff --git a/chromium/components/favicon/ios/web_favicon_driver.h b/chromium/components/favicon/ios/web_favicon_driver.h
index ea28bedf5cd..0d529da3592 100644
--- a/chromium/components/favicon/ios/web_favicon_driver.h
+++ b/chromium/components/favicon/ios/web_favicon_driver.h
@@ -31,6 +31,7 @@ class WebFaviconDriver : public web::WebStateObserver,
history::HistoryService* history_service);
// FaviconDriver implementation.
+ void FetchFavicon(const GURL& page_url, bool is_same_document) override;
gfx::Image GetFavicon() const override;
bool FaviconIsValid() const override;
GURL GetActiveURL() override;
@@ -57,21 +58,18 @@ class WebFaviconDriver : public web::WebStateObserver,
history::HistoryService* history_service);
// web::WebStateObserver implementation.
- void DidStartNavigation(web::NavigationContext* navigation_context) override;
+ void NavigationItemCommitted(
+ const web::LoadCommittedDetails& load_details) override;
void DidFinishNavigation(web::NavigationContext* navigation_context) override;
void FaviconUrlUpdated(
const std::vector<web::FaviconURL>& candidates) override;
- // Invoked when new favicon URL candidates are received.
- void FaviconUrlUpdatedInternal(
- const std::vector<favicon::FaviconURL>& candidates);
+ // The URL passed to FetchFavicon().
+ GURL fetch_favicon_url_;
// Image Fetcher used to fetch favicon.
image_fetcher::IOSImageDataFetcherWrapper image_fetcher_;
- // Caches the favicon URLs candidates for same-document navigations.
- std::vector<favicon::FaviconURL> candidates_;
-
DISALLOW_COPY_AND_ASSIGN(WebFaviconDriver);
};
diff --git a/chromium/components/favicon/ios/web_favicon_driver.mm b/chromium/components/favicon/ios/web_favicon_driver.mm
index 2a140aafee2..01e6a173300 100644
--- a/chromium/components/favicon/ios/web_favicon_driver.mm
+++ b/chromium/components/favicon/ios/web_favicon_driver.mm
@@ -49,6 +49,12 @@ void WebFaviconDriver::CreateForWebState(
web_state, favicon_service, history_service)));
}
+void WebFaviconDriver::FetchFavicon(const GURL& page_url,
+ bool is_same_document) {
+ fetch_favicon_url_ = page_url;
+ FaviconDriverImpl::FetchFavicon(page_url, is_same_document);
+}
+
gfx::Image WebFaviconDriver::GetFavicon() const {
web::NavigationItem* item =
web_state()->GetNavigationManager()->GetLastCommittedItem();
@@ -117,13 +123,10 @@ void WebFaviconDriver::OnFaviconUpdated(
// On iOS, the active URL can change between calls to FetchFavicon(). For
// instance, FetchFavicon() is not synchronously called when the active URL
// changes as a result of CRWSessionController::goToEntry().
- if (GetActiveURL() != page_url && !page_url.is_empty()) {
- return;
- }
-
web::NavigationItem* item =
web_state()->GetNavigationManager()->GetVisibleItem();
- DCHECK(item);
+ if (!item || item->GetURL() != page_url)
+ return;
web::FaviconStatus& favicon_status = item->GetFavicon();
favicon_status.valid = true;
@@ -143,40 +146,24 @@ WebFaviconDriver::WebFaviconDriver(web::WebState* web_state,
WebFaviconDriver::~WebFaviconDriver() {
}
-void WebFaviconDriver::DidStartNavigation(
- web::NavigationContext* navigation_context) {
- SetFaviconOutOfDateForPage(navigation_context->GetUrl(),
- /*force_reload=*/false);
+void WebFaviconDriver::NavigationItemCommitted(
+ const web::LoadCommittedDetails& load_details) {
+ FetchFavicon(web_state()->GetLastCommittedURL(), load_details.is_in_page);
}
void WebFaviconDriver::DidFinishNavigation(
web::NavigationContext* navigation_context) {
- if (navigation_context->GetError())
- return;
-
- // Fetch the favicon for the new URL.
- FetchFavicon(navigation_context->GetUrl(),
- navigation_context->IsSameDocument());
-
if (navigation_context->IsSameDocument()) {
- if (!candidates_.empty()) {
- FaviconUrlUpdatedInternal(candidates_);
- }
- } else {
- candidates_.clear();
+ // Fetch the favicon for the new URL.
+ FetchFavicon(navigation_context->GetUrl(), /*is_same_document=*/true);
}
}
void WebFaviconDriver::FaviconUrlUpdated(
const std::vector<web::FaviconURL>& candidates) {
DCHECK(!candidates.empty());
- candidates_ = FaviconURLsFromWebFaviconURLs(candidates);
- FaviconUrlUpdatedInternal(candidates_);
-}
-
-void WebFaviconDriver::FaviconUrlUpdatedInternal(
- const std::vector<favicon::FaviconURL>& candidates) {
- OnUpdateCandidates(GetActiveURL(), candidates, GURL());
+ OnUpdateCandidates(GetActiveURL(), FaviconURLsFromWebFaviconURLs(candidates),
+ GURL());
}
} // namespace favicon
diff --git a/chromium/components/password_manager/core/browser/password_manager.cc b/chromium/components/password_manager/core/browser/password_manager.cc
index cef50b7584b..41db950a2b4 100644
--- a/chromium/components/password_manager/core/browser/password_manager.cc
+++ b/chromium/components/password_manager/core/browser/password_manager.cc
@@ -798,7 +798,11 @@ void PasswordManager::OnLoginSuccessful() {
: metrics_util::SyncPasswordHashChange::
SAVED_IN_CONTENT_AREA);
store->SaveSyncPasswordHash(
- provisional_save_manager_->submitted_form()->password_value);
+ is_sync_password_change
+ ? provisional_save_manager_->submitted_form()
+ ->new_password_value
+ : provisional_save_manager_->submitted_form()
+ ->password_value);
}
}
#endif
diff --git a/chromium/components/password_manager/core/browser/password_manager_unittest.cc b/chromium/components/password_manager/core/browser/password_manager_unittest.cc
index cd59471e765..18e357556d4 100644
--- a/chromium/components/password_manager/core/browser/password_manager_unittest.cc
+++ b/chromium/components/password_manager/core/browser/password_manager_unittest.cc
@@ -16,6 +16,7 @@
#include "base/strings/utf_string_conversions.h"
#include "base/test/histogram_tester.h"
#include "base/test/scoped_feature_list.h"
+#include "build/build_config.h"
#include "components/password_manager/core/browser/form_fetcher_impl.h"
#include "components/password_manager/core/browser/mock_password_store.h"
#include "components/password_manager/core/browser/password_autofill_manager.h"
@@ -185,6 +186,20 @@ class PasswordManagerTest : public testing::Test {
return form;
}
+ PasswordForm MakeGAIAChangePasswordForm() {
+ PasswordForm form;
+ form.origin = GURL("https://accounts.google.com");
+ form.action = GURL("http://www.google.com/a/Login");
+ form.username_element = ASCIIToUTF16("Email");
+ form.new_password_element = ASCIIToUTF16("NewPasswd");
+ form.username_value = ASCIIToUTF16("googleuser");
+ form.new_password_value = ASCIIToUTF16("n3wp4ssword");
+ form.submit_element = ASCIIToUTF16("changePassword");
+ form.signon_realm = form.origin.spec();
+ form.form_data.name = ASCIIToUTF16("the-form-name");
+ return form;
+ }
+
// Create a sign-up form that only has a new password field.
PasswordForm MakeFormWithOnlyNewPasswordField() {
PasswordForm form = MakeSimpleForm();
@@ -2135,4 +2150,31 @@ TEST_F(PasswordManagerTest, ProcessAutofillPredictions) {
manager()->ProcessAutofillPredictions(&driver_, forms);
}
+// Sync password hash should be updated upon submission of change password page.
+TEST_F(PasswordManagerTest, SaveSyncPasswordHashOnChangePasswordPage) {
+ PasswordForm form(MakeGAIAChangePasswordForm());
+ EXPECT_CALL(*store_, GetLogins(_, _))
+ .WillRepeatedly(WithArg<1>(InvokeEmptyConsumerWithForms()));
+
+ std::vector<PasswordForm> observed;
+ observed.push_back(form);
+ manager()->OnPasswordFormsParsed(&driver_, observed);
+ manager()->OnPasswordFormsRendered(&driver_, observed, true);
+
+ // Submit form and finish navigation.
+ EXPECT_CALL(client_, IsSavingAndFillingEnabledForCurrentPage())
+ .WillRepeatedly(Return(true));
+ EXPECT_CALL(client_, GetPrefs()).WillRepeatedly(Return(nullptr));
+#if defined(OS_WIN) || (defined(OS_MACOSX) && !defined(OS_IOS)) || \
+ (defined(OS_LINUX) && !defined(OS_CHROMEOS))
+ EXPECT_CALL(*store_, SaveSyncPasswordHash(form.new_password_value));
+#endif
+ client_.FilterAllResultsForSaving();
+ OnPasswordFormSubmitted(form);
+
+ observed.clear();
+ manager()->OnPasswordFormsParsed(&driver_, observed);
+ manager()->OnPasswordFormsRendered(&driver_, observed, true);
+}
+
} // namespace password_manager
diff --git a/chromium/components/safe_browsing/password_protection/password_protection_navigation_throttle.cc b/chromium/components/safe_browsing/password_protection/password_protection_navigation_throttle.cc
index b7d1e1a8e9d..eab309b7c99 100644
--- a/chromium/components/safe_browsing/password_protection/password_protection_navigation_throttle.cc
+++ b/chromium/components/safe_browsing/password_protection/password_protection_navigation_throttle.cc
@@ -4,16 +4,28 @@
#include "components/safe_browsing/password_protection/password_protection_navigation_throttle.h"
+#include "components/safe_browsing/password_protection/password_protection_request.h"
#include "content/public/browser/navigation_handle.h"
namespace safe_browsing {
PasswordProtectionNavigationThrottle::PasswordProtectionNavigationThrottle(
content::NavigationHandle* navigation_handle,
+ scoped_refptr<PasswordProtectionRequest> request,
bool is_warning_showing)
: content::NavigationThrottle(navigation_handle),
- is_warning_showing_(is_warning_showing) {}
+ request_(request),
+ is_warning_showing_(is_warning_showing) {
+ // Only call AddThrottle() if there is no modal warning showing. If there's a
+ // modal dialog, PPNavigationThrottle will simply cancel this navigation
+ // immediately, therefore no need to keep track of it.
+ if (!is_warning_showing_)
+ request_->AddThrottle(this);
+}
-PasswordProtectionNavigationThrottle::~PasswordProtectionNavigationThrottle() {}
+PasswordProtectionNavigationThrottle::~PasswordProtectionNavigationThrottle() {
+ if (request_)
+ request_->RemoveThrottle(this);
+}
content::NavigationThrottle::ThrottleCheckResult
PasswordProtectionNavigationThrottle::WillStartRequest() {
diff --git a/chromium/components/safe_browsing/password_protection/password_protection_navigation_throttle.h b/chromium/components/safe_browsing/password_protection/password_protection_navigation_throttle.h
index dcc1723850d..16d4ebb8f65 100644
--- a/chromium/components/safe_browsing/password_protection/password_protection_navigation_throttle.h
+++ b/chromium/components/safe_browsing/password_protection/password_protection_navigation_throttle.h
@@ -5,6 +5,7 @@
#ifndef COMPONENTS_SAFE_BROWSING_PASSWORD_PROTECTION_PASSWORD_PROTECTION_NAVIGATION_THROTTLE_H_
#define COMPONENTS_SAFE_BROWSING_PASSWORD_PROTECTION_PASSWORD_PROTECTION_NAVIGATION_THROTTLE_H_
+#include "base/memory/ref_counted.h"
#include "content/public/browser/navigation_throttle.h"
namespace content {
@@ -12,6 +13,8 @@ class NavigationHandle;
} // namespace content
namespace safe_browsing {
+class PasswordProtectionRequest;
+
// PasswordProtectionNavigationThrottle defers or cancel navigation under the
// following condition:
// (1) if a navigation starts when there is a on-going sync password reuse ping,
@@ -26,6 +29,7 @@ class PasswordProtectionNavigationThrottle
public:
PasswordProtectionNavigationThrottle(
content::NavigationHandle* navigation_handle,
+ scoped_refptr<PasswordProtectionRequest> request,
bool is_warning_showing);
~PasswordProtectionNavigationThrottle() override;
@@ -40,6 +44,7 @@ class PasswordProtectionNavigationThrottle
content::NavigationThrottle::ThrottleCheckResult result);
private:
+ scoped_refptr<PasswordProtectionRequest> request_;
bool is_warning_showing_;
DISALLOW_COPY_AND_ASSIGN(PasswordProtectionNavigationThrottle);
};
diff --git a/chromium/components/safe_browsing/password_protection/password_protection_request.h b/chromium/components/safe_browsing/password_protection/password_protection_request.h
index 701b8fedb58..69dc838fde1 100644
--- a/chromium/components/safe_browsing/password_protection/password_protection_request.h
+++ b/chromium/components/safe_browsing/password_protection/password_protection_request.h
@@ -102,6 +102,10 @@ class PasswordProtectionRequest : public base::RefCountedThreadSafe<
throttles_.insert(throttle);
}
+ void RemoveThrottle(PasswordProtectionNavigationThrottle* throttle) {
+ throttles_.erase(throttle);
+ }
+
// Cancels navigation if there is modal warning showing, resumes it otherwise.
void HandleDeferredNavigations();
@@ -112,6 +116,7 @@ class PasswordProtectionRequest : public base::RefCountedThreadSafe<
friend struct content::BrowserThread::DeleteOnThread<
content::BrowserThread::UI>;
friend class base::DeleteHelper<PasswordProtectionRequest>;
+ friend class ChromePasswordProtectionServiceTest;
~PasswordProtectionRequest() override;
// Start checking the whitelist.
diff --git a/chromium/components/safe_browsing/password_protection/password_protection_service.cc b/chromium/components/safe_browsing/password_protection/password_protection_service.cc
index bef34552f5f..4b47d7d3547 100644
--- a/chromium/components/safe_browsing/password_protection/password_protection_service.cc
+++ b/chromium/components/safe_browsing/password_protection/password_protection_service.cc
@@ -808,18 +808,15 @@ PasswordProtectionService::MaybeCreateNavigationThrottle(
request->trigger_type() ==
safe_browsing::LoginReputationClientRequest::PASSWORD_REUSE_EVENT &&
request->matches_sync_password()) {
- std::unique_ptr<PasswordProtectionNavigationThrottle> throttle =
- base::MakeUnique<PasswordProtectionNavigationThrottle>(
- navigation_handle, /*is_warning_showing=*/false);
- request->AddThrottle(throttle.get());
- return throttle;
+ return base::MakeUnique<PasswordProtectionNavigationThrottle>(
+ navigation_handle, request, /*is_warning_showing=*/false);
}
}
for (scoped_refptr<PasswordProtectionRequest> request : warning_requests_) {
if (request->web_contents() == web_contents) {
return base::MakeUnique<PasswordProtectionNavigationThrottle>(
- navigation_handle, /*is_warning_showing=*/true);
+ navigation_handle, request, /*is_warning_showing=*/true);
}
}
return nullptr;
diff --git a/chromium/components/strings/components_chromium_strings_el.xtb b/chromium/components/strings/components_chromium_strings_el.xtb
index 99cee503af5..6919e3951f0 100644
--- a/chromium/components/strings/components_chromium_strings_el.xtb
+++ b/chromium/components/strings/components_chromium_strings_el.xtb
@@ -16,7 +16,7 @@
<ph name="PROXIES_TITLE" />
&gt;
Ρυθμίσεις LAN
- και καταργήστε την επιλογή του πλαισίου ελέγχου "Χρήση
+ και αποεπιλέξτε το πλαίσιο ελέγχου "Χρήση
διακομιστή μεσολάβησης για το LAN".</translation>
<translation id="48558539577516920">Επιτρέψτε στο Chromium να αποκτήσει πρόσβαση στο δίκτυο από τις ρυθμίσεις του τείχους προστασίας
ή του λογισμικού προστασίας από ιούς που διαθέτετε.</translation>
@@ -35,11 +35,11 @@
<ph name="SETTINGS_TITLE" />
&gt;
<ph name="ADVANCED_TITLE" />
- και καταργήστε την επιλογή "<ph name="NO_PREFETCH_DESCRIPTION" />".
+ και αποεπιλέξτε "<ph name="NO_PREFETCH_DESCRIPTION" />".
Εάν με αυτόν τον τρόπο δεν επιλύεται το ζήτημά σας, συνιστούμε
να ενεργοποιήσετε ξανά αυτήν την επιλογή για βελτιωμένη απόδοση.</translation>
<translation id="8187289872471304532">Μεταβείτε στο
Applications &gt; System Preferences &gt; Network &gt; Advanced &gt; Proxies
- και καταργήστε τυχόν διακομιστές μεσολάβησης που έχουν επιλεγεί.</translation>
+ και αποεπιλέξτε τυχόν διακομιστές μεσολάβησης που έχουν επιλεγεί.</translation>
<translation id="8684913864886094367">Το Chromium δεν έκλεισε σωστά.</translation>
</translationbundle> \ No newline at end of file
diff --git a/chromium/components/strings/components_google_chrome_strings_el.xtb b/chromium/components/strings/components_google_chrome_strings_el.xtb
index 45046b13514..15e4a4a9556 100644
--- a/chromium/components/strings/components_google_chrome_strings_el.xtb
+++ b/chromium/components/strings/components_google_chrome_strings_el.xtb
@@ -25,7 +25,7 @@
<ph name="SETTINGS_TITLE" />
&gt;
<ph name="ADVANCED_TITLE" />
- και καταργήστε την επιλογή "<ph name="NO_PREFETCH_DESCRIPTION" />".
+ και αποεπιλέξτε "<ph name="NO_PREFETCH_DESCRIPTION" />".
Εάν με αυτόν τον τρόπο δεν επιλύεται το ζήτημά σας, συνιστούμε
να ενεργοποιήσετε ξανά αυτήν την επιλογή για βελτιωμένη απόδοση.</translation>
<translation id="6855094794438142393">Μεταβείτε
@@ -37,8 +37,8 @@
<ph name="PROXIES_TITLE" />
&gt;
Ρυθμίσεις LAN
- και καταργήστε την επιλογή "Χρήση διακομιστή μεσολάβησης για το LAN".</translation>
+ και αποεπιλέξτε τη "Χρήση διακομιστή μεσολάβησης για το LAN".</translation>
<translation id="8187289872471304532">Μεταβείτε στο
Applications &gt; System Preferences &gt; Network &gt; Advanced &gt; Proxies
- και καταργήστε τυχόν διακομιστές μεσολάβησης που έχουν επιλεγεί.</translation>
+ και αποεπιλέξτε τυχόν διακομιστές μεσολάβησης που έχουν επιλεγεί.</translation>
</translationbundle> \ No newline at end of file
diff --git a/chromium/components/strings/components_strings_am.xtb b/chromium/components/strings/components_strings_am.xtb
index ba8f964ff6d..c5f9b9f7a60 100644
--- a/chromium/components/strings/components_strings_am.xtb
+++ b/chromium/components/strings/components_strings_am.xtb
@@ -300,7 +300,7 @@
<ph name="PLATFORM_TEXT" /></translation>
<translation id="320323717674993345">ክፍያን ሰርዝ</translation>
<translation id="3207960819495026254">ዕልባት ተደርጎበታል</translation>
-<translation id="3209375525920864198">እባክዎ የሚሰራ የክፍለ-ጊዜ ስም ያስገቡ።</translation>
+<translation id="3209375525920864198">እባክዎ የሚሠራ የክፍለ-ጊዜ ስም ያስገቡ።</translation>
<translation id="3211223744486044430">በሚቀጥለው ጊዜ በበለጠ ፍጥነት ለመክፈል ይህን ካርድ በGoogle መለያዎ እና በዚህ መሣሪያ ላይ ያስቀምጡ።</translation>
<translation id="3225919329040284222">አገልጋዩ አብረው የተሰሩ የሚጠበቁ ማሟያዎችን የማያሟላ የእውቅና ማረጋገጫ ነው ያቀረበው። እነዚህ የሚጠበቁ ማሟያዎች እርስዎን ለመጠበቅ ለተረጋገጡ ከፍተኛ ደህንነት ላላቸው ድር ጣቢያዎች ተካትተዋል።</translation>
<translation id="3226128629678568754">ገጹን ለመጫን የሚያስፈልገው ውሂብ ዳግም ለማስገባት የዳግም ጫን አዝራሩን ይጫኑ።</translation>
@@ -630,6 +630,7 @@
<translation id="5669703222995421982">ግላዊነት የተላበሰ ይዘት ያግኙ</translation>
<translation id="5675650730144413517">ይህ ገጽ እየሠራ አይደለም</translation>
<translation id="5689199277474810259">ወደ JSON ላክ</translation>
+<translation id="5689516760719285838">አካባቢ</translation>
<translation id="5710435578057952990">የዚህ ድረ-ገጽ ማንነት አልተረጋገጠም።</translation>
<translation id="5719499550583120431">የቅድመ-ክፍያ ካርዶች ተቀባይነት አላቸው።</translation>
<translation id="5720705177508910913">የአሁኑ ተጠቃሚ</translation>
@@ -885,7 +886,7 @@
<translation id="7812922009395017822">Mir</translation>
<translation id="7813600968533626083">የአስተያየት ጥቆማ ከChrome ይወገድ?</translation>
<translation id="7815407501681723534">ለ«<ph name="SEARCH_STRING" />» <ph name="NUMBER_OF_RESULTS" /> <ph name="SEARCH_RESULTS" /> ተገኝተዋል።</translation>
-<translation id="7818867226424560206">የመመሪያ አስተዳደር</translation>
+<translation id="7818867226424560206">የመምሪያ አስተዳደር</translation>
<translation id="782886543891417279">እየተጠቀሙበት ያለው Wi-Fi (<ph name="WIFI_NAME" />) በመለያ መግቢያ ገጹን እንዲጎበኙ ሊጠይቅዎት ይችላል።</translation>
<translation id="785549533363645510">ሆኖም ግን የማይታዩ አይደሉም። ማንነት የማያሳውቅ ሁነታ መጠቀም የእርስዎን አሰሳ፣ የበይነመረብ አገልግሎት አቅራቢ ወይም የሚጎበኟቸው ድር ጣቢያዎች ከአሰሪዎ አይደብቃቸውም።</translation>
<translation id="7855695075675558090"><ph name="TOTAL_LABEL" /> <ph name="CURRENCY_CODE" /> <ph name="FORMATTED_TOTAL_AMOUNT" /></translation>
diff --git a/chromium/components/strings/components_strings_ar.xtb b/chromium/components/strings/components_strings_ar.xtb
index 4981fb32869..a4149f7b405 100644
--- a/chromium/components/strings/components_strings_ar.xtb
+++ b/chromium/components/strings/components_strings_ar.xtb
@@ -301,12 +301,12 @@
<ph name="PLATFORM_TEXT" /></translation>
<translation id="320323717674993345">إلغاء الدفع</translation>
<translation id="3207960819495026254">محدد بعلامة متابعة القراءة</translation>
-<translation id="3209375525920864198">يُرجى إدخال اسمًا صالحًا للجلسة.</translation>
+<translation id="3209375525920864198">يُرجى إدخال اسم صالح للجلسة.</translation>
<translation id="3211223744486044430">‏للدفع على نحو أسرع في المرة القادمة، احفظ هذه البطاقة في حسابك في Google وفي هذا الجهاز.</translation>
<translation id="3225919329040284222">قدم الخادم شهادة لا تتطابق مع التوقعات المضمّنة. تم تضمين هذه التوقعات للحصول على مواقع ويب موثوقة وآمنة جدًا لتوفير الحماية لك.</translation>
<translation id="3226128629678568754">اضغط على زر إعادة التحميل لإعادة إرسال البيانات المطلوبة لتحميل الصفحة.</translation>
<translation id="3227137524299004712">الميكروفون</translation>
-<translation id="3228969707346345236">أخفقت الترجمة لأن الصفحة باللغة <ph name="LANGUAGE" /> فعلاً.</translation>
+<translation id="3228969707346345236">تعذّرت الترجمة لأن الصفحة باللغة <ph name="LANGUAGE" /> فعلاً.</translation>
<translation id="323107829343500871">‏أدخل رمز التحقق من البطاقة (CVC) لـ <ph name="CREDIT_CARD" /></translation>
<translation id="3234666976984236645">الكشف دائمًا عن المحتوى المهم على هذا الموقع</translation>
<translation id="3254409185687681395">وضع إشارة على هذه الصفحة</translation>
@@ -394,7 +394,7 @@
<translation id="3739623965217189342">الرابط الذي نسخته</translation>
<translation id="3744899669254331632">‏لا يمكنك زيارة <ph name="SITE" /> في الوقت الحالي لأن الموقع أرسل اعتمادات مختلطة حيث لا يستطيع Chromium المعالجة. أخطاء الشبكة وهجماتها عادةً ما تكون مؤقتة، لذلك من المحتمل أن تعمل هذه الصفحة في وقت لاحق.</translation>
<translation id="3748148204939282805">قد يخدعك المهاجمون على <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> لتنفيذ أمور خطيرة، مثل تثبيت البرامج أو نشر معلوماتك الشخصية (على سبيل المثال، كلمات المرور، أو أرقام الهاتف، أو بطاقات الائتمان). <ph name="BEGIN_LEARN_MORE_LINK" />مزيد من المعلومات<ph name="END_LEARN_MORE_LINK" /></translation>
-<translation id="375403751935624634">أخفقت الترجمة بسبب حدوث خطأ في الخادم.</translation>
+<translation id="375403751935624634">تعذّرت الترجمة بسبب حدوث خطأ في الخادم.</translation>
<translation id="3759461132968374835">ليس لديك أي أعطال تم الإبلاغ عنها مؤخرًا. الأعطال التي حدثت عندما تم تعطيل الإبلاغ عن الأعطال لن تظهر هنا.</translation>
<translation id="3765032636089507299">صفحة التصفح الآمن تحت الإنشاء.</translation>
<translation id="3778403066972421603">‏هل تريد حفظ هذه البطاقة في حسابك في Google وعلى هذا الجهاز؟</translation>
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">الحصول على محتوى مخصص</translation>
<translation id="5675650730144413517">يتعذّر على هذه الصفحة العمل</translation>
<translation id="5689199277474810259">‏تصدير إلى JSON</translation>
+<translation id="5689516760719285838">الموقع</translation>
<translation id="5710435578057952990">لم يتمّ التحقق من هوية هذا الموقع.</translation>
<translation id="5719499550583120431">يتم قبول بطاقات الدفع المسبق.</translation>
<translation id="5720705177508910913">المستخدم الحالي</translation>
@@ -749,7 +750,7 @@
<translation id="6753269504797312559">قيمة السياسة</translation>
<translation id="6757797048963528358">خضع جهازك إلى وضع السكون.</translation>
<translation id="6778737459546443941">لم يوافق عليه والداك حتى الآن</translation>
-<translation id="681021252041861472">حقل مطلوب</translation>
+<translation id="681021252041861472">الحقل مطلوب</translation>
<translation id="6810899417690483278">رقم تعريف التخصيص</translation>
<translation id="6820686453637990663">CVC</translation>
<translation id="6824266427216888781">تعذَّر تحميل بيانات المناطق</translation>
@@ -942,7 +943,7 @@
<translation id="8294431847097064396">المصدر</translation>
<translation id="8298115750975731693">‏قد يتتطلب Wi-Fi الذي تستخدمه (<ph name="WIFI_NAME" />) زيارة <ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" />.</translation>
<translation id="8306404619377842860">تعذر إنشاء اتصال خاص بـ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> نظرًا لأن تاريخ ووقت جهازك (<ph name="DATE_AND_TIME" />) غير صحيحين. <ph name="BEGIN_LEARN_MORE_LINK" />مزيد من المعلومات<ph name="END_LEARN_MORE_LINK" /></translation>
-<translation id="8308427013383895095">أخفقت الترجمة بسبب حدوث مشكلة في الاتصال بالشبكة.</translation>
+<translation id="8308427013383895095">تعذّرت الترجمة بسبب حدوث مشكلة في الاتصال بالشبكة.</translation>
<translation id="8311129316111205805">تحميل الجلسة</translation>
<translation id="8332188693563227489">تم رفض الدخول إلى <ph name="HOST_NAME" />.</translation>
<translation id="834457929814110454">إذا كنت على دراية بالمخاطر التي تهدد أمانك، يمكنك <ph name="BEGIN_LINK" />زيارة هذا الموقع<ph name="END_LINK" /> قبل أن تتم إزالة البرامج الضارة.</translation>
@@ -966,7 +967,7 @@
<translation id="8503813439785031346">اسم المستخدم</translation>
<translation id="8543181531796978784">يمكنك <ph name="BEGIN_ERROR_LINK" />الإبلاغ عن اكتشاف مشكلة<ph name="END_ERROR_LINK" /> أو، إذا كنت تدرك المخاطر المتعلقة بالأمان، يمكنك <ph name="BEGIN_LINK" />زيارة هذا الموقع غير الآمن<ph name="END_LINK" />.</translation>
<translation id="8543556556237226809">هل هناك أي أسئلة؟ اتصل بالشخص الذي يشرف على ملفك الشخصي.</translation>
-<translation id="8553075262323480129">أخفقت الترجمة لتعذر تحديد لغة الصفحة.</translation>
+<translation id="8553075262323480129">تعذّرت الترجمة لتعذر تحديد لغة الصفحة.</translation>
<translation id="8571890674111243710">جارٍ ترجمة الصفحة إلى <ph name="LANGUAGE" />...</translation>
<translation id="858637041960032120">إضافة رقم هاتف
</translation>
@@ -1039,7 +1040,7 @@
<translation id="917450738466192189">شهادة الخادم غير صالحة.</translation>
<translation id="9183425211371246419">يستخدم <ph name="HOST_NAME" /> بروتوكول غير مدعوم.</translation>
<translation id="9205078245616868884">يتم تشفير بياناتك باستخدام عبارة مرور المزامنة. أدخلها لبدء المزامنة.</translation>
-<translation id="9207861905230894330">أخفقت إضافة مقالة.</translation>
+<translation id="9207861905230894330">تعذّرت إضافة مقالة.</translation>
<translation id="9215416866750762878">‏يعمل أحد التطبيقات على منع اتصال Chrome بموقع الويب هذا على نحو آمن</translation>
<translation id="9219103736887031265">صور</translation>
<translation id="933612690413056017">لا يوجد اتصال بالإنترنت</translation>
diff --git a/chromium/components/strings/components_strings_bg.xtb b/chromium/components/strings/components_strings_bg.xtb
index 24371ca5e11..3557753508d 100644
--- a/chromium/components/strings/components_strings_bg.xtb
+++ b/chromium/components/strings/components_strings_bg.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Получаване на персонализирано съдържание</translation>
<translation id="5675650730144413517">Тази страница не работи</translation>
<translation id="5689199277474810259">Експортиране във формат JSON</translation>
+<translation id="5689516760719285838">Местоположение</translation>
<translation id="5710435578057952990">Самоличността на този уебсайт не е потвърдена.</translation>
<translation id="5719499550583120431">Приемат се предплатени карти.</translation>
<translation id="5720705177508910913">Текущият потребител</translation>
diff --git a/chromium/components/strings/components_strings_bn.xtb b/chromium/components/strings/components_strings_bn.xtb
index 26b18237ce3..d5336fb76cd 100644
--- a/chromium/components/strings/components_strings_bn.xtb
+++ b/chromium/components/strings/components_strings_bn.xtb
@@ -121,14 +121,14 @@
<translation id="1871208020102129563">
প্রক্সি স্থির প্রক্সি সার্ভারগুলি ব্যবহার করতে সেট করা আছে কোনো .pac স্ক্রিপ্ট URL নয়৷</translation>
<translation id="1871284979644508959">আবশ্যক ক্ষেত্র</translation>
-<translation id="1874765382782611674">ডেবিট কার্ড গ্রহণ করা হয়</translation>
+<translation id="1874765382782611674">এই ডেবিট কার্ডগুলি গ্রহণ করা হয়</translation>
<translation id="187918866476621466">শুরুর পৃষ্ঠাগুলি খুলুন</translation>
<translation id="1883255238294161206">তালিকা সঙ্কুচিত করুন</translation>
<translation id="1898423065542865115">ফিল্টার হচ্ছে</translation>
<translation id="1916770123977586577">আপডেট করা সেটিংস এই সাইটে প্রয়োগ করতে পৃষ্ঠাটি আবার লোড করুন</translation>
<translation id="1919345977826869612">বিজ্ঞাপন</translation>
<translation id="192020519938775529">{COUNT,plural, =0{কিছুই নয়}=1{১টি সাইট}one{#টি সাইট}other{#টি সাইট}}</translation>
-<translation id="1927235823738766038">ক্রেডিট এবং ডেবিট কার্ড গ্রহণ করা হয়</translation>
+<translation id="1927235823738766038">এই ক্রেডিট এবং ডেবিট কার্ডগুলি গ্রহণ করা হয়</translation>
<translation id="194030505837763158"><ph name="LINK" /> এ যান</translation>
<translation id="1948773908305951926">প্রিপেড কার্ড গ্রহণ করা হয়</translation>
<translation id="1962204205936693436"><ph name="DOMAIN" /> বুকমার্কগুলি</translation>
@@ -225,7 +225,7 @@
<translation id="2670429602441959756">এই পৃষ্ঠায় এমন কিছু বৈশিষ্ট্য রয়েছে যা এখনও VR এ সমর্থিত নয়। প্রস্থান করা হচ্ছে...</translation>
<translation id="2674170444375937751">আপনি কি আপনার ইতিহাস থেকে এই পৃষ্ঠাগুলি মোছার বিষয়ে নিশ্চিত?</translation>
<translation id="2677748264148917807">ছেড়ে চলে যান</translation>
-<translation id="2699302886720511147">কার্ড গ্রহণ করা হয়</translation>
+<translation id="2699302886720511147">এই কার্ডগুলি গ্রহণ করা হয়</translation>
<translation id="2702801445560668637">পড়ার তালিকা</translation>
<translation id="2704283930420550640">বিন্যাসের সাথে মূল্য মেলে না৷</translation>
<translation id="2704951214193499422">Chromium এই মুহূর্তে আপনার কার্ড নিশ্চিত করতে অক্ষম হয়েছে৷ দয়া করে পরে আবার চেষ্টা করুন৷</translation>
@@ -302,7 +302,7 @@
<ph name="PLATFORM_TEXT" /></translation>
<translation id="320323717674993345">পেমেন্ট বাতিল করুন</translation>
<translation id="3207960819495026254">বুকমার্ক করা হয়েছে</translation>
-<translation id="3209375525920864198">অনুগ্রহ করে একটি বৈধ সেশন নাম লিখুন।</translation>
+<translation id="3209375525920864198">অনুগ্রহ করে একটি সঠিক সেশনের নাম লিখুন।</translation>
<translation id="3211223744486044430">পরের বার আরও দ্রুত পেমেন্ট করা জন্য এই কার্ডটি Google অ্যাকাউন্টে এবং এই ডিভাইসে সেভ করে রাখুন।</translation>
<translation id="3225919329040284222">সার্ভারটি এমন একটি শংসাপত্র উপস্থাপনা করেছে যা বিল্ট-ইন প্রত্যাশাগুলির সাথে মেলে না৷ এই প্রত্যাশাগুলি আপনাকে সুরক্ষিত করতে কিছু নিশ্চিত, উচ্চ সুরক্ষার ওয়েবসাইটের জন্য অন্তর্ভুক্ত৷</translation>
<translation id="3226128629678568754">পৃষ্ঠাটি লোড করতে প্রয়োজনীয় ডেটেটি আবার জমা দিতে আবার লোড করার বোতামটি টিপুন৷</translation>
@@ -463,7 +463,7 @@
<translation id="4325863107915753736">নিবন্ধ খুঁজে পেতে ব্যর্থ হয়েছে</translation>
<translation id="4326324639298822553">আপনার মেয়াদ শেষের তারিখ পরীক্ষা করে আবার চেষ্টা করুন</translation>
<translation id="4331708818696583467">সুরক্ষিত নয়</translation>
-<translation id="4346197816712207223">ক্রেডিট কার্ড গ্রহণ করা হয়</translation>
+<translation id="4346197816712207223">এই ক্রেডিট কার্ডগুলি গ্রহণ করা হয়</translation>
<translation id="4356973930735388585">এই সাইটে আক্রমণকারীরা আপনার কম্পিউটারে ক্ষতিকারক প্রোগ্রাম ইনস্টল করতে পারে যা আপনার তথ্য (উদাহরণস্বরুপ, ফটো, পাসওয়ার্ড, বার্তা এবং ক্রেডিট কার্ড) চুরি করতে বা মুছে দিতে পারে।</translation>
<translation id="4372948949327679948">প্রত্যাশিত <ph name="VALUE_TYPE" /> মান৷</translation>
<translation id="4377125064752653719">আপনি <ph name="DOMAIN" />-এ পৌঁছানোর প্রচেষ্টা করেছেন, তবে সার্ভারটি যে শংসাপত্রটি উপস্থাপন করেছে সেটির জারিকর্তা সেটিকে প্রত্যাহার করেছে৷ এর অর্থ হ'ল সার্ভারটি যে সুরক্ষা প্রমানপত্র উপস্থাপন করেছে তা কোনওমতেই বিশ্বাসযোগ্য নয়৷ হতে পারে আপনি একজন আক্রমণকারীর সাথে যোগাযোগ করছেন৷</translation>
@@ -632,6 +632,7 @@
<translation id="5669703222995421982">ব্যক্তিগতকৃত সামগ্রী পান</translation>
<translation id="5675650730144413517">এই পৃষ্ঠাটি কাজ করছে না</translation>
<translation id="5689199277474810259">JSON এ রপ্তানি করুন</translation>
+<translation id="5689516760719285838">লোকেশন</translation>
<translation id="5710435578057952990">এই ওয়েবসাইটির পরিচয় যাচাই করা হয় নি৷</translation>
<translation id="5719499550583120431">প্রিপেড কার্ড গ্রহণ করা হয়।</translation>
<translation id="5720705177508910913">বর্তমান ব্যবহারকারী</translation>
@@ -749,7 +750,7 @@
<translation id="6753269504797312559">নীতি মান</translation>
<translation id="6757797048963528358">আপনার ডিভাইস নিদ্রা মোডে গিয়েছে।</translation>
<translation id="6778737459546443941">আপনার পিতামাতা এখনও এটি অনুমোদন করেন নি</translation>
-<translation id="681021252041861472">আবশ্যক ক্ষেত্র</translation>
+<translation id="681021252041861472">এই ফিল্ডটি ফাঁকা রাখা যাবে না</translation>
<translation id="6810899417690483278">কাস্টমাইজেশন আইডি</translation>
<translation id="6820686453637990663">CVC</translation>
<translation id="6824266427216888781">আঞ্চলিক ডেটা লোড করা যায়নি</translation>
@@ -799,7 +800,7 @@
<translation id="724691107663265825">এই সাইটটিতে ম্যালওয়্যার আছে</translation>
<translation id="724975217298816891">আপনার কার্ডের বিবরণ আপডেট করার জন্য মেয়াদ শেষের তারিখ এবং <ph name="CREDIT_CARD" /> এর CVC লিখুন। আপনি নিশ্চিত করলে, আপনার কার্ডের বিবরণ এই সাইটের সাথে শেয়ার করা হবে।</translation>
<translation id="7260504762447901703">অ্যাক্সেস প্রত্যাহার করুন</translation>
-<translation id="7271803869921933038">প্রিপেড কার্ড গ্রহণ করা হয়</translation>
+<translation id="7271803869921933038">এই প্রিপেড কার্ডগুলি গ্রহণ করা হয়</translation>
<translation id="7275334191706090484">পরিচালিত বুকমার্কগুলি</translation>
<translation id="7298195798382681320">প্রস্তাবিত</translation>
<translation id="7309308571273880165"><ph name="CRASH_TIME" /> এ ক্র্যাশ প্রতিবেদন ক্যাপচার করা হয়েছে (ব্যবহারকারী দ্বারা আপলোডের অনুরোধ করা হয়েছে, এখনও আপলোড করা হয়নি)</translation>
@@ -982,7 +983,7 @@
<translation id="8730621377337864115">সম্পন্ন হয়েছে</translation>
<translation id="8738058698779197622">নিরাপদ নেটওয়ার্ক সংযোগ স্থাপন করতে আপনার ঘড়িকে সঠিকভাবে সেট করতে হবে৷ নিরাপদ সংযোগ স্থাপন করার জন্য নিজেদের সনাক্ত করার জন্য ওয়েবসাইটগুলি যে শংসাপত্রগুলি ব্যবহার করে, সেগুলি শুধুমাত্র নির্দিষ্ট সময়ের জন্য বৈধ থাকে৷ যেহেতু আপনার ডিভাইসের ঘড়িটি ভুল, সেই জন্য Chromium সঠিকভাবে শংসাপত্রগুলি পরীক্ষা করতে পারে না৷</translation>
<translation id="8740359287975076522"><ph name="HOST_NAME" /> এর &lt;abbr id="dnsDefinition"&gt;DNS ঠিকানা&lt;/abbr&gt; পাওয়া যায়নি। সমস্যা নির্ণয় করা হচ্ছে।</translation>
-<translation id="874846938927089722">ক্রেডিট ও প্রিপেড কার্ড গ্রহণ করা হয়</translation>
+<translation id="874846938927089722">এই ক্রেডিট ও প্রিপেড কার্ডগুলি গ্রহণ করা হয়</translation>
<translation id="8759274551635299824">এই কার্ডটির মেয়াদ শেষ হয়েছে</translation>
<translation id="8761567432415473239">Google নিরাপদ ব্রাউজিং সম্প্রতি <ph name="SITE" /> এ <ph name="BEGIN_LINK" />ক্ষতিকারক প্রোগ্রামগুলি খুঁজে পেয়েছে<ph name="END_LINK" />৷</translation>
<translation id="8790007591277257123">&amp;মুছে ফেলাকে আবার করুন</translation>
@@ -1045,11 +1046,11 @@
<translation id="933712198907837967">Diners Club</translation>
<translation id="935608979562296692">ফর্ম সাফ করুন</translation>
<translation id="939736085109172342">নতুন ফোল্ডার</translation>
-<translation id="951104842009476243">ডেবিট ও প্রিপেড কার্ড গ্রহণ করা হয়</translation>
+<translation id="951104842009476243">এই ডেবিট ও প্রিপেড কার্ডগুলি গ্রহণ করা হয়</translation>
<translation id="969892804517981540">অফিসিয়াল বিল্ড</translation>
<translation id="975560348586398090">{COUNT,plural, =0{কিছুই নয়}=1{১টি আইটেম}one{#টি আইটেম}other{#টি আইটেম}}</translation>
<translation id="981121421437150478">অফলাইন</translation>
-<translation id="988159990683914416">বিকাশকারী বিল্ড</translation>
+<translation id="988159990683914416">ডেভেলপার বিল্ড</translation>
<translation id="989988560359834682">ঠিকানা সম্পাদনা করুন</translation>
<translation id="992115559265932548"><ph name="MICROSOFT_ACTIVE_DIRECTORY" /></translation>
<translation id="992432478773561401">"<ph name="SOFTWARE_NAME" />" আপনার কম্পিউটার বা নেটওয়ার্কে সঠিকভাবে ইনস্টল করা হয়নি:
diff --git a/chromium/components/strings/components_strings_ca.xtb b/chromium/components/strings/components_strings_ca.xtb
index 2ef442da774..7f9c6cde633 100644
--- a/chromium/components/strings/components_strings_ca.xtb
+++ b/chromium/components/strings/components_strings_ca.xtb
@@ -77,7 +77,7 @@
<translation id="1549470594296187301">Heu d'activar el JavaScript per utilitzar aquesta funció.</translation>
<translation id="1559528461873125649">No existeix el fitxer o el directori</translation>
<translation id="1583429793053364125">S'ha produït un error en mostrar aquesta pàgina web.</translation>
-<translation id="1590457302292452960">Genera una contrasenya segura…</translation>
+<translation id="1590457302292452960">Genera una contrasenya segura...</translation>
<translation id="1592005682883173041">Accés a les dades locals</translation>
<translation id="1594030484168838125">Tria</translation>
<translation id="1620510694547887537">Càmera</translation>
@@ -155,7 +155,7 @@
<translation id="214556005048008348">Cancel·la el pagament</translation>
<translation id="2147827593068025794">Sincronització en segon pla</translation>
<translation id="2148613324460538318">Afegeix una targeta</translation>
-<translation id="2149973817440762519">Edició de l'adreça d'interès</translation>
+<translation id="2149973817440762519">Edita l'adreça d'interès</translation>
<translation id="2154054054215849342">La sincronització no està disponible per al teu domini</translation>
<translation id="2154484045852737596">Edita la targeta</translation>
<translation id="2166049586286450108">Accés complet d'administrador</translation>
@@ -430,14 +430,14 @@
<translation id="4103249731201008433">El número de sèrie del dispositiu no és vàlid</translation>
<translation id="410351446219883937">Reproducció automàtica</translation>
<translation id="4103763322291513355">Visiteu &lt;strong&gt;chrome://policy&lt;/strong&gt; per veure la llista d'URL inclosos a la llista negra i altres polítiques aplicades per l'administrador del sistema.</translation>
-<translation id="4116663294526079822">Permet sempre en aquest lloc</translation>
+<translation id="4116663294526079822">Permet sempre en aquest lloc web</translation>
<translation id="4117700440116928470">L'àmbit de la política no s'admet.</translation>
<translation id="4129401438321186435">{COUNT,plural, =1{1 element més}other{# elements més}}</translation>
<translation id="4130226655945681476">Comproveu els cables de xarxa, el mòdem i l'encaminador</translation>
<translation id="413544239732274901">Més informació</translation>
<translation id="4148925816941278100">American Express</translation>
<translation id="4151403195736952345">Utilitza el valor predeterminat global (detecta)</translation>
-<translation id="4165986682804962316">Configuració del lloc</translation>
+<translation id="4165986682804962316">Configuració del lloc web</translation>
<translation id="4169947484918424451">Voleu que Chromium desi aquesta targeta?</translation>
<translation id="4171400957073367226">La signatura de verificació és incorrecta</translation>
<translation id="4173827307318847180">{MORE_ITEMS,plural, =1{<ph name="ITEM_COUNT" /> element més}other{<ph name="ITEM_COUNT" /> elements més}}</translation>
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Obtén contingut personalitzat</translation>
<translation id="5675650730144413517">Aquesta pàgina no funciona</translation>
<translation id="5689199277474810259">Exporta a JSON</translation>
+<translation id="5689516760719285838">Ubicació</translation>
<translation id="5710435578057952990">La identitat d'aquest lloc web no ha estat verificada.</translation>
<translation id="5719499550583120431">S'accepten targetes de prepagament.</translation>
<translation id="5720705177508910913">Usuari actual</translation>
diff --git a/chromium/components/strings/components_strings_cs.xtb b/chromium/components/strings/components_strings_cs.xtb
index d9278f0f52b..7ae382d7cec 100644
--- a/chromium/components/strings/components_strings_cs.xtb
+++ b/chromium/components/strings/components_strings_cs.xtb
@@ -627,6 +627,7 @@ Kontaktujte administrátora systému.</translation>
<translation id="5669703222995421982">Získejte personalizovaný obsah</translation>
<translation id="5675650730144413517">Tato stránka nefunguje</translation>
<translation id="5689199277474810259">Exportovat do formátu JSON</translation>
+<translation id="5689516760719285838">Poloha</translation>
<translation id="5710435578057952990">Identita těchto webových stránek nebyla ověřena.</translation>
<translation id="5719499550583120431">Obchodník přijímá předplacené karty.</translation>
<translation id="5720705177508910913">Aktuální uživatel</translation>
diff --git a/chromium/components/strings/components_strings_da.xtb b/chromium/components/strings/components_strings_da.xtb
index cb44fcab455..8527a7afd89 100644
--- a/chromium/components/strings/components_strings_da.xtb
+++ b/chromium/components/strings/components_strings_da.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Få tilpasset indhold</translation>
<translation id="5675650730144413517">Denne side virker ikke</translation>
<translation id="5689199277474810259">Eksportér i JSON</translation>
+<translation id="5689516760719285838">Placering</translation>
<translation id="5710435578057952990">Dette websites identitet er ikke blevet bekræftet.</translation>
<translation id="5719499550583120431">Forudbetalte kort accepteres.</translation>
<translation id="5720705177508910913">Aktuel bruger</translation>
diff --git a/chromium/components/strings/components_strings_de.xtb b/chromium/components/strings/components_strings_de.xtb
index 4aa5924c011..ea29d50d356 100644
--- a/chromium/components/strings/components_strings_de.xtb
+++ b/chromium/components/strings/components_strings_de.xtb
@@ -397,7 +397,7 @@
<translation id="3759461132968374835">Es liegen keine kürzlich gemeldeten Abstürze vor. Abstürze, die bei deaktivierter Absturzberichtsfunktion aufgetreten sind, werden hier nicht angezeigt.</translation>
<translation id="3765032636089507299">Die Seite "Safe Browsing" wird überarbeitet.</translation>
<translation id="3778403066972421603">Möchten Sie diese Karte in Ihrem Google-Konto und auf diesem Gerät speichern?</translation>
-<translation id="3783418713923659662">MasterCard</translation>
+<translation id="3783418713923659662">Mastercard</translation>
<translation id="3787705759683870569">Ablaufdatum: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
<translation id="3808375843007691220">Warnung: experimentelle Funktionen!</translation>
<translation id="382518646247711829">Falls Sie einen Proxyserver verwenden...</translation>
@@ -630,6 +630,7 @@
<translation id="5669703222995421982">Personalisierte Inhalte erhalten</translation>
<translation id="5675650730144413517">Diese Seite funktioniert nicht</translation>
<translation id="5689199277474810259">Als JSON exportieren</translation>
+<translation id="5689516760719285838">Ort</translation>
<translation id="5710435578057952990">Die Identität dieser Website wurde nicht verifiziert.</translation>
<translation id="5719499550583120431">Prepaidkarten werden akzeptiert.</translation>
<translation id="5720705177508910913">Aktueller Nutzer</translation>
@@ -698,7 +699,7 @@
<translation id="6305205051461490394"><ph name="URL" /> ist nicht erreichbar.</translation>
<translation id="6319915415804115995">Vor über einem Jahr zuletzt verwendet</translation>
<translation id="6321917430147971392">Überprüfen Sie die DNS-Einstellungen.</translation>
-<translation id="6325286409953503969">Interessiert an coolen neuen Chrome-Funktionen? <ph name="BEGIN_LINK" />Testen Sie unsere Dev-Version.<ph name="END_LINK" /></translation>
+<translation id="6325286409953503969">Interessiert an coolen neuen Chrome-Funktionen? <ph name="BEGIN_LINK" />Testen Sie unseren Entwicklerkanal.<ph name="END_LINK" /></translation>
<translation id="6328639280570009161">Deaktivieren Sie die Netzwerkvorhersage.</translation>
<translation id="6328786501058569169">Sie befinden sich auf einer betrügerischen Website</translation>
<translation id="6337133576188860026">Es werden weniger als <ph name="SIZE" /> Speicherplatz freigegeben. Manche Websites werden beim nächsten Öffnen eventuell langsamer geladen.</translation>
@@ -748,7 +749,7 @@
<translation id="6753269504797312559">Wert der Richtlinie</translation>
<translation id="6757797048963528358">Ihr Gerät ist im Ruhemodus.</translation>
<translation id="6778737459546443941">Dein Elternteil hat die Berechtigung noch nicht erteilt</translation>
-<translation id="681021252041861472">Pflichtfeld</translation>
+<translation id="681021252041861472">Erforderliches Feld</translation>
<translation id="6810899417690483278">Personalisierungs-ID</translation>
<translation id="6820686453637990663">CVC</translation>
<translation id="6824266427216888781">Fehler beim Laden der Regionsdaten</translation>
@@ -858,7 +859,7 @@
<translation id="7668654391829183341">Unbekanntes Gerät</translation>
<translation id="7669271284792375604">Unbefugte Dritte auf dieser Website versuchen eventuell, Sie zur Installation von Programmen zu bewegen, die sich nachteilig auf Ihre Browsernutzung auswirken. Dabei kann zum Beispiel Ihre Startseite geändert werden oder es erscheinen zusätzliche Anzeigen auf von Ihnen besuchten Websites.</translation>
<translation id="7682287625158474539">Versand</translation>
-<translation id="7695552107151968219">Interessiert an coolen neuen Chrome-Funktionen? <ph name="BEGIN_LINK" />Testen Sie unsere Betaversion.<ph name="END_LINK" /></translation>
+<translation id="7695552107151968219">Interessiert an coolen neuen Chrome-Funktionen? <ph name="BEGIN_LINK" />Testen Sie unseren Betakanal.<ph name="END_LINK" /></translation>
<translation id="7699293099605015246">Momentan sind keine Artikel verfügbar</translation>
<translation id="7701040980221191251">Keine</translation>
<translation id="7704050614460855821"><ph name="BEGIN_LINK" />Weiter zu <ph name="SITE" /> (unsicher)<ph name="END_LINK" /></translation>
@@ -971,7 +972,7 @@
</translation>
<translation id="859285277496340001">In dem Zertifikat ist kein Mechanismus angegeben, mit dem geprüft werden kann, ob es zurückgerufen wurde.</translation>
<translation id="8620436878122366504">Deine Eltern haben die Berechtigung noch nicht erteilt</translation>
-<translation id="8625384913736129811">Diese Karte auf diesem Gerät speichern</translation>
+<translation id="8625384913736129811">Diese Karte für dieses Gerät speichern</translation>
<translation id="8647750283161643317">Alle auf Standardeinstellung zurücksetzen</translation>
<translation id="8660471606262461360">Aus Google Payments</translation>
<translation id="8688672835843460752">Verfügbar</translation>
diff --git a/chromium/components/strings/components_strings_el.xtb b/chromium/components/strings/components_strings_el.xtb
index 890af2ad1b2..5c0faf37179 100644
--- a/chromium/components/strings/components_strings_el.xtb
+++ b/chromium/components/strings/components_strings_el.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Λήψη εξατομικευμένου περιεχομένου</translation>
<translation id="5675650730144413517">Αυτή η σελίδα δεν λειτουργεί</translation>
<translation id="5689199277474810259">Εξαγωγή σε JSON</translation>
+<translation id="5689516760719285838">Τοποθεσία</translation>
<translation id="5710435578057952990">Η ταυτότητα αυτού του ιστότοπου δεν έχει επαληθευτεί.</translation>
<translation id="5719499550583120431">Οι προπληρωμένες κάρτες γίνονται δεκτές.</translation>
<translation id="5720705177508910913">Τρέχων χρήστης</translation>
diff --git a/chromium/components/strings/components_strings_en-GB.xtb b/chromium/components/strings/components_strings_en-GB.xtb
index 550524f9277..2c19a0f8b85 100644
--- a/chromium/components/strings/components_strings_en-GB.xtb
+++ b/chromium/components/strings/components_strings_en-GB.xtb
@@ -77,7 +77,7 @@
<translation id="1549470594296187301">JavaScript must be enabled to use this feature.</translation>
<translation id="1559528461873125649">No such file or directory</translation>
<translation id="1583429793053364125">Something went wrong while displaying this web page.</translation>
-<translation id="1590457302292452960">Generate a strong password…</translation>
+<translation id="1590457302292452960">Generate a strong password...</translation>
<translation id="1592005682883173041">Local Data Access</translation>
<translation id="1594030484168838125">Choose</translation>
<translation id="1620510694547887537">Camera</translation>
@@ -398,7 +398,7 @@
<translation id="3759461132968374835">You have no recently reported crashes. Crashes that occurred when crash reporting was disabled will not appear here.</translation>
<translation id="3765032636089507299">The Safe Browsing page is under construction.</translation>
<translation id="3778403066972421603">Do you want to save this card to your Google account and on this device?</translation>
-<translation id="3783418713923659662">MasterCard</translation>
+<translation id="3783418713923659662">Mastercard</translation>
<translation id="3787705759683870569">Expires <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
<translation id="3808375843007691220">Warning: Experimental features ahead!</translation>
<translation id="382518646247711829">If you use a proxy server...</translation>
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Get personalised content</translation>
<translation id="5675650730144413517">This page isn’t working</translation>
<translation id="5689199277474810259">Export to JSON</translation>
+<translation id="5689516760719285838">Location</translation>
<translation id="5710435578057952990">The identity of this website has not been verified.</translation>
<translation id="5719499550583120431">Prepaid cards are accepted.</translation>
<translation id="5720705177508910913">Current user</translation>
diff --git a/chromium/components/strings/components_strings_es-419.xtb b/chromium/components/strings/components_strings_es-419.xtb
index 008a8fb8133..da44466cd2a 100644
--- a/chromium/components/strings/components_strings_es-419.xtb
+++ b/chromium/components/strings/components_strings_es-419.xtb
@@ -399,7 +399,7 @@
<translation id="3759461132968374835">No has notificado ningún bloqueo recientemente. Los bloqueos que se hayan producido mientras la función de notificación de bloqueos estaba desactivada no aparecerán en esta página.</translation>
<translation id="3765032636089507299">La página de Navegación segura está en construcción.</translation>
<translation id="3778403066972421603">¿Deseas guardar esta tarjeta en tu cuenta de Google y en este dispositivo?</translation>
-<translation id="3783418713923659662">MasterCard</translation>
+<translation id="3783418713923659662">Mastercard</translation>
<translation id="3787705759683870569">Vencimiento: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
<translation id="3808375843007691220">Advertencia: Se detectaron funciones experimentales</translation>
<translation id="382518646247711829">Si utilizas un servidor proxy...</translation>
@@ -632,6 +632,7 @@
<translation id="5669703222995421982">Obtener contenido personalizado</translation>
<translation id="5675650730144413517">Esta página no funciona</translation>
<translation id="5689199277474810259">Exportar a JSON</translation>
+<translation id="5689516760719285838">Ubicación</translation>
<translation id="5710435578057952990">No se ha verificado la identidad de este sitio web.</translation>
<translation id="5719499550583120431">Se aceptan tarjetas de prepago.</translation>
<translation id="5720705177508910913">Usuario actual</translation>
diff --git a/chromium/components/strings/components_strings_es.xtb b/chromium/components/strings/components_strings_es.xtb
index 53fc1fbb4c2..49f78a58346 100644
--- a/chromium/components/strings/components_strings_es.xtb
+++ b/chromium/components/strings/components_strings_es.xtb
@@ -161,7 +161,7 @@
<translation id="2166049586286450108">Acceso de administrador completo</translation>
<translation id="2166378884831602661">Este sitio web no puede proporcionar una conexión segura</translation>
<translation id="2181821976797666341">Políticas</translation>
-<translation id="2183608646556468874">Número de teléfono</translation>
+<translation id="2183608646556468874">N.º de teléfono</translation>
<translation id="2184405333245229118">{COUNT,plural, =1{Una dirección}other{# direcciones}}</translation>
<translation id="2187317261103489799">Detectar (predeterminado)</translation>
<translation id="2202020181578195191">Introduce un año de vencimiento válido</translation>
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Obtener contenido personalizado</translation>
<translation id="5675650730144413517">Esta página no funciona</translation>
<translation id="5689199277474810259">Exportar a JSON</translation>
+<translation id="5689516760719285838">Ubicación</translation>
<translation id="5710435578057952990">No se ha verificado la identidad de este sitio web.</translation>
<translation id="5719499550583120431">Se aceptan tarjetas prepago.</translation>
<translation id="5720705177508910913">Usuario actual</translation>
@@ -796,7 +797,7 @@
<translation id="721197778055552897"><ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /> sobre este problema.</translation>
<translation id="7219179957768738017">La conexión utiliza <ph name="SSL_VERSION" />.</translation>
<translation id="7220786058474068424">Procesando pago</translation>
-<translation id="724691107663265825">El sitio al que vas a acceder contiene software malicioso</translation>
+<translation id="724691107663265825">El sitio web al que vas a acceder contiene software malicioso</translation>
<translation id="724975217298816891">Introduce la fecha de caducidad y el código CVC de la tarjeta <ph name="CREDIT_CARD" /> para actualizar sus detalles. Cuando la confirmes, su información se compartirá con este sitio web.</translation>
<translation id="7260504762447901703">Revoca el acceso</translation>
<translation id="7271803869921933038">Tarjetas prepago aceptadas</translation>
@@ -1006,7 +1007,7 @@
<translation id="8957210676456822347">Autorización de portal cautivo</translation>
<translation id="8971063699422889582">El certificado del servidor ha caducado.</translation>
<translation id="8989148748219918422"><ph name="ORGANIZATION" /> [<ph name="COUNTRY" />]</translation>
-<translation id="8996941253935762404">El sitio al que vas a acceder contiene programas dañinos</translation>
+<translation id="8996941253935762404">El sitio web al que vas a acceder contiene programas dañinos</translation>
<translation id="8997023839087525404">El servidor ha mostrado un certificado que no se ha hecho público mediante la Política de Transparencia en los Certificados. Este requisito se aplica a algunos certificados para garantizar que son de confianza y ofrecer protección contra los atacantes.</translation>
<translation id="9001074447101275817">El proxy <ph name="DOMAIN" /> requiere un nombre de usuario y una contraseña.</translation>
<translation id="9005998258318286617">Se ha producido un error al cargar el documento PDF.</translation>
diff --git a/chromium/components/strings/components_strings_et.xtb b/chromium/components/strings/components_strings_et.xtb
index 5dd0ffe3ff6..b9a4e11d398 100644
--- a/chromium/components/strings/components_strings_et.xtb
+++ b/chromium/components/strings/components_strings_et.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Isikupärastatud sisu hankimine</translation>
<translation id="5675650730144413517">See leht ei tööta</translation>
<translation id="5689199277474810259">Ekspordi JSON-vormingus</translation>
+<translation id="5689516760719285838">Asukoht</translation>
<translation id="5710435578057952990">Selle veebisaidi identiteeti pole kinnitanud.</translation>
<translation id="5719499550583120431">Kaupmees aktsepteerib ettemakstud kaarte.</translation>
<translation id="5720705177508910913">Praegune kasutaja</translation>
@@ -886,7 +887,7 @@
<translation id="7812922009395017822">Mir</translation>
<translation id="7813600968533626083">Kas eemaldada Chrome'ist vormi soovitus?</translation>
<translation id="7815407501681723534">Otsingule „<ph name="SEARCH_STRING" />” leiti <ph name="NUMBER_OF_RESULTS" /> <ph name="SEARCH_RESULTS" />.</translation>
-<translation id="7818867226424560206">Reeglite haldamine</translation>
+<translation id="7818867226424560206">Eeskirjade haldamine</translation>
<translation id="782886543891417279">WiFi-võrk, mida kasutate (<ph name="WIFI_NAME" />), võib nõuda sisselogimislehe külastamist.</translation>
<translation id="785549533363645510">Te pole siiski nähtamatu. Inkognito režiimi kasutamine ei varja teie sirvimist tööandja, Interneti-teenuse pakkuja ega külastatavate veebisaitide eest.</translation>
<translation id="7855695075675558090"><ph name="TOTAL_LABEL" /> <ph name="CURRENCY_CODE" /> <ph name="FORMATTED_TOTAL_AMOUNT" /></translation>
diff --git a/chromium/components/strings/components_strings_fa.xtb b/chromium/components/strings/components_strings_fa.xtb
index 71c224db047..3483ca747d7 100644
--- a/chromium/components/strings/components_strings_fa.xtb
+++ b/chromium/components/strings/components_strings_fa.xtb
@@ -462,7 +462,7 @@
<translation id="4325863107915753736">مقاله یافت نشد.</translation>
<translation id="4326324639298822553">تاریخ انقضا را بررسی و دوباره امتحان کنید</translation>
<translation id="4331708818696583467">امن نیست</translation>
-<translation id="4346197816712207223">کارت‌های اعتباری قابل‌قبول</translation>
+<translation id="4346197816712207223">کارت‌های اعتباری قابل‌‌قبول</translation>
<translation id="4356973930735388585">مهاجم‌ها در این سایت ممکن است تلاش کنند برنامه‌های خطرناکی در رایانه شما نصب کنند که اطلاعات شما (مانند عکس‌ها، گذرواژه‌ها، پیام‌ها و کارت‌های اعتباری) را به سرقت می‌برند یا حذف می‌کنند.</translation>
<translation id="4372948949327679948">مقدار مورد انتظار <ph name="VALUE_TYPE" />.</translation>
<translation id="4377125064752653719">شما سعی در دسترسی به <ph name="DOMAIN" /> را داشتید، اما صادر کننده، گواهی ارائه شده از سوی سرور را باطل کرده است. یعنی اصلاً نباید به اطلاعات کاربری که این سرور ارائه می‌کند اطمینان کرد. ممکن است شما با مهاجمی در ارتباط باشید.</translation>
@@ -526,7 +526,7 @@
<translation id="4923459931733593730">پرداخت</translation>
<translation id="4926049483395192435">باید مشخص شود.</translation>
<translation id="4926340098269537727"><ph name="ACTIVE_MATCH" />/<ph name="TOTAL_MATCHCOUNT" /></translation>
-<translation id="495170559598752135">عملکردها</translation>
+<translation id="495170559598752135">کنش‌ها</translation>
<translation id="4958444002117714549">بزرگ کردن فهرست</translation>
<translation id="4974590756084640048">فعال کردن مجدد اخطارها</translation>
<translation id="4989542687859782284">دردسترس نیست</translation>
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">دریافت محتوای شخصی‌سازی‌شده</translation>
<translation id="5675650730144413517">این صفحه کار نمی‌کند</translation>
<translation id="5689199277474810259">‏صادر کردن به JSON</translation>
+<translation id="5689516760719285838">مکان</translation>
<translation id="5710435578057952990">هویت این وب سایت تأیید نشده است.</translation>
<translation id="5719499550583120431">کارت‌های پیش‌پرداخت پذیرفته می‌شوند.</translation>
<translation id="5720705177508910913">کاربر کنونی</translation>
@@ -971,7 +972,7 @@
<translation id="858637041960032120">افزودن شماره تلفن</translation>
<translation id="859285277496340001">این مجوز هیچ مکانیزمی را برای بررسی اینکه آیا باطل شده یا نه مشخص نمی‌کند.</translation>
<translation id="8620436878122366504">والدینتان هنوز این سایت را تأیید نکرده‌اند</translation>
-<translation id="8625384913736129811">ذخیره این کارت در این دستگاه</translation>
+<translation id="8625384913736129811">ذخیره کردن این کارت در این دستگاه</translation>
<translation id="8647750283161643317">بازنشانی همه به موارد پیش‌فرض</translation>
<translation id="8660471606262461360">‏از Google Payments</translation>
<translation id="8688672835843460752">دردسترس</translation>
diff --git a/chromium/components/strings/components_strings_fi.xtb b/chromium/components/strings/components_strings_fi.xtb
index 3c65188c2a7..1425d4be730 100644
--- a/chromium/components/strings/components_strings_fi.xtb
+++ b/chromium/components/strings/components_strings_fi.xtb
@@ -302,7 +302,7 @@
<ph name="PLATFORM_TEXT" /></translation>
<translation id="320323717674993345">Peruuta maksu</translation>
<translation id="3207960819495026254">Kirjanmerkeissä</translation>
-<translation id="3209375525920864198">Anna kelvollinen käynnin nimi.</translation>
+<translation id="3209375525920864198">Anna kelvollinen istunnon nimi.</translation>
<translation id="3211223744486044430">Jos haluat maksaa nopeammin seuraavalla kerralla, tallenna tämä kortti Google-tilillesi ja tälle laitteelle.</translation>
<translation id="3225919329040284222">Palvelin esitti varmenteen, joka ei vastaa sisäänrakennettuja odotuksia. Tietyillä tehokkaasti suojatuilla sivustoilla on odotuksia, joilla suojataan käyttäjiä.</translation>
<translation id="3226128629678568754">Paina päivityspainiketta, niin sivun lataukseen tarvittavat tiedot lähetetään uudelleen.</translation>
@@ -399,7 +399,7 @@
<translation id="3759461132968374835">Ei viimeaikaisia kaatumisilmoituksia. Jos selain kaatui kaatumisilmoitusten ollessa pois käytöstä, ilmoituksia ei näytetä täällä.</translation>
<translation id="3765032636089507299">Selaussuojasivu on työn alla.</translation>
<translation id="3778403066972421603">Haluatko tallentaa tämän kortin Google-tilille ja tälle laitteelle?</translation>
-<translation id="3783418713923659662">MasterCard</translation>
+<translation id="3783418713923659662">Mastercard</translation>
<translation id="3787705759683870569">Vanhenee <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
<translation id="3808375843007691220">Varoitus: Kokeellisia ominaisuuksia</translation>
<translation id="382518646247711829">Jos käytät välityspalvelinta…</translation>
@@ -632,6 +632,7 @@
<translation id="5669703222995421982">Hanki räätälöityä sisältöä</translation>
<translation id="5675650730144413517">Sivu ei toimi</translation>
<translation id="5689199277474810259">Vie JSON-tiedostoon</translation>
+<translation id="5689516760719285838">Sijainti</translation>
<translation id="5710435578057952990">Tämän sivuston identiteettiä ei ole vahvistettu.</translation>
<translation id="5719499550583120431">Prepaid-kortit hyväksytään.</translation>
<translation id="5720705177508910913">Nykyinen käyttäjä</translation>
@@ -894,7 +895,7 @@
<translation id="7878176543348854470">Maksu- ja prepaid-kortit hyväksytään.</translation>
<translation id="7878562273885520351">Salasanasi on saattanut vaarantua.</translation>
<translation id="7887683347370398519">Tarkista CVC ja yritä uudelleen.</translation>
-<translation id="7893255318348328562">Käynnin nimi</translation>
+<translation id="7893255318348328562">Istunnon nimi</translation>
<translation id="79338296614623784">Anna kelvollinen puhelinnumero.</translation>
<translation id="7935318582918952113">DOM Distiller</translation>
<translation id="7938958445268990899">Palvelimen varmenne ei ole vielä voimassa.</translation>
@@ -944,7 +945,7 @@
<translation id="8298115750975731693">Käyttämäsi Wi-Fi (<ph name="WIFI_NAME" />) saattaa edellyttää vierailua osoitteessa <ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" />.</translation>
<translation id="8306404619377842860">Verkkotunnukseen <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ei voi muodostaa salattua yhteyttä, koska tietokoneesi aika ja päivämäärä (<ph name="DATE_AND_TIME" />) ovat virheelliset. <ph name="BEGIN_LEARN_MORE_LINK" />Lisätietoja<ph name="END_LEARN_MORE_LINK" /></translation>
<translation id="8308427013383895095">Käännös epäonnistui, koska verkkoyhteydessä esiintyi ongelmia.</translation>
-<translation id="8311129316111205805">Lataa käynti</translation>
+<translation id="8311129316111205805">Lataa istunto</translation>
<translation id="8332188693563227489">Sivuston <ph name="HOST_NAME" /> käyttöoikeus evättiin</translation>
<translation id="834457929814110454">Jos ymmärrät käyntiä koskevat turvallisuusriskit, voit <ph name="BEGIN_LINK" />siirtyä tähän sivustoon<ph name="END_LINK" /> jo ennen haitallisten ohjelmien poistamista.</translation>
<translation id="8349305172487531364">Kirjanmerkkipalkki</translation>
diff --git a/chromium/components/strings/components_strings_fil.xtb b/chromium/components/strings/components_strings_fil.xtb
index d5e08db7a44..4110fe469a3 100644
--- a/chromium/components/strings/components_strings_fil.xtb
+++ b/chromium/components/strings/components_strings_fil.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Makakuha ng naka-personalize na content</translation>
<translation id="5675650730144413517">Hindi gumagana ang page na ito</translation>
<translation id="5689199277474810259">I-export sa JSON</translation>
+<translation id="5689516760719285838">Lokasyon</translation>
<translation id="5710435578057952990">Ang pagkilala ng website na ito ay hindi natukoy.</translation>
<translation id="5719499550583120431">Tinatanggap ang mga prepaid card.</translation>
<translation id="5720705177508910913">Kasalukuyang user</translation>
@@ -971,7 +972,7 @@
<translation id="858637041960032120">Magdagdag ng numero ng telepono</translation>
<translation id="859285277496340001">Hindi tumutukoy ang certificate na ito ng mekanismo upang masuri kung nabawi ito.</translation>
<translation id="8620436878122366504">Hindi pa ito inaaprubahan ng iyong mga magulang</translation>
-<translation id="8625384913736129811">I-save ang Card Na Ito sa Device Na Ito</translation>
+<translation id="8625384913736129811">I-save ang Card na Ito sa Device na Ito</translation>
<translation id="8647750283161643317">I-reset ang lahat sa default</translation>
<translation id="8660471606262461360">Mula sa Google Payments</translation>
<translation id="8688672835843460752">Available</translation>
diff --git a/chromium/components/strings/components_strings_fr.xtb b/chromium/components/strings/components_strings_fr.xtb
index 588d26375c4..45277fea1e3 100644
--- a/chromium/components/strings/components_strings_fr.xtb
+++ b/chromium/components/strings/components_strings_fr.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Obtenir une recommandation de contenu personnalisé</translation>
<translation id="5675650730144413517">Cette page ne fonctionne pas</translation>
<translation id="5689199277474810259">Exporter au format JSON</translation>
+<translation id="5689516760719285838">Position</translation>
<translation id="5710435578057952990">L'identité de ce site Web n'a pas été vérifiée.</translation>
<translation id="5719499550583120431">Les cartes prépayées sont acceptées.</translation>
<translation id="5720705177508910913">Utilisateur actuel</translation>
diff --git a/chromium/components/strings/components_strings_gu.xtb b/chromium/components/strings/components_strings_gu.xtb
index 3030416bf29..28d54f5de91 100644
--- a/chromium/components/strings/components_strings_gu.xtb
+++ b/chromium/components/strings/components_strings_gu.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">વ્યક્તિગત કરેલ સામગ્રી મેળવો</translation>
<translation id="5675650730144413517">આ પૃષ્ઠ કામ કરી રહ્યું નથી</translation>
<translation id="5689199277474810259">JSON પર નિકાસ કરો</translation>
+<translation id="5689516760719285838">સ્થાન</translation>
<translation id="5710435578057952990">આ વેબસાઇટની ઓળખ ચકાસવામાં આવી નથી.</translation>
<translation id="5719499550583120431">પ્રીપેઇડ કાર્ડ સ્વીકારવામાં આવે છે.</translation>
<translation id="5720705177508910913">વર્તમાન વપરાશકર્તા</translation>
@@ -799,7 +800,7 @@
<translation id="724691107663265825">સાઇટ આગળ મૉલવેર ધરાવે છે</translation>
<translation id="724975217298816891">તમારા કાર્ડની વિગતોને અપડેટ કરવા <ph name="CREDIT_CARD" /> માટે સમાપ્તિ તારીખ અને CVC દાખલ કરો. એકવાર તમે પુષ્ટિ કરી લો, તે પછી આ સાઇટ સાથે તમારા કાર્ડની વિગતો શેર કરવામાં આવશે.</translation>
<translation id="7260504762447901703">ઍક્સેસ રદબાતલ કરો</translation>
-<translation id="7271803869921933038">સ્વીકૃત પ્રીપેઇડ કાર્ડ</translation>
+<translation id="7271803869921933038">સ્વીકૃત પ્રિપેઇડ કાર્ડ</translation>
<translation id="7275334191706090484">સંચાલિત બુકમાર્ક્સ</translation>
<translation id="7298195798382681320">ભલામણ કરેલ</translation>
<translation id="7309308571273880165">ક્રેશ રિપોર્ટ <ph name="CRASH_TIME" /> એ કૅપ્ચર કરવામાં આવી (વપરાશકર્તા દ્વારા અપલોડની વિનંતી કરવામાં આવી, હજી સુધી અપલોડ કરેલ નથી)</translation>
@@ -982,7 +983,7 @@
<translation id="8730621377337864115">થઈ ગયું</translation>
<translation id="8738058698779197622">એક સુરક્ષિત કનેક્શન સ્થાપિત કરવા માટે, તમારું ઘડિયાળ યોગ્ય રીતે સેટ હોવું જરૂરી છે. આનું કારણ એ કે વેબસાઇટ્સ તેઓને ઓળખવા માટે જે પ્રમાણપત્રોનો ઉપયોગ કરે છે તે ચોક્કસ સમય અવધિ માટે જ માન્ય હોય છે. તમારા ઉપકરણની ઘડિયાળ ખોટી હોવાને લીધે, Chromium આ પ્રમાણપત્રોને ચકાસી શકતું નથી.</translation>
<translation id="8740359287975076522"><ph name="HOST_NAME" /> નું &lt;abbr id="dnsDefinition"&gt;DNS સરનામું&lt;/abbr&gt; શોધી શકાયું નથી. સમસ્યાનું નિદાન કરી રહ્યાં છીએ.</translation>
-<translation id="874846938927089722">સ્વીકૃત ક્રેડિટ અને પ્રીપેઇડ કાર્ડ</translation>
+<translation id="874846938927089722">સ્વીકૃત ક્રેડિટ અને પ્રિપેઇડ કાર્ડ</translation>
<translation id="8759274551635299824">આ કાર્ડની સમયસીમા સમાપ્ત થઈ ગઈ છે</translation>
<translation id="8761567432415473239">Google Safe Browsing ને તાજેતરમાં <ph name="SITE" /> પર <ph name="BEGIN_LINK" />હાનિકારક પ્રોગ્રામ્સ મળ્યાં<ph name="END_LINK" />.</translation>
<translation id="8790007591277257123">&amp;કાઢી નાખવું ફરી કરો</translation>
@@ -1045,7 +1046,7 @@
<translation id="933712198907837967">ડાઇનર્સ ક્લબ</translation>
<translation id="935608979562296692">ફોર્મ સાફ કરો</translation>
<translation id="939736085109172342">નવું ફોલ્ડર</translation>
-<translation id="951104842009476243">સ્વીકૃત ડેબિટ અને પ્રીપેઇડ કાર્ડ</translation>
+<translation id="951104842009476243">સ્વીકૃત ડેબિટ અને પ્રિપેઇડ કાર્ડ</translation>
<translation id="969892804517981540">આધિકારિક બિલ્ડ</translation>
<translation id="975560348586398090">{COUNT,plural, =0{કોઈ નહીં}=1{1 આઇટમ}one{# આઇટમ}other{# આઇટમ}}</translation>
<translation id="981121421437150478">ઑફલાઇન</translation>
diff --git a/chromium/components/strings/components_strings_hi.xtb b/chromium/components/strings/components_strings_hi.xtb
index 270d3ac9122..91ea7d605bd 100644
--- a/chromium/components/strings/components_strings_hi.xtb
+++ b/chromium/components/strings/components_strings_hi.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">खास आपके लिए बनी सामग्री पाएं</translation>
<translation id="5675650730144413517">यह पेज काम नहीं कर रहा है</translation>
<translation id="5689199277474810259">JSON में निर्यात करें</translation>
+<translation id="5689516760719285838">स्थान</translation>
<translation id="5710435578057952990">इस वेबसाइट की पहचान सत्यापित नहीं की गई है.</translation>
<translation id="5719499550583120431">प्रीपेड कार्ड स्वीकार किए जाते हैं.</translation>
<translation id="5720705177508910913">वर्तमान उपयोगकर्ता</translation>
@@ -852,7 +853,7 @@
<translation id="7613889955535752492">समय-सीमा समाप्त: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
<translation id="7615602087246926389">आपके पास पहले से ऐसा डेटा है, जिसे आपके Google खाते के पासवर्ड के किसी भिन्‍न वर्शन का उपयोग करके एन्क्रिप्ट किया गया है. कृपया उसे नीचे लिखें.</translation>
<translation id="7637571805876720304">क्रोमियम से क्रेडिट कार्ड निकालें?</translation>
-<translation id="765676359832457558">उन्नत सेटिंग्स छिपाएं...</translation>
+<translation id="765676359832457558">उन्नत सेटिंग छिपाएं...</translation>
<translation id="7658239707568436148">अभी नहीं</translation>
<translation id="7662298039739062396">सेटिंग किसी एक्सटेंशन से नियंत्रित है</translation>
<translation id="7667346355482952095">वापस लौटा हुआ नीति टोकन खाली है या उसका मिलान वर्तमान टोकन से नहीं होता</translation>
@@ -956,7 +957,7 @@
<translation id="8412145213513410671">क्रैश (<ph name="CRASH_COUNT" />)</translation>
<translation id="8412392972487953978">आपको वही पासफ़्रेज़ दोबारा दर्ज करना होगा.</translation>
<translation id="8424582179843326029"><ph name="FIRST_LABEL" /> <ph name="SECOND_LABEL" /> <ph name="THIRD_LABEL" /></translation>
-<translation id="8428213095426709021">सेटिंग्स</translation>
+<translation id="8428213095426709021">सेटिंग</translation>
<translation id="8433057134996913067">इससे आप अधिकांश वेबसाइट से प्रस्थान कर जाएंगे.</translation>
<translation id="8437238597147034694">&amp;ले जाना वापस लाएं</translation>
<translation id="8466379296835108687">{COUNT,plural, =1{1 क्रेडिट कार्ड}one{# क्रेडिट कार्ड}other{# क्रेडिट कार्ड}}</translation>
diff --git a/chromium/components/strings/components_strings_hr.xtb b/chromium/components/strings/components_strings_hr.xtb
index e10b114d477..2b70385be31 100644
--- a/chromium/components/strings/components_strings_hr.xtb
+++ b/chromium/components/strings/components_strings_hr.xtb
@@ -630,6 +630,7 @@
<translation id="5669703222995421982">Predlaganje sadržaja</translation>
<translation id="5675650730144413517">Stranica ne funkcionira</translation>
<translation id="5689199277474810259">Izvezi u JSON</translation>
+<translation id="5689516760719285838">Lokacija</translation>
<translation id="5710435578057952990">Identitet ove web lokacije nije ovjeren.</translation>
<translation id="5719499550583120431">Prihvaćaju se pretplatne kartice.</translation>
<translation id="5720705177508910913">Trenutačni korisnik:</translation>
diff --git a/chromium/components/strings/components_strings_hu.xtb b/chromium/components/strings/components_strings_hu.xtb
index 5f8d40edc5a..b4c83bfd401 100644
--- a/chromium/components/strings/components_strings_hu.xtb
+++ b/chromium/components/strings/components_strings_hu.xtb
@@ -629,6 +629,7 @@
<translation id="5669703222995421982">Személyre szabott tartalmak fogadása</translation>
<translation id="5675650730144413517">Az oldal nem működik</translation>
<translation id="5689199277474810259">Exportálás JSON formátumba</translation>
+<translation id="5689516760719285838">Tartózkodási hely</translation>
<translation id="5710435578057952990">A webhely valódiságát nem ellenőriztük.</translation>
<translation id="5719499550583120431">Elfogadott feltöltőkártyák.</translation>
<translation id="5720705177508910913">Jelenlegi felhasználó</translation>
diff --git a/chromium/components/strings/components_strings_id.xtb b/chromium/components/strings/components_strings_id.xtb
index fa51431586e..5a726079b40 100644
--- a/chromium/components/strings/components_strings_id.xtb
+++ b/chromium/components/strings/components_strings_id.xtb
@@ -77,7 +77,7 @@
<translation id="1549470594296187301">JavaScript harus diaktifkan untuk menggunakan fitur ini.</translation>
<translation id="1559528461873125649">Tidak ada file atau direktori tersebut</translation>
<translation id="1583429793053364125">Terjadi masalah sewaktu menampilkan halaman web ini.</translation>
-<translation id="1590457302292452960">Membuat sandi kuat...</translation>
+<translation id="1590457302292452960">Buat sandi kuat...</translation>
<translation id="1592005682883173041">Akses Data Lokal</translation>
<translation id="1594030484168838125">Pilih</translation>
<translation id="1620510694547887537">Kamera</translation>
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Mendapatkan konten hasil personalisasi</translation>
<translation id="5675650730144413517">Halaman ini tidak berfungsi</translation>
<translation id="5689199277474810259">Ekspor ke JSON</translation>
+<translation id="5689516760719285838">Lokasi</translation>
<translation id="5710435578057952990">Identitas situs Web ini belum diverifikasi.</translation>
<translation id="5719499550583120431">Kartu prabayar diterima.</translation>
<translation id="5720705177508910913">Pengguna saat ini</translation>
@@ -886,7 +887,7 @@
<translation id="7812922009395017822">Mir</translation>
<translation id="7813600968533626083">Hapus sebagai saran dari Chrome?</translation>
<translation id="7815407501681723534">Ditemukan <ph name="NUMBER_OF_RESULTS" /> <ph name="SEARCH_RESULTS" /> hasil untuk '<ph name="SEARCH_STRING" />'</translation>
-<translation id="7818867226424560206">Pengelolaan kebijakan</translation>
+<translation id="7818867226424560206">Manajemen kebijakan</translation>
<translation id="782886543891417279">Wi-Fi yang digunakan (<ph name="WIFI_NAME" />) mungkin mewajibkan Anda mengunjungi halaman masuknya.</translation>
<translation id="785549533363645510">Namun, Anda masih dapat terlihat. Masuk ke mode penyamaran tidak menyembunyikan penjelajahan Anda dari atasan, penyedia layanan internet, atau situs web yang Anda kunjungi.</translation>
<translation id="7855695075675558090"><ph name="TOTAL_LABEL" /> <ph name="CURRENCY_CODE" /> <ph name="FORMATTED_TOTAL_AMOUNT" /></translation>
@@ -971,7 +972,7 @@
<translation id="858637041960032120">+ nomor telepon</translation>
<translation id="859285277496340001">Sertifikat tidak menetapkan mekanisme untuk memeriksa apakah sertifikat telah ditarik.</translation>
<translation id="8620436878122366504">Orang tuamu belum menyetujuinya</translation>
-<translation id="8625384913736129811">Simpan Kartu ke Perangkat Ini</translation>
+<translation id="8625384913736129811">Simpan Kartu Ini ke Perangkat Ini</translation>
<translation id="8647750283161643317">Setel ulang semua ke default</translation>
<translation id="8660471606262461360">Dari Google Payments</translation>
<translation id="8688672835843460752">Tersedia</translation>
diff --git a/chromium/components/strings/components_strings_it.xtb b/chromium/components/strings/components_strings_it.xtb
index a9cf243d76a..3c66b69ad99 100644
--- a/chromium/components/strings/components_strings_it.xtb
+++ b/chromium/components/strings/components_strings_it.xtb
@@ -77,7 +77,7 @@
<translation id="1549470594296187301">JavaScript deve essere attivato per utilizzare questa funzione.</translation>
<translation id="1559528461873125649">Nessun file o directory corrispondente</translation>
<translation id="1583429793053364125">Si è verificato un problema durante la visualizzazione della pagina web.</translation>
-<translation id="1590457302292452960">Genera una password efficace...</translation>
+<translation id="1590457302292452960">Genera una password efficace…</translation>
<translation id="1592005682883173041">Accesso ai dati locali</translation>
<translation id="1594030484168838125">Scegli</translation>
<translation id="1620510694547887537">Videocamera</translation>
@@ -628,6 +628,7 @@
<translation id="5669703222995421982">Ricevi contenuti suggeriti appositamente per te</translation>
<translation id="5675650730144413517">La pagina non funziona</translation>
<translation id="5689199277474810259">Esporta in JSON</translation>
+<translation id="5689516760719285838">Posizione</translation>
<translation id="5710435578057952990">L'identità di questo sito web non è stata verificata.</translation>
<translation id="5719499550583120431">Le carte prepagate sono accettate.</translation>
<translation id="5720705177508910913">Utente corrente</translation>
@@ -967,7 +968,7 @@
<translation id="858637041960032120">Aggiungi telefono</translation>
<translation id="859285277496340001">Il certificato non specifica un meccanismo per il controllo della sua revoca.</translation>
<translation id="8620436878122366504">I tuoi genitori non hanno ancora approvato la richiesta</translation>
-<translation id="8625384913736129811">Salva la carta per questo dispositivo</translation>
+<translation id="8625384913736129811">Salva la carta su questo dispositivo</translation>
<translation id="8647750283161643317">Ripristina i valori predefiniti per tutto</translation>
<translation id="8660471606262461360">Da Google Payments</translation>
<translation id="8688672835843460752">Disponibile</translation>
diff --git a/chromium/components/strings/components_strings_iw.xtb b/chromium/components/strings/components_strings_iw.xtb
index ab7b8faf437..7cb44c0c287 100644
--- a/chromium/components/strings/components_strings_iw.xtb
+++ b/chromium/components/strings/components_strings_iw.xtb
@@ -636,6 +636,7 @@ Del</translation>
<translation id="5669703222995421982">התאמה אישית של תוכן</translation>
<translation id="5675650730144413517">הדף הזה לא עובד</translation>
<translation id="5689199277474810259">‏ייצוא אל JSON</translation>
+<translation id="5689516760719285838">מיקום</translation>
<translation id="5710435578057952990">הזהות של אתר זה לא אומתה.</translation>
<translation id="5719499550583120431">אפשר לשלם באמצעות כרטיסים משולמים מראש.</translation>
<translation id="5720705177508910913">משתמש נוכחי:</translation>
diff --git a/chromium/components/strings/components_strings_ja.xtb b/chromium/components/strings/components_strings_ja.xtb
index 5c9e4b5a089..fe61569bc5b 100644
--- a/chromium/components/strings/components_strings_ja.xtb
+++ b/chromium/components/strings/components_strings_ja.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">自分向けのコンテンツを表示</translation>
<translation id="5675650730144413517">このページは動作していません</translation>
<translation id="5689199277474810259">JSON にエクスポート</translation>
+<translation id="5689516760719285838">現在地</translation>
<translation id="5710435578057952990">このウェブサイトの ID は確認されていません。</translation>
<translation id="5719499550583120431">プリペイド カードをご利用いただけます。</translation>
<translation id="5720705177508910913">現在のユーザー</translation>
diff --git a/chromium/components/strings/components_strings_kn.xtb b/chromium/components/strings/components_strings_kn.xtb
index 2eb0a34c4e9..2f3e2a162c4 100644
--- a/chromium/components/strings/components_strings_kn.xtb
+++ b/chromium/components/strings/components_strings_kn.xtb
@@ -120,14 +120,14 @@
<translation id="1842969606798536927">ಪಾವತಿಸಿ</translation>
<translation id="1871208020102129563">.pac ಸ್ಕ್ರಿಪ್ಟ್ URL ಅಲ್ಲದೆ, ನಿಗಧಿತ ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್‌ಗಳನ್ನು ಬಳಸಲು ಪ್ರಾಕ್ಸಿಯನ್ನು ಹೊಂದಿಸಲಾಗಿದೆ.</translation>
<translation id="1871284979644508959">ಅಗತ್ಯ ಕ್ಷೇತ್ರ</translation>
-<translation id="1874765382782611674">ಸಮ್ಮತಿಸಲಾದ ಡೆಬಿಟ್ ಕಾರ್ಡ್‌ಗಳು</translation>
+<translation id="1874765382782611674">ಸ್ವೀಕೃತ ಡೆಬಿಟ್ ಕಾರ್ಡ್‌ಗಳು</translation>
<translation id="187918866476621466">ಆರಂಭಿಕ ಪುಟಗಳನ್ನು ತೆರೆಯಿರಿ</translation>
<translation id="1883255238294161206">ಪಟ್ಟಿಯನ್ನು ಸಂಕುಚಿಸಿ</translation>
<translation id="1898423065542865115">ಫಿಲ್ಟರಿಂಗ್</translation>
<translation id="1916770123977586577">ನಿಮ್ಮ ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲಾದ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಈ ಸೈಟ್‌ಗೆ ಅನ್ವಯಿಸಲು, ಈ ಪುಟವನ್ನು ಪುನಃ ಲೋಡ್‌ ಮಾಡಿ</translation>
<translation id="1919345977826869612">ಜಾಹೀರಾತುಗಳು</translation>
<translation id="192020519938775529">{COUNT,plural, =0{ಯಾವುದೂ ಇಲ್ಲ}=1{1 ಸೈಟ್}one{# ಸೈಟ್‌ಗಳು}other{# ಸೈಟ್‌ಗಳು}}</translation>
-<translation id="1927235823738766038">ಸಮ್ಮತಿಸಲಾದ ಕ್ರೆಡಿಟ್ ಮತ್ತು ಡೆಬಿಟ್ ಕಾರ್ಡ್‌ಗಳು</translation>
+<translation id="1927235823738766038">ಸ್ವೀಕೃತ ಕ್ರೆಡಿಟ್ ಮತ್ತು ಡೆಬಿಟ್ ಕಾರ್ಡ್‌ಗಳು</translation>
<translation id="194030505837763158"><ph name="LINK" /> ಗೆ ಹೋಗಿ</translation>
<translation id="1948773908305951926">ಸಮ್ಮತಿಸಲಾದ ಪ್ರೀಪೇಯ್ಡ್ ಕಾರ್ಡ್‌ಗಳು</translation>
<translation id="1962204205936693436"><ph name="DOMAIN" /> ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು</translation>
@@ -299,7 +299,7 @@
<ph name="PLATFORM_TEXT" /></translation>
<translation id="320323717674993345">ಪಾವತಿಯನ್ನು ರದ್ದುಮಾಡಿ</translation>
<translation id="3207960819495026254">ಬುಕ್‌ಮಾರ್ಕ್‌ ಮಾಡಲಾಗಿದೆ</translation>
-<translation id="3209375525920864198">ಮಾನ್ಯ ಸೆಶನ್ ಹೆಸರನ್ನು ನಮೂದಿಸಿ.</translation>
+<translation id="3209375525920864198">ಮಾನ್ಯವಾದ ಸೆಶನ್ ಹೆಸರನ್ನು ನಮೂದಿಸಿ.</translation>
<translation id="3211223744486044430">ಮುಂದಿನ ಬಾರಿ ವೇಗವಾಗಿ ಪಾವತಿಸಲು, ಈ ಕಾರ್ಡ್‌ ಅನ್ನು ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಮತ್ತು ಈ ಸಾಧನದಲ್ಲಿ ಉಳಿಸಿ.</translation>
<translation id="3225919329040284222">ಆಂತರಿಕ ಮಾನದಂಡಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗದ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಸರ್ವರ್ ಹಾಜರಿಪಡಿಸಿದೆ. ನಿಮ್ಮ ಸುರಕ್ಷತೆಯ ಸಲುವಾಗಿ ಕೆಲವು ಹೆಚ್ಚು ಸುರಕ್ಷಿತ ವೆಬ್ ಸೈಟ್‌ಗಳಲ್ಲಿ ಈ ಮಾನದಂಡಗಳನ್ನು ಸೇರ್ಪಡೆಗೊಳಿಸಲಾಗಿದೆ.</translation>
<translation id="3226128629678568754">ಪುಟವನ್ನು ಲೋಡ್ ಮಾಡುವುದಕ್ಕೆ ಅಗತ್ಯವಿರುವ ಡೇಟಾವನ್ನು ಮರುಸಲ್ಲಿಸಲು ಮರುಲೋಡ್ ಬಟನ್ ಒತ್ತಿರಿ.</translation>
@@ -625,6 +625,7 @@
<translation id="5669703222995421982">ವೈಯಕ್ತೀಕರಿಸಲಾದ ವಿಷಯವನ್ನು ಪಡೆಯಿರಿ</translation>
<translation id="5675650730144413517">ಈ ಪುಟ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ</translation>
<translation id="5689199277474810259">JSON ಗೆ ರಫ್ತು ಮಾಡಿ</translation>
+<translation id="5689516760719285838">ಸ್ಥಳ</translation>
<translation id="5710435578057952990">ಈ ವೆಬ್‌ಸೈಟ್‌ನ ಗುರುತಿಸುವಿಕೆಯನ್ನು ಇನ್ನೂ ಪರಿಶೀಲಿಸಲಾಗಿಲ್ಲ.</translation>
<translation id="5719499550583120431">ಪ್ರೀಪೇಯ್ಡ್ ಕಾರ್ಡ್‌ಗಳನ್ನು ಸಮ್ಮತಿಸಲಾಗಿದೆ.</translation>
<translation id="5720705177508910913">ಪ್ರಸ್ತುತ ಬಳಕೆದಾರ</translation>
@@ -792,7 +793,7 @@
<translation id="724691107663265825">ಮುಂದಿರುವ ಸೈಟ್‌ನಲ್ಲಿ ಮಾಲ್‌ವೇರ್ ಇದೆ</translation>
<translation id="724975217298816891">ನಿಮ್ಮ ಕಾರ್ಡ್‌ ವಿವರಗಳನ್ನು ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲು <ph name="CREDIT_CARD" /> ಗೆ ಮುಕ್ತಾಯ ದಿನಾಂಕ ಮತ್ತು CVC ಅನ್ನು ನಮೂದಿಸಿ. ನೀವು ಒಮ್ಮೆ ಖಚಿತಪಡಿಸಿದರೆ, ನಿಮ್ಮ ಕಾರ್ಡ್ ವಿವರಗಳನ್ನು ಈ ಸೈಟ್ ಜೊತೆಗೆ ಹಂಚಿಕೊಳ್ಳಲಾಗುತ್ತದೆ.</translation>
<translation id="7260504762447901703">ಪ್ರವೇಶವನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳಿ</translation>
-<translation id="7271803869921933038">ಸಮ್ಮತಿಸಲಾದ ಪ್ರೀಪೇಯ್ಡ್ ಕಾರ್ಡ್‌ಗಳು</translation>
+<translation id="7271803869921933038">ಸ್ವೀಕೃತ ಪ್ರೀಪೇಯ್ಡ್ ಕಾರ್ಡ್‌ಗಳು</translation>
<translation id="7275334191706090484">ನಿರ್ವಹಿಸಿದ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು</translation>
<translation id="7298195798382681320">ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ</translation>
<translation id="7309308571273880165">ಕ್ರ್ಯಾಶ್ ವರದಿಯನ್ನು <ph name="CRASH_TIME" /> ರಲ್ಲಿ ಸೆರೆಹಿಡಿಯಲಾಗಿದೆ (ಬಳಕೆದಾರರ ಮೂಲಕ ವಿನಂತಿಸಲಾದ ಅಪ್‌ಲೋಡ್ ಅನ್ನು, ಇನ್ನೂ ಅಪ್‌ಲೋಡ್ ಮಾಡಿಲಾಗಿಲ್ಲ)</translation>
@@ -965,7 +966,7 @@
</translation>
<translation id="859285277496340001">ಇದನ್ನು ರದ್ದುಮಾಡಲಾಗಿದೆಯೆ ಎಂದು ಪರಿಶೀಲಿಸಲು ಪ್ರಮಾಣಪತ್ರವು ಯಾಂತ್ರೀಕರಣವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿಲ್ಲ.</translation>
<translation id="8620436878122366504">ನಿಮ್ಮ ಪೋಷಕರು ಇನ್ನೂ ಇದನ್ನು ಅಂಗೀಕರಿಸಿಲ್ಲ</translation>
-<translation id="8625384913736129811">ಈ ಸಾಧನಕ್ಕೆ ಈ ಕಾರ್ಡ್ ಉಳಿಸಿ</translation>
+<translation id="8625384913736129811">ಈ ಕಾರ್ಡ್ ಅನ್ನು ಈ ಸಾಧನಕ್ಕೆ ಉಳಿಸಿ</translation>
<translation id="8647750283161643317">ಎಲ್ಲವನ್ನೂ ಡೀಫಾಲ್ಟ್‌ಗೆ ಮರುಹೊಂದಿಸಿ</translation>
<translation id="8660471606262461360">Google Payments ನಿಂದ</translation>
<translation id="8688672835843460752">ಲಭ್ಯವಿದೆ</translation>
@@ -976,7 +977,7 @@
<translation id="8730621377337864115">ಮುಗಿದಿದೆ</translation>
<translation id="8738058698779197622">ಸುರಕ್ಷಿತ ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಲು, ನಿಮ್ಮ ಗಡಿಯಾರವನ್ನು ಸರಿಯಾಗಿ ಹೊಂದಿಸುವ ಅಗತ್ಯವಿದೆ. ವೆಬ್‌ಸೈಟ್‌ಗಳು ತಮ್ಮನ್ನು ಗುರುತಿಸಲು ಬಳಸುವ ಪ್ರಮಾಣಪತ್ರಗಳು ಸಮಯದ ನಿರ್ದಿಷ್ಟ ಅವಧಿಗಳಲ್ಲಿ ಮಾತ್ರ ಮಾನ್ಯವಾಗಿರುವ ಕಾರಣ ಹೀಗಾಗುತ್ತದೆ. ನಿಮ್ಮ ಸಾಧನದ ಗಡಿಯಾರವು ತಪ್ಪಾಗಿರುವ ಕಾರಣ, Chromium ಗೆ ಈ ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.</translation>
<translation id="8740359287975076522"><ph name="HOST_NAME" /> ನ &lt;abbr id="dnsDefinition"&gt;DNS ವಿಳಾಸ&lt;/abbr&gt; ಕಂಡುಬರಲಿಲ್ಲ. ಸಮಸ್ಯೆಯನ್ನು ಪತ್ತೆಹಚ್ಚಲಾಗುತ್ತಿದೆ.</translation>
-<translation id="874846938927089722">ಸಮ್ಮತಿಸಲಾದ ಕ್ರೆಡಿಟ್ ಮತ್ತು ಪ್ರೀಪೇಯ್ಡ್ ಕಾರ್ಡ್‌ಗಳು</translation>
+<translation id="874846938927089722">ಸ್ವೀಕೃತ ಕ್ರೆಡಿಟ್ ಮತ್ತು ಪ್ರೀಪೇಯ್ಡ್ ಕಾರ್ಡ್‌ಗಳು</translation>
<translation id="8759274551635299824">ಈ ಕಾರ್ಡ್‌ನ ಅವಧಿ ಮುಕ್ತಾಯವಾಗಿದೆ</translation>
<translation id="8761567432415473239">Google ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್‌ ಇತ್ತೀಚಿಗೆ <ph name="SITE" /> ನಲ್ಲಿ <ph name="BEGIN_LINK" />ಹಾನಿಕಾರಕ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಕಂಡುಹಿಡಿದಿದೆ<ph name="END_LINK" />.</translation>
<translation id="8790007591277257123">&amp;ಅಳಿಸುವುದನ್ನು ಮತ್ತೆಮಾಡು</translation>
@@ -1039,7 +1040,7 @@
<translation id="933712198907837967">Diners Club</translation>
<translation id="935608979562296692">ಫಾರ್ಮ್ ತೆರವುಗೊಳಿಸಿ</translation>
<translation id="939736085109172342">ಹೊಸ ಫೋಲ್ಡರ್</translation>
-<translation id="951104842009476243">ಸಮ್ಮತಿಸಲಾದ ಡೆಬಿಟ್ ಮತ್ತು ಪ್ರೀಪೇಯ್ಡ್ ಕಾರ್ಡ್‌ಗಳು</translation>
+<translation id="951104842009476243">ಸ್ವೀಕೃತ ಡೆಬಿಟ್ ಮತ್ತು ಪ್ರೀಪೇಯ್ಡ್ ಕಾರ್ಡ್‌ಗಳು</translation>
<translation id="969892804517981540">ಅಧಿಕೃತವಾಗಿ ನಿರ್ಮಿಸಿ</translation>
<translation id="975560348586398090">{COUNT,plural, =0{ಯಾವುದೂ ಇಲ್ಲ}=1{1 ಐಟಂ}one{# ಐಟಂಗಳು}other{# ಐಟಂಗಳು}}</translation>
<translation id="981121421437150478">ಆಫ್‌ಲೈನ್</translation>
diff --git a/chromium/components/strings/components_strings_ko.xtb b/chromium/components/strings/components_strings_ko.xtb
index bbe1ca60396..e78169a9ade 100644
--- a/chromium/components/strings/components_strings_ko.xtb
+++ b/chromium/components/strings/components_strings_ko.xtb
@@ -224,7 +224,7 @@
<translation id="2670429602441959756">이 페이지에는 아직 VR에서 지원되지 않는 기능이 있습니다. 종료합니다...</translation>
<translation id="2674170444375937751">방문 기록에서 이 페이지를 삭제하시겠습니까?</translation>
<translation id="2677748264148917807">나가기</translation>
-<translation id="2699302886720511147">사용 가능한 카드</translation>
+<translation id="2699302886720511147">사용할 수 있는 카드</translation>
<translation id="2702801445560668637">읽기 목록</translation>
<translation id="2704283930420550640">값이 형식과 일치하지 않습니다.</translation>
<translation id="2704951214193499422">현재 Chromium에서 카드를 확인할 수 없습니다. 나중에 다시 시도해 주세요.</translation>
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">내게 맞는 콘텐츠 추천 받기</translation>
<translation id="5675650730144413517">페이지가 작동하지 않습니다.</translation>
<translation id="5689199277474810259">JSON 형식으로 내보내기</translation>
+<translation id="5689516760719285838">위치</translation>
<translation id="5710435578057952990">이 웹사이트의 주소가 확인되지 않았습니다.</translation>
<translation id="5719499550583120431">선불카드를 사용할 수 있습니다.</translation>
<translation id="5720705177508910913">현재 사용자</translation>
@@ -971,7 +972,7 @@
<translation id="858637041960032120">번호 추가</translation>
<translation id="859285277496340001">인증서는 취소 여부를 확인하는 매커니즘을 지정하지 않습니다.</translation>
<translation id="8620436878122366504">부모님이 아직 승인하지 않았습니다.</translation>
-<translation id="8625384913736129811">기기에 카드 저장</translation>
+<translation id="8625384913736129811">이 기기에 카드 저장</translation>
<translation id="8647750283161643317">기본값으로 재설정</translation>
<translation id="8660471606262461360">출처: Google Payments</translation>
<translation id="8688672835843460752">사용 가능</translation>
diff --git a/chromium/components/strings/components_strings_lt.xtb b/chromium/components/strings/components_strings_lt.xtb
index 1bffaf657b3..66d6c1aa0e7 100644
--- a/chromium/components/strings/components_strings_lt.xtb
+++ b/chromium/components/strings/components_strings_lt.xtb
@@ -632,6 +632,7 @@
<translation id="5669703222995421982">Suasmeninto turinio gavimas</translation>
<translation id="5675650730144413517">Šis puslapis neveikia</translation>
<translation id="5689199277474810259">Eksportuoti kaip JSON</translation>
+<translation id="5689516760719285838">Vieta</translation>
<translation id="5710435578057952990">Šio tinklalapio tapatybė nenustatyta.</translation>
<translation id="5719499550583120431">Išankstinio mokėjimo kortelės tinkamos.</translation>
<translation id="5720705177508910913">Dabartinis naudotojas</translation>
diff --git a/chromium/components/strings/components_strings_lv.xtb b/chromium/components/strings/components_strings_lv.xtb
index e40fe3a483f..08d708f9bd6 100644
--- a/chromium/components/strings/components_strings_lv.xtb
+++ b/chromium/components/strings/components_strings_lv.xtb
@@ -224,7 +224,7 @@
<translation id="2670429602441959756">Šajā lapā ir funkcijas, kas vēl netiek atbalstītas virtuālajā realitātē. Notiek aizvēršana...</translation>
<translation id="2674170444375937751">Vai tiešām vēlaties dzēst šīs lapas no savas vēstures?</translation>
<translation id="2677748264148917807">Iziet</translation>
-<translation id="2699302886720511147">Pieņemtās kartes</translation>
+<translation id="2699302886720511147">Atbalstītās kartes</translation>
<translation id="2702801445560668637">Atvērt sarakstu</translation>
<translation id="2704283930420550640">Vērtība neatbilst formātam.</translation>
<translation id="2704951214193499422">Pārlūkā Chromium pašlaik nevar apstiprināt jūsu karti. Lūdzu, vēlāk mēģiniet vēlreiz.</translation>
@@ -397,7 +397,7 @@
<translation id="3759461132968374835">Pēdējā laikā neesat ziņojis par avārijām. Šeit nebūs redzamas avārijas, kas radās laikā, kad avāriju pārskatu izveide bija atspējota.</translation>
<translation id="3765032636089507299">Drošās pārlūkošanas lapa pašlaik nav pieejama</translation>
<translation id="3778403066972421603">Vai vēlaties saglabāt šo karti savā Google kontā un šajā ierīcē?</translation>
-<translation id="3783418713923659662">MasterCard</translation>
+<translation id="3783418713923659662">Mastercard</translation>
<translation id="3787705759683870569">Derīguma termiņš: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
<translation id="3808375843007691220">Uzmanību — turpmākās funkcijas ir eksperimentālas!</translation>
<translation id="382518646247711829">Ja izmantojat starpniekserveri...</translation>
@@ -461,7 +461,7 @@
<translation id="4325863107915753736">Rakstu neizdevās atrast.</translation>
<translation id="4326324639298822553">Pārbaudiet derīguma termiņa datumu un mēģiniet vēlreiz.</translation>
<translation id="4331708818696583467">Nav droši</translation>
-<translation id="4346197816712207223">Atbalstītās kredītkartes</translation>
+<translation id="4346197816712207223">Pieņemtās kredītkartes</translation>
<translation id="4356973930735388585">Šajā vietnē esošie uzbrucēji jūsu datorā var mēģināt instalēt bīstamas programmas, kuras var nozagt vai dzēst jūsu informāciju (piemēram, fotoattēlus, paroles, ziņojumus un informāciju par kredītkartēm).</translation>
<translation id="4372948949327679948">Tika gaidīta vērtība <ph name="VALUE_TYPE" />.</translation>
<translation id="4377125064752653719">Jūs mēģinājāt sasniegt <ph name="DOMAIN" />, bet izdevējs atsauca servera uzrādīto sertifikātu. Tas nozīmē, ka servera uzrādītie drošības akreditācijas dati itin nemaz nav uzticami. Iespējams, jūs sazināties ar uzbrucēju.</translation>
@@ -630,6 +630,7 @@
<translation id="5669703222995421982">Saņemiet personalizētu saturu</translation>
<translation id="5675650730144413517">Šī lapa nedarbojas</translation>
<translation id="5689199277474810259">Eksportēt JSON formātā</translation>
+<translation id="5689516760719285838">Atrašanās vieta</translation>
<translation id="5710435578057952990">Tīmekļa vietnes identitāte nav apstiprināta.</translation>
<translation id="5719499550583120431">Tiek pieņemtas priekšapmaksas kartes.</translation>
<translation id="5720705177508910913">Pašreizējais lietotājs</translation>
diff --git a/chromium/components/strings/components_strings_ml.xtb b/chromium/components/strings/components_strings_ml.xtb
index 98573366b9b..41740278129 100644
--- a/chromium/components/strings/components_strings_ml.xtb
+++ b/chromium/components/strings/components_strings_ml.xtb
@@ -120,14 +120,14 @@
<translation id="1842969606798536927">പണമടയ്‌ക്കുക</translation>
<translation id="1871208020102129563">സ്ഥിരമായ പ്രോക്‌സി സെർവറുകൾ ഉപയോഗിക്കുന്നതിനായി പ്രോക്‌സി സജ്ജീകരിച്ചിരിക്കുന്നു, ഒരു .pac സ്‌ക്രിപ്റ്റ് URL ഉപയോഗിക്കുന്നതിനല്ല.</translation>
<translation id="1871284979644508959">നിർബന്ധമായും പൂരിപ്പിക്കണം</translation>
-<translation id="1874765382782611674">ഡെബിറ്റ് കാർഡുകൾ സ്വീകരിക്കുന്നു</translation>
+<translation id="1874765382782611674">സ്വീകരിക്കുന്ന ഡെബിറ്റ് കാർഡുകൾ</translation>
<translation id="187918866476621466">ആരംഭ പേജുകൾ തുറക്കുക</translation>
<translation id="1883255238294161206">ലിസ്റ്റ് ചുരുക്കുക</translation>
<translation id="1898423065542865115">ഫിൽട്ടർ ചെയ്യുന്നു</translation>
<translation id="1916770123977586577">ഈ സൈറ്റിലേക്ക് നിങ്ങളുടെ അപ്‌ഡേറ്റുചെയ്ത ക്രമീകരണം ഉപയോഗിക്കുന്നതിന്, ഈ പേജ് റീലോഡുചെയ്യുക</translation>
<translation id="1919345977826869612">പരസ്യങ്ങള്‍</translation>
<translation id="192020519938775529">{COUNT,plural, =0{ഒന്നുമില്ല}=1{ഒരു സൈറ്റ്}other{# സൈറ്റുകൾ}}</translation>
-<translation id="1927235823738766038">ക്രെഡിറ്റ് കാർഡുകളും ഡെബിറ്റ് കാർഡുകളും സ്വീകരിക്കുന്നു</translation>
+<translation id="1927235823738766038">സ്വീകരിക്കുന്ന ക്രെഡിറ്റ് കാർഡുകളും ഡെബിറ്റ് കാർഡുകളും</translation>
<translation id="194030505837763158"><ph name="LINK" />-ലേക്ക് പോകുക</translation>
<translation id="1948773908305951926">പ്രീപെയ്ഡ് കാർഡുകൾ സ്വീകരിക്കുന്നു</translation>
<translation id="1962204205936693436"><ph name="DOMAIN" /> ബുക്ക്‌മാർക്കുകൾ</translation>
@@ -300,7 +300,7 @@
<ph name="PLATFORM_TEXT" /></translation>
<translation id="320323717674993345">പേയ്‌മെന്റ് റദ്ദാക്കുക</translation>
<translation id="3207960819495026254">ബുക്ക്‌മാർക്കുചെയ്‌തു</translation>
-<translation id="3209375525920864198">സാധുവായൊരു സെഷൻ പേര് നൽകുക.</translation>
+<translation id="3209375525920864198">സാധുതയുള്ളൊരു സെഷൻ പേര് നൽകുക.</translation>
<translation id="3211223744486044430">അടുത്ത പ്രാവശ്യം വേഗത്തിൽ പണമടയ്ക്കാൻ, നിങ്ങളുടെ Google അക്കൗണ്ടിലും ഈ ഉപകരണത്തിലും കാർഡ് സംരക്ഷിക്കുക.</translation>
<translation id="3225919329040284222">ബിൽട്ട്-ഇൻ പ്രതീക്ഷകള്‍ക്ക് പൊരുത്തപ്പെടാത്ത സര്‍ട്ടിഫിക്കറ്റാണ് സെര്‍വര്‍ അവതരിപ്പിച്ചത്. നിങ്ങളെ സംരക്ഷിക്കുന്നതിലേക്കായുള്ള നിശ്ചിത, ഉന്നത-സുരക്ഷാ വെബ്‌സൈറ്റുകൾക്കായാണ് ഈ പ്രതീക്ഷകൾ ഉൾപ്പെടുത്തിയിരിക്കുന്നത്.</translation>
<translation id="3226128629678568754">പേജ് ലോഡുചെയ്യുന്നതിനാവശ്യമായ ഡാറ്റ വീണ്ടും സമർപ്പിക്കാൻ വീണ്ടും ലോഡുചെയ്യുക ബട്ടൺ അമർത്തുക.</translation>
@@ -461,7 +461,7 @@
<translation id="4325863107915753736">ലേഖനം കണ്ടെത്തുന്നത് പരാജയപ്പെട്ടു</translation>
<translation id="4326324639298822553">കാലാവധി തീരുന്ന തീയതി പരിശോധിച്ച് വീണ്ടും ശ്രമിച്ചുനോക്കൂ</translation>
<translation id="4331708818696583467">സുരക്ഷിതമല്ല</translation>
-<translation id="4346197816712207223">ക്രെഡിറ്റ് കാർഡുകൾ സ്വീകരിക്കുന്നു</translation>
+<translation id="4346197816712207223">സ്വീകരിക്കുന്ന ക്രെഡിറ്റ് കാർഡുകൾ</translation>
<translation id="4356973930735388585">ഈ സൈറ്റിലെ ആക്രമണകാരികൾ നിങ്ങളുടെ വിവരങ്ങൾ മോഷ്‌ടിക്കാനോ ഇല്ലാതാക്കാനോ ഇടയുള്ള (ഉദാഹരണത്തിന്, ഫോട്ടോകൾ, പാസ്‌വേഡുകൾ, സന്ദേശങ്ങൾ, ക്രെഡിറ്റ് കാർഡുകൾ എന്നിവ) അപകടകരമായ പ്രോഗ്രാമുകൾ കമ്പ്യൂട്ടറിൽ ഇൻസ്‌റ്റാൾ ചെയ്യാൻ ശ്രമിച്ചേക്കാം.</translation>
<translation id="4372948949327679948">പ്രതീക്ഷിച്ച <ph name="VALUE_TYPE" /> മൂല്യം.</translation>
<translation id="4377125064752653719">നിങ്ങള്‍‌ <ph name="DOMAIN" /> എന്നതില്‍‌ എത്താന്‍‌ ശ്രമിച്ചു, പക്ഷേ സെര്‍‌വര്‍‌ നൽകിയ സര്‍‌ട്ടിഫിക്കറ്റ് അത് നല്‍‌കിയ ആള്‍‌ അസാധുവാക്കി. സെര്‍‌വര്‍‌ നല്‍‌കിയ സുരക്ഷാ ക്രെഡന്‍‌ഷ്യലുകള്‍‌ തികച്ചും വിശ്വാ‍സയോഗ്യമല്ല എന്നാണ് ഇതിനര്‍‌ത്ഥം. നിങ്ങള്‍‌ ഒരു ആക്രമണകാരിയുമായിട്ടാകാം ആശയവിനിമയം നടത്തുന്നത്.</translation>
@@ -630,6 +630,7 @@
<translation id="5669703222995421982">വ്യക്തിപരമാക്കിയ ഉള്ളടക്കം സ്വന്തമാക്കുക</translation>
<translation id="5675650730144413517">ഈ പേജ് പ്രവർത്തിക്കുന്നില്ല</translation>
<translation id="5689199277474810259">JSON-ലേക്ക് ‌എക്‌സ്‌പോർട്ട് ചെയ്യുക</translation>
+<translation id="5689516760719285838">ലൊക്കേഷൻ</translation>
<translation id="5710435578057952990">ഈ വെബ്സൈറ്റിന്റെ വ്യക്തിത്വം പരിശോധിച്ചിട്ടില്ല.</translation>
<translation id="5719499550583120431">പ്രീപെയ്ഡ് കാർഡുകൾ സ്വീകരിക്കുന്നു.</translation>
<translation id="5720705177508910913">നിലവിലെ ഉപയോക്താവ്</translation>
@@ -748,7 +749,7 @@
<translation id="6753269504797312559">നയ മൂല്യം</translation>
<translation id="6757797048963528358">നിങ്ങളുടെ ഉപകരണം സുഷുപ്‌തിയിലായി.</translation>
<translation id="6778737459546443941">നിങ്ങളുടെ രക്ഷിതാവ് ഇതുവരെ അംഗീകാരം നൽകിയിട്ടില്ല</translation>
-<translation id="681021252041861472">ആവശ്യമുള്ള ഫീൽഡ്</translation>
+<translation id="681021252041861472">ഇത് പൂരിപ്പിക്കേണ്ടതുണ്ട്</translation>
<translation id="6810899417690483278">ഇഷ്‌ടാനുസൃതമാക്കൽ ഐഡി</translation>
<translation id="6820686453637990663">CVC</translation>
<translation id="6824266427216888781">പ്രദേശങ്ങളുടെ വിവരങ്ങൾ ലോഡുചെയ്യാനായില്ല</translation>
@@ -798,7 +799,7 @@
<translation id="724691107663265825">സൈറ്റിൽ മാൽവെയർ അടങ്ങിയിരിക്കുന്നു</translation>
<translation id="724975217298816891">നിങ്ങളുടെ കാർഡ് വിശദാംശങ്ങൾ അപ്‌ഡേറ്റുചെയ്യാൻ <ph name="CREDIT_CARD" />-ന്റെ കാലാവധി തീരുന്ന തീയതിയും CVC-യും നൽകുക. സ്ഥിരീകരിച്ച് കഴിഞ്ഞാൽ, ഈ സൈറ്റുമായി കാർഡ് വിശദാംശങ്ങൾ പങ്കിടും.</translation>
<translation id="7260504762447901703">ആക്‌സസ്സ് റദ്ദാക്കുക</translation>
-<translation id="7271803869921933038">പ്രീപെയ്ഡ് കാർഡുകൾ സ്വീകരിക്കുന്നു</translation>
+<translation id="7271803869921933038">സ്വീകരിക്കുന്ന പ്രീപെയ്ഡ് കാർഡുകൾ</translation>
<translation id="7275334191706090484">നിയന്ത്രിത ബുക്ക്‌മാർക്കുകൾ</translation>
<translation id="7298195798382681320">ശുപാർശചെയ്യുന്നത്</translation>
<translation id="7309308571273880165"><ph name="CRASH_TIME" />-ന് ക്യാപ്‌ചർ ചെയ്‌ത ക്രാഷ് റിപ്പോർട്ടുകൾ (ഉപയോക്താവ് അഭ്യർത്ഥിച്ച അപ്‌ലോഡ്, ഇതുവരെ അപ്‌ലോഡുചെയ്‌തിട്ടില്ല)</translation>
@@ -971,7 +972,7 @@
</translation>
<translation id="859285277496340001">സാക്‍ഷ്യപത്രം അസാധുവാക്കിയോ എന്ന് പരിശോധിക്കുന്നതിന് അത് ഒരു മെക്കാനിസത്തെയും സൂചിപ്പിക്കുന്നില്ല.</translation>
<translation id="8620436878122366504">നിങ്ങളുടെ രക്ഷിതാക്കൾ ഇതുവരെ അംഗീകാരം നൽകിയിട്ടില്ല</translation>
-<translation id="8625384913736129811">ഈ ഉപകരണത്തിൽ ഈ കാർഡ് സംരക്ഷിക്കുക</translation>
+<translation id="8625384913736129811">ഈ ഉപകരണത്തിലേക്ക് ഈ കാർഡ് സംരക്ഷിക്കുക</translation>
<translation id="8647750283161643317">എല്ലാം സ്ഥിരമായി പുനഃസജ്ജമാക്കുക</translation>
<translation id="8660471606262461360">Google പേയ്‌മെന്റിൽ നിന്ന്</translation>
<translation id="8688672835843460752">ലഭ്യമാണ്</translation>
@@ -982,7 +983,7 @@
<translation id="8730621377337864115">പൂർത്തിയാക്കി</translation>
<translation id="8738058698779197622">ഒരു സുരക്ഷിത കണക്ഷൻ സ്ഥാപിക്കുന്നതിന്, നിങ്ങളുടെ ക്ലോക്ക് ശരിയായി സജ്ജീകരിക്കേണ്ടതുണ്ട്. വെബ്‌സൈറ്റുകൾ സ്വയം തിരിച്ചറിയുന്നതിന് ഉപയോഗിക്കുന്ന സർട്ടിഫിക്കറ്റുകൾ, നിർദ്ദിഷ്‌ട സമയ പരിധിയ്‌ക്ക് മാത്രമായി സാധുതയുള്ളതിനാലാണിത്. നിങ്ങളുടെ ഉപകരണത്തിന്റെ ക്ലോക്ക് തെറ്റായിരിക്കുന്നതിനാൽ, Chromium-ന് ഈ സർട്ടിഫിക്കറ്റുകൾ പരിശോധിച്ചുറപ്പിക്കാനാവില്ല.</translation>
<translation id="8740359287975076522"><ph name="HOST_NAME" /> ഹോസ്‌റ്റിന്റെ &lt;abbr id="dnsDefinition"&gt;DNS വിലാസം&lt;/abbr&gt; കണ്ടെത്താനായില്ല. പ്രശ്‌നം നിർണ്ണയിക്കുന്നു.</translation>
-<translation id="874846938927089722">ക്രെഡിറ്റ് കാർഡുകളും പ്രീപെയ്ഡ് കാർഡുകളും സ്വീകരിക്കുന്നു</translation>
+<translation id="874846938927089722">സ്വീകരിക്കുന്ന ക്രെഡിറ്റ് കാർഡുകളും പ്രീപെയ്ഡ് കാർഡുകളും</translation>
<translation id="8759274551635299824">ഈ കാർഡ് കാലഹരണപ്പെട്ടു</translation>
<translation id="8761567432415473239">Google സുരക്ഷിത ബ്രൗസിംഗ് <ph name="SITE" /> എന്നതിൽ ഈയിടെ <ph name="BEGIN_LINK" />ദോഷകരമായ പ്രോഗ്രാമുകൾ കണ്ടെത്തി<ph name="END_LINK" />.</translation>
<translation id="8790007591277257123">&amp;ഇല്ലാതാക്കുന്നത് വീണ്ടും ചെയ്യുക</translation>
@@ -1045,7 +1046,7 @@
<translation id="933712198907837967">Diners Club</translation>
<translation id="935608979562296692">ഫോം മായ്‌ക്കുക</translation>
<translation id="939736085109172342">പുതിയ ഫോള്‍ഡര്‍</translation>
-<translation id="951104842009476243">ഡെബിറ്റ് കാർഡുകളും പ്രീപെയ്ഡ് കാർഡുകളും സ്വീകരിക്കുന്നു</translation>
+<translation id="951104842009476243">സ്വീകരിക്കുന്ന ഡെബിറ്റ് കാർഡുകളും പ്രീപെയ്ഡ് കാർഡുകളും</translation>
<translation id="969892804517981540">ഔദ്യോഗിക ബില്‍ഡ്</translation>
<translation id="975560348586398090">{COUNT,plural, =0{ഒന്നുമില്ല}=1{ഒരു ഇനം}other{# ഇനങ്ങൾ}}</translation>
<translation id="981121421437150478">ഓഫ്‌ലൈൻ</translation>
diff --git a/chromium/components/strings/components_strings_mr.xtb b/chromium/components/strings/components_strings_mr.xtb
index 9a9725d33c9..713e5eb4b07 100644
--- a/chromium/components/strings/components_strings_mr.xtb
+++ b/chromium/components/strings/components_strings_mr.xtb
@@ -27,7 +27,7 @@
<translation id="1152921474424827756"><ph name="URL" /> च्या <ph name="BEGIN_LINK" />कॅश केलेल्या कॉपीवर<ph name="END_LINK" /> प्रवेश करा</translation>
<translation id="1158211211994409885"><ph name="HOST_NAME" /> नी कनेक्शन अनपेक्षितरित्या बंद केले.</translation>
<translation id="1161325031994447685">Wi-Fi शी पुन्हा कनेक्ट करीत आहे</translation>
-<translation id="1165039591588034296">त्रुटी</translation>
+<translation id="1165039591588034296">एरर</translation>
<translation id="1175364870820465910">&amp;मुद्रण...</translation>
<translation id="1181037720776840403">काढा</translation>
<translation id="1184214524891303587">Google कडे संभाव्य सुरक्षितता घटनांच्या तपशीलांचा <ph name="BEGIN_WHITEPAPER_LINK" />स्वयंचलितपणे अहवाल द्या.<ph name="END_WHITEPAPER_LINK" /> <ph name="PRIVACY_PAGE_LINK" /></translation>
@@ -36,7 +36,7 @@
<translation id="1201895884277373915">या साइटकडून अधिक</translation>
<translation id="1206967143813997005">खराब प्रारंभिक स्वाक्षरी</translation>
<translation id="1209206284964581585">आतासाठी लपवा</translation>
-<translation id="121201262018556460">आपण <ph name="DOMAIN" /> वर पोहोचण्याचा प्रयत्न केलात, परंतु सर्व्हरने एक कमकुवत की असलेले प्रमाणपत्र सादर केले. आक्रमणकर्त्याने गोपनीय की तोडलेली असू शकते आणि सर्व्हर हे आपल्याला अपेक्षित असणारे सर्व्हर नसू शकते (आपण कदाचित आक्रमणकर्त्याशी संप्रेषण करत असाल).</translation>
+<translation id="121201262018556460">आपण <ph name="DOMAIN" /> वर पोहोचण्याचा प्रयत्न केलात, परंतु सर्व्हरने एक कमकुवत की असलेले प्रमाणपत्र सादर केले. आक्रमणकर्त्याने गोपनीय की तोडलेली असू शकते आणि सर्व्हर हे आपल्याला अपेक्षित असणारे सर्व्हर नसू शकते (आपण कदाचित आक्रमणकर्त्याशी संवाद प्रस्थापित करत असाल).</translation>
<translation id="1219129156119358924">सिस्टम सुरक्षा</translation>
<translation id="1227224963052638717">अज्ञात धोरण.</translation>
<translation id="1227633850867390598">मूल्य लपवा</translation>
@@ -64,7 +64,7 @@
<translation id="1377321085342047638">कार्ड नंबर</translation>
<translation id="139305205187523129"><ph name="HOST_NAME" /> नी कोणताही डेटा पाठविला नाही.</translation>
<translation id="1407135791313364759">सर्व उघडा</translation>
-<translation id="1413809658975081374">गोपनीयता त्रुटी</translation>
+<translation id="1413809658975081374">गोपनीयता एरर</translation>
<translation id="14171126816530869"><ph name="ISSUER" /> द्वारे <ph name="LOCALITY" /> स्थित <ph name="ORGANIZATION" /> ची ओळख सत्यापित केली गेली आहे.</translation>
<translation id="1426410128494586442">होय</translation>
<translation id="1430915738399379752">मुद्रण</translation>
@@ -131,7 +131,7 @@
<translation id="194030505837763158"><ph name="LINK" /> दुव्याकडे जा</translation>
<translation id="1948773908305951926">स्वीकारली जाणारी प्रीपेड कार्डे</translation>
<translation id="1962204205936693436"><ph name="DOMAIN" /> बुकमार्क</translation>
-<translation id="1973335181906896915">क्रमीकरण त्रुटी</translation>
+<translation id="1973335181906896915">क्रमीकरण एरर</translation>
<translation id="1974060860693918893">प्रगत</translation>
<translation id="1978555033938440688">फर्मवेयर आवृत्ती</translation>
<translation id="2001146170449793414">{COUNT,plural, =1{आणि 1 अधिक}one{आणि # अधिक}other{आणि # अधिक}}</translation>
@@ -171,7 +171,7 @@
<translation id="2230458221926704099"><ph name="BEGIN_LINK" />निदान अॅप<ph name="END_LINK" /> वापरून आपल्या कनेक्शनचे निराकरण करा</translation>
<translation id="2239100178324503013">आता पाठवा</translation>
<translation id="225207911366869382">हे मूल्य या धोरणासाठी नापसंत करण्‍यात आले आहे.</translation>
-<translation id="2262243747453050782">HTTP त्रुटी</translation>
+<translation id="2262243747453050782">HTTP एरर</translation>
<translation id="2270484714375784793">फोन नंबर</translation>
<translation id="2292556288342944218">आपला इंटरनेट प्रवेश अवरोधित केला आहे</translation>
<translation id="230155334948463882">नवीन कार्ड?</translation>
@@ -197,7 +197,7 @@
<translation id="2467694685043708798"><ph name="BEGIN_LINK" />नेटवर्क निदान चालविणे<ph name="END_LINK" /></translation>
<translation id="2479410451996844060">अवैध शोध URL.</translation>
<translation id="2482878487686419369">सूचना</translation>
-<translation id="2491120439723279231">सर्व्हरच्या प्रमाणपत्रात त्रुटी आहेत.</translation>
+<translation id="2491120439723279231">सर्व्हरच्या प्रमाणपत्रात एरर आहेत.</translation>
<translation id="2495083838625180221">JSON विश्लेषक</translation>
<translation id="2495093607237746763">चेक केल्यास, अधिक जलद फॉर्म भरण्यासाठी या डिव्हाइसवर Chromium आपल्या कार्डची एक प्रत संचयित करेल.</translation>
<translation id="2498091847651709837">नवीन कार्ड स्कॅन करा</translation>
@@ -288,7 +288,7 @@
<translation id="3120730422813725195">Elo</translation>
<translation id="31207688938192855"><ph name="BEGIN_LINK" />कनेक्टिव्हिटी निदान चालवून पहा<ph name="END_LINK" />.</translation>
<translation id="3145945101586104090">प्रतिसाद डीकोड करण्यात अयशस्वी</translation>
-<translation id="3150653042067488994">तात्पुरती सर्व्हर त्रुटी</translation>
+<translation id="3150653042067488994">तात्पुरती सर्व्हर एरर</translation>
<translation id="3154506275960390542">या पृष्ठावर एक फॉर्म आहे जो कदाचित सुरक्षितपणे सबमिट होणार नाही. आपण पाठविलेला डेटा प्रवासादरम्यान इतर पाहू शकतात किंवा सर्व्हर प्राप्त करत असलेल्या आक्रमणकर्त्याद्वारे सुधारित केले जाऊ शकते.</translation>
<translation id="3157931365184549694">पुनर्संचयित करा</translation>
<translation id="3162559335345991374">आपण वापरत असलेल्या Wi-Fi च्या लॉग इन पृष्ठास आपल्याला भेट देण्याची आवश्यकता असू शकते.</translation>
@@ -301,7 +301,7 @@
<ph name="PLATFORM_TEXT" /></translation>
<translation id="320323717674993345">पेमेंट रद्द करा</translation>
<translation id="3207960819495026254">बुकमार्क केलेली</translation>
-<translation id="3209375525920864198">कृपया बरोबर सेशन नाव टाका.</translation>
+<translation id="3209375525920864198">कृपया एक वैध सेशन नाव टाका.</translation>
<translation id="3211223744486044430">पुढील वेळी जलद पेमेंट देण्यासाठी, तुमच्या Google खात्यावर आणि या डीव्हाइसवर हे कार्ड सेव्ह करा.</translation>
<translation id="3225919329040284222">सर्व्हरने असे प्रमाणपत्र सादर केले आहे जे अंगभूत अपेक्षांशी जुळत नाही. या अपेक्षा आपल्याला संरक्षित करण्यासाठी विशिष्ट, उच्च-सुरक्षिततेच्या वेबसाइटसाठी समाविष्ट केल्या आहेत.</translation>
<translation id="3226128629678568754">पृष्ठ लोड करण्यास आवश्यक असलेला डेटा पुन्हा सबमिट करण्यासाठी रीलोड बटण दाबा.</translation>
@@ -329,10 +329,10 @@
<ph name="LIST_ITEM" />कुकीज आणि साइट डेटा
<ph name="LIST_ITEM" />फॉर्ममध्ये टाकलेली माहिती
<ph name="END_LIST" /></translation>
-<translation id="3369192424181595722">घड्याळ त्रुटी</translation>
+<translation id="3369192424181595722">घड्याळ एरर</translation>
<translation id="337363190475750230">तरतूद रद्द केली</translation>
-<translation id="3377188786107721145">धोरण विश्लेषण त्रुटी</translation>
-<translation id="3380365263193509176">अज्ञात त्रुटी</translation>
+<translation id="3377188786107721145">धोरण विश्लेषण एरर</translation>
+<translation id="3380365263193509176">अज्ञात एरर</translation>
<translation id="3380864720620200369">क्लायंट आयडी:</translation>
<translation id="3391030046425686457">वितरण पत्ता</translation>
<translation id="3395827396354264108">पिकअप पद्धत</translation>
@@ -392,7 +392,7 @@
<translation id="372429172604983730">या एररला कारणीभूत असू शकणार्‍या अॅप्लिकेशनमध्ये अँटिव्हायरस, फायरवॉल आणि वेब-फिल्टरिंग किंवा प्रॉक्सी सॉफ्टवेअरचा समावेश होतो.</translation>
<translation id="3736520371357197498">आपल्याला आपल्या सुरक्षिततेच्या जोखमी समजत असल्यास, धोकादायक प्रोग्राम काढण्यापूर्वी आपण <ph name="BEGIN_LINK" />या असुरक्षित साइटला भेट देऊ शकता<ph name="END_LINK" />.</translation>
<translation id="3739623965217189342">आपण कॉपी केलेल्याचा दुवा जोडा</translation>
-<translation id="3744899669254331632">Chromium प्रक्रिया करू शकत नसलेले सरमिसळ केलेले क्रेडेन्‍शियल वेबसाइटने पाठविल्‍याने आपण आत्ता <ph name="SITE" /> ला भेट देऊ शकत नाही. नेटवर्क त्रुटी आणि आक्रमण सहसा तात्पुरते आहेत त्यामुळे संभवत: हे पृष्‍ठ नंतर कार्य करेल.</translation>
+<translation id="3744899669254331632">Chromium प्रक्रिया करू शकत नसलेले सरमिसळ केलेले क्रेडेन्‍शियल वेबसाइटने पाठविल्‍याने आपण आत्ता <ph name="SITE" /> ला भेट देऊ शकत नाही. नेटवर्क एरर आणि आक्रमण सहसा तात्पुरते आहेत त्यामुळे संभवत: हे पृष्‍ठ नंतर कार्य करेल.</translation>
<translation id="3748148204939282805"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> वरील हल्लेखोर कदाचित तुम्हाला सॉफ्टवेअर इंस्टॉल करणे किंवा तुमची वैयक्तिक माहिती (उदाहरणार्थ, पासवर्ड, फोन नंबर किंवा क्रेडिट कार्डे) उघड करणे यासारख्या काही धोकादायक गोष्टी करण्यासाठी तुम्हाला फसवू शकतात. <ph name="BEGIN_LEARN_MORE_LINK" />आणखी जाणून घ्या<ph name="END_LEARN_MORE_LINK" /></translation>
<translation id="375403751935624634">सर्व्हर त्रुटीमुळे भाषांतर अयशस्वी झाला.</translation>
<translation id="3759461132968374835">आपण अलीकडे कोणतेही क्रॅश नोंदवले नाहीत. क्रॅश नोंदवणे अक्षम असताना झालेले क्रॅश येथे दिसून येणार नाहीत.</translation>
@@ -423,7 +423,7 @@
<translation id="4030383055268325496">&amp;जोडा पूर्ववत करा</translation>
<translation id="4058922952496707368">की "<ph name="SUBKEY" />": <ph name="ERROR" /></translation>
<translation id="4067947977115446013">वैध पत्ता जोडा</translation>
-<translation id="4072486802667267160">आपल्या मागणीवर प्रक्रिया करताना त्रुटी आली, कृपया पुन्हा प्रयत्न करा.</translation>
+<translation id="4072486802667267160">आपल्या मागणीवर प्रक्रिया करताना एरर आली, कृपया पुन्हा प्रयत्न करा.</translation>
<translation id="4075732493274867456">क्लायंट आणि सर्व्हर एक सामान्य SSL प्रोटोकॉल आवृत्ती किंवा सायफर संचाचे समर्थन करीत नाही.</translation>
<translation id="4079302484614802869">प्रॉक्सी कॉन्फिगरेशन .pac स्क्रिप्ट URL वापरण्‍यास सेट करण्‍यात आले आहे, निश्चित प्रॉक्सी सर्व्हर नव्हे.</translation>
<translation id="4098354747657067197">भ्रामक साइट पुढे आहे</translation>
@@ -465,7 +465,7 @@
<translation id="4346197816712207223">स्वीकारली जाणारी क्रेडिट कार्डे</translation>
<translation id="4356973930735388585">या साइट वरील आक्रमणकर्ते आपली माहिती (उदाहरणार्थ, फोटो, पासवर्ड, संदेश आणि क्रेडिट कार्ड) चोरणारे किंवा हटविणारे धोकादायक प्रोग्राम आपल्या संगणकावर इंस्टॉल करण्‍याचा प्रयत्न करू शकतात.</translation>
<translation id="4372948949327679948">अपेक्षित <ph name="VALUE_TYPE" /> मूल्य.</translation>
-<translation id="4377125064752653719">आपण <ph name="DOMAIN" /> वर पोहोचण्याचा प्रयत्न केला, परंतु सर्व्हरने सादर केलेले प्रमाणपत्र त्याच्या जारीकर्त्याद्वारे मागे घेतले गेले आहे. याचा अर्थ सर्व्हरने सादर केलेल्या सुरक्षा क्रेडेन्शियलवर अजिबात ठेवला जाऊ नये. आपण कदाचित आक्रमणकर्त्याशी संप्रेषण करत आहात.</translation>
+<translation id="4377125064752653719">आपण <ph name="DOMAIN" /> वर पोहोचण्याचा प्रयत्न केला, परंतु सर्व्हरने सादर केलेले प्रमाणपत्र त्याच्या जारीकर्त्याद्वारे मागे घेतले गेले आहे. याचा अर्थ सर्व्हरने सादर केलेल्या सुरक्षा क्रेडेन्शियलवर अजिबात ठेवला जाऊ नये. आपण कदाचित आक्रमणकर्त्याशी संवाद प्रस्थापित करत आहात.</translation>
<translation id="4394049700291259645">अक्षम करा</translation>
<translation id="4406896451731180161">शोध परिणाम</translation>
<translation id="4415426530740016218">घेण्याचा पत्ता</translation>
@@ -473,7 +473,7 @@
<translation id="4432688616882109544"><ph name="HOST_NAME" /> ने आपले लॉग इन प्रमाणपत्र स्वीकारले नाही किंवा कदाचित प्रदान केले गेले नसावे.</translation>
<translation id="443673843213245140">प्रॉक्सीचा वापर अक्षम करण्‍यात आला आहे पण एक सुस्पष्‍ट प्रॉक्सी कॉन्‍फिगरेशन निर्दिष्‍ट करण्‍यात आले आहे.</translation>
<translation id="445100540951337728">डेबिट कार्डे स्वीकारली जातात</translation>
-<translation id="4506176782989081258">प्रमाणीकरण त्रुटी: <ph name="VALIDATION_ERROR" /></translation>
+<translation id="4506176782989081258">प्रमाणीकरण एरर: <ph name="VALIDATION_ERROR" /></translation>
<translation id="4506599922270137252">सिस्टम प्रशासकाशी संपर्क साधणे</translation>
<translation id="450710068430902550">प्रशासकासह सामायिक करीत आहे</translation>
<translation id="4515275063822566619">कार्ड आणि पत्ते Chrome आणि आपल्या Google खात्याकडील (<ph name="ACCOUNT_EMAIL" />) आहेत. आपण त्यांना <ph name="BEGIN_LINK" />सेटिंग्‍ज<ph name="END_LINK" /> मधून व्यवस्थापित करू शकता.</translation>
@@ -488,7 +488,7 @@
<translation id="4611292653554630842">लॉग इन करा</translation>
<translation id="4619615317237390068">अन्य डिव्हाइसेसमधील टॅब</translation>
<translation id="4668929960204016307">,</translation>
-<translation id="467662567472608290">हा सर्व्हर हे <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकला नाही; त्याच्या सुरक्षितता प्रमाणपत्रात त्रुटी आहेत. हे कदाचित एका चुकीच्या कॉन्फिगरेशनमुळे किंवा आक्रमणकर्त्याने आपले कनेक्शन आंतरखंडित केल्यामुळे झाले असू शकते.</translation>
+<translation id="467662567472608290">हा सर्व्हर हे <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकला नाही; त्याच्या सुरक्षितता प्रमाणपत्रात एरर आहेत. हे कदाचित एका चुकीच्या कॉन्फिगरेशनमुळे किंवा आक्रमणकर्त्याने आपले कनेक्शन आंतरखंडित केल्यामुळे झाले असू शकते.</translation>
<translation id="4690462567478992370">अवैध प्रमाणपत्र वापरणे थांबवा</translation>
<translation id="4690954380545377795">तुम्ही तुमच्या Google खात्याचा अॅक्सेस गमावू शकता किंवा तुमची संवेदनशील माहिती चोरीला जाऊ शकते. Chrome लगेच तुमचा पासवर्ड बदलण्याची शिफारस करत आहे.</translation>
<translation id="4701488924964507374"><ph name="SENTENCE1" /> <ph name="SENTENCE2" /></translation>
@@ -506,12 +506,12 @@
<translation id="4758311279753947758">संपर्क माहिती जोडा</translation>
<translation id="4759118997339041434">पेमेंट स्वयंभरण अक्षम केले</translation>
<translation id="4764776831041365478"><ph name="URL" /> येथील वेबपृष्ठ कदाचित तात्पुरते बंद आहे किंवा ते कदाचित कायमचे नवीन वेब पत्त्यावर हलवले आहे.</translation>
-<translation id="4771973620359291008">एक अज्ञात त्रुटी आली आहे.</translation>
+<translation id="4771973620359291008">एक अज्ञात एरर आली आहे.</translation>
<translation id="4792143361752574037">सेशन फायली अ‍ॅक्सेस करताना अडचण आली. डिस्कवर सेव्ह करणे सध्या बंद केलेले आहे. पुन्हा प्रयत्न करण्यासाठी कृपया पेज रीलोड करा.</translation>
<translation id="4800132727771399293">आपली कालबाह्यता तारीख आणि CVC तपासा आणि पुन्हा प्रयत्न करा</translation>
<translation id="4803924862070940586"><ph name="CURRENCY_CODE" /> <ph name="FORMATTED_TOTAL_AMOUNT" /></translation>
-<translation id="4807049035289105102">Google Chrome प्रक्रिया करू शकत नाही असे न समजणारे क्रेडेन्शियल वेबसाइटने पाठविल्यामुळे आपण आत्ता <ph name="SITE" /> ला भेट देऊ शकत नाही. नेटवर्क त्रुटी आणि आक्रमण सामान्यतः तात्पुरते असतात, यामुळे हे पृष्ठ कदाचित नंतर कार्य करेल.</translation>
-<translation id="4813512666221746211">नेटवर्क त्रुटी</translation>
+<translation id="4807049035289105102">Google Chrome प्रक्रिया करू शकत नाही असे न समजणारे क्रेडेन्शियल वेबसाइटने पाठविल्यामुळे आपण आत्ता <ph name="SITE" /> ला भेट देऊ शकत नाही. नेटवर्क एरर आणि आक्रमण सामान्यतः तात्पुरते असतात, यामुळे हे पृष्ठ कदाचित नंतर कार्य करेल.</translation>
+<translation id="4813512666221746211">नेटवर्क एरर</translation>
<translation id="4816492930507672669">पृष्‍ठानुरुप करा</translation>
<translation id="483020001682031208">दर्शविण्यासाठी कोणतीही वास्तविक वेब पृष्ठे नाहीत</translation>
<translation id="4850886885716139402">पहा</translation>
@@ -551,7 +551,7 @@
<translation id="5095208057601539847">प्रांत</translation>
<translation id="5115563688576182185">(64-बिट)</translation>
<translation id="5141240743006678641">आपल्या Google क्रेडेन्शियलसह संंकालित केलेले पासवर्ड कूटबद्ध करा</translation>
-<translation id="5145883236150621069">धोरण प्रतिसादामध्ये त्रुटी कोड अस्तित्वात आहे</translation>
+<translation id="5145883236150621069">धोरण प्रतिसादामध्ये एरर कोड अस्तित्वात आहे</translation>
<translation id="5159010409087891077">नवीन गुप्त विंडोमध्ये पेज उघडा (⇧⌘N)</translation>
<translation id="5171045022955879922">URL शोधा किंवा टाइप करा</translation>
<translation id="5172758083709347301">मशीन</translation>
@@ -575,7 +575,7 @@
<ph name="LIST_ITEM" /> सॉफ्टवेअर तुमच्या काँप्युटरवरून काढून कसे टाकावे हे माहीत करण्यासाठी <ph name="BEGIN_LEARN_MORE_LINK" />Chrome मदत केंद्र<ph name="END_LEARN_MORE_LINK" /> वर जा
<ph name="END_LIST" /></translation>
<translation id="5285570108065881030">सर्व सेव्ह केलेले पासवर्ड दाखवा</translation>
-<translation id="5299298092464848405">धोरण विश्लेषित करताना त्रुटी</translation>
+<translation id="5299298092464848405">धोरण विश्लेषित करताना एरर</translation>
<translation id="5308380583665731573">कनेक्‍ट करा</translation>
<translation id="5308689395849655368">क्रॅश अहवाल अक्षम केला गेला आहे.</translation>
<translation id="5317780077021120954">सेव्ह करा</translation>
@@ -590,7 +590,7 @@
<translation id="5421136146218899937">ब्राउझिंग डेटा साफ करा...</translation>
<translation id="5430298929874300616">बुकमार्क काढा</translation>
<translation id="5431657950005405462">आपली फाईल आढळली नाही</translation>
-<translation id="5439770059721715174">"<ph name="ERROR_PATH" />" वर स्कीमा प्रमाणीकरण त्रुटी: <ph name="ERROR" /></translation>
+<translation id="5439770059721715174">"<ph name="ERROR_PATH" />" वर स्कीमा प्रमाणीकरण एरर: <ph name="ERROR" /></translation>
<translation id="5452270690849572955">हे <ph name="HOST_NAME" /> पृष्ठ शोधले जाऊ शकत नाही</translation>
<translation id="5455374756549232013">खराब धोरण टाइमस्टँप</translation>
<translation id="5457113250005438886">अवैध</translation>
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">वैयक्तीकृत सामग्री मिळवा</translation>
<translation id="5675650730144413517">हे पृष्ठ कार्य करीत नाही</translation>
<translation id="5689199277474810259">JSON वर निर्यात करा</translation>
+<translation id="5689516760719285838">स्थान</translation>
<translation id="5710435578057952990">या वेबसाइटची ओळख सत्यापित केली गेली नाही.</translation>
<translation id="5719499550583120431">प्रीपेड कार्डे स्वीकारली जातात.</translation>
<translation id="5720705177508910913">वर्तमान वापरकर्ता</translation>
@@ -746,7 +747,7 @@
<translation id="6710213216561001401">मागील</translation>
<translation id="6710594484020273272">&lt;शोध संज्ञा एंटर करा&gt;</translation>
<translation id="6711464428925977395">प्रॉक्सी सर्व्हरमध्ये काहीतरी चुकीचे आहे किंवा पत्ता चुकीचा आहे.</translation>
-<translation id="674375294223700098">अज्ञात सर्व्हर प्रमाणपत्र त्रुटी.</translation>
+<translation id="674375294223700098">अज्ञात सर्व्हर प्रमाणपत्र एरर.</translation>
<translation id="6753269504797312559">धोरण मूल्य</translation>
<translation id="6757797048963528358">आपले डिव्हाइस निष्क्रीय झाले.</translation>
<translation id="6778737459546443941">आपल्या पालकाने अद्याप ती मंजूर केली नाही</translation>
@@ -972,7 +973,7 @@
<translation id="858637041960032120">फोन नंबर जोडा</translation>
<translation id="859285277496340001">प्रमाणपत्र निरस्त झाले आहे किंवा नाही हे तपासण्यासाठी प्रणाली निर्दिष्ट करत नाही.</translation>
<translation id="8620436878122366504">आपल्या पालकांनी अद्याप ती मंजूर केली नाही</translation>
-<translation id="8625384913736129811">हे कार्ड या डिव्हाइसवर सेव्ह करा</translation>
+<translation id="8625384913736129811">या डिव्हाइसवर हे कार्ड सेव्‍ह करा</translation>
<translation id="8647750283161643317">सर्व डीफॉल्टमध्ये रीसेट करा</translation>
<translation id="8660471606262461360">Google Payments वरून</translation>
<translation id="8688672835843460752">उपलब्ध</translation>
@@ -993,7 +994,7 @@
<translation id="884264119367021077">वहनावळ पत्ता</translation>
<translation id="884923133447025588">कोणतीही निरस्त करण्याची प्रणाली आढळली नाही.</translation>
<translation id="885730110891505394">Google सह सामायिकरण</translation>
-<translation id="8866481888320382733">धोरण सेटिंग्ज विश्लेषित करताना त्रुटी</translation>
+<translation id="8866481888320382733">धोरण सेटिंग्ज विश्लेषित करताना एरर</translation>
<translation id="8866959479196209191">हे पृष्ठ म्हणते:</translation>
<translation id="8870413625673593573">अलीकडे बंद</translation>
<translation id="8874824191258364635">वैध कार्ड नंबर एंटर करा</translation>
@@ -1015,7 +1016,7 @@
<translation id="901974403500617787">सिस्टम-व्याप्त लागू होणारी ध्वजांकने केवळ मालकाद्वारे सेट केली जाऊ शकतात: <ph name="OWNER_EMAIL" />.</translation>
<translation id="9020200922353704812">कार्ड बिलिंग पत्ता आवश्यक आहे</translation>
<translation id="9020542370529661692">हे पृष्ठ <ph name="TARGET_LANGUAGE" /> मध्ये भाषांतरित केले गेले आहे.</translation>
-<translation id="9035022520814077154">सुरक्षितता त्रुटी</translation>
+<translation id="9035022520814077154">सुरक्षितता एरर</translation>
<translation id="9038649477754266430">पृष्ठे अधिक द्रुतपणे लोड करण्यासाठी पूर्वानुमान सेवेचा वापर करा</translation>
<translation id="9039213469156557790">पुढे, या पृष्ठात सुरक्षित नसलेली इतर संसाधने समाविष्ट आहेत. ही संसाधने संक्रमणात असताना इतरांद्वारे पाहिली जाऊ शकतात आणि पृष्ठाचे वर्तन बदलण्यासाठी आक्रमणकर्त्याद्वारे सुधारित केली जाऊ शकतात.</translation>
<translation id="9049981332609050619">आपण <ph name="DOMAIN" /> वर पोहोचण्याचा प्रयत्न केला, परंतु सर्व्हरने अवैध प्रमाणपत्र सादर केले आहे.</translation>
diff --git a/chromium/components/strings/components_strings_ms.xtb b/chromium/components/strings/components_strings_ms.xtb
index e9f1563a641..d92655eb48a 100644
--- a/chromium/components/strings/components_strings_ms.xtb
+++ b/chromium/components/strings/components_strings_ms.xtb
@@ -632,6 +632,7 @@
<translation id="5669703222995421982">Dapatkan kandungan yang diperibadikan</translation>
<translation id="5675650730144413517">Halaman ini tidak berfungsi</translation>
<translation id="5689199277474810259">Eksport ke JSON</translation>
+<translation id="5689516760719285838">Lokasi</translation>
<translation id="5710435578057952990">Identiti tapak web ini belum disahkan.</translation>
<translation id="5719499550583120431">Kad prabayar diterima.</translation>
<translation id="5720705177508910913">Pengguna semasa</translation>
@@ -750,7 +751,7 @@
<translation id="6753269504797312559">Nilai dasar</translation>
<translation id="6757797048963528358">Peranti anda tidak aktif.</translation>
<translation id="6778737459546443941">Ibu bapa anda belum meluluskannya</translation>
-<translation id="681021252041861472">Medan yang Diperlukan</translation>
+<translation id="681021252041861472">Medan Diperlukan</translation>
<translation id="6810899417690483278">ID Penyesuaian</translation>
<translation id="6820686453637990663">CVC</translation>
<translation id="6824266427216888781">Gagal memuatkan data rantau</translation>
diff --git a/chromium/components/strings/components_strings_nl.xtb b/chromium/components/strings/components_strings_nl.xtb
index 409efc10394..c9760d9cac9 100644
--- a/chromium/components/strings/components_strings_nl.xtb
+++ b/chromium/components/strings/components_strings_nl.xtb
@@ -77,7 +77,7 @@
<translation id="1549470594296187301">JavaScript moet zijn ingeschakeld om deze functie te kunnen gebruiken.</translation>
<translation id="1559528461873125649">Dit bestand of deze directory bestaat niet</translation>
<translation id="1583429793053364125">Er is iets misgegaan met het weergeven van deze webpagina.</translation>
-<translation id="1590457302292452960">Een sterk wachtwoord genereren...</translation>
+<translation id="1590457302292452960">Een sterk wachtwoord genereren…</translation>
<translation id="1592005682883173041">Lokale gegevenstoegang</translation>
<translation id="1594030484168838125">Kiezen</translation>
<translation id="1620510694547887537">Camera</translation>
@@ -627,6 +627,7 @@
<translation id="5669703222995421982">Gepersonaliseerde content ontvangen</translation>
<translation id="5675650730144413517">Deze pagina werkt niet</translation>
<translation id="5689199277474810259">Exporteren naar JSON</translation>
+<translation id="5689516760719285838">Locatie</translation>
<translation id="5710435578057952990">De identiteit van deze website is niet geverifieerd.</translation>
<translation id="5719499550583120431">Prepaidkaarten worden geaccepteerd.</translation>
<translation id="5720705177508910913">Huidige gebruiker</translation>
@@ -966,7 +967,7 @@
<translation id="858637041960032120">Telnr. toevoegen</translation>
<translation id="859285277496340001">Er wordt in het certificaat geen methode gespecificeerd waarmee kan worden gecontroleerd of het certificaat is ingetrokken.</translation>
<translation id="8620436878122366504">Je ouders hebben dit nog niet goedgekeurd</translation>
-<translation id="8625384913736129811">Deze creditcard opslaan op dit apparaat</translation>
+<translation id="8625384913736129811">Deze kaart opslaan op dit apparaat</translation>
<translation id="8647750283161643317">Alle standaardinstellingen herstellen</translation>
<translation id="8660471606262461360">Van Google Payments</translation>
<translation id="8688672835843460752">Beschikbaar</translation>
diff --git a/chromium/components/strings/components_strings_no.xtb b/chromium/components/strings/components_strings_no.xtb
index e1b00aed1eb..e60c091a328 100644
--- a/chromium/components/strings/components_strings_no.xtb
+++ b/chromium/components/strings/components_strings_no.xtb
@@ -77,7 +77,7 @@
<translation id="1549470594296187301">Denne funksjonen kan ikke brukes når JavaScript er slått av.</translation>
<translation id="1559528461873125649">Finner ingen slik fil eller katalog</translation>
<translation id="1583429793053364125">Noe gikk galt under åpningen av denne nettsiden.</translation>
-<translation id="1590457302292452960">Generer et sterkt passord</translation>
+<translation id="1590457302292452960">Generer et sterkt passord …</translation>
<translation id="1592005682883173041">Tilgang til lokale data</translation>
<translation id="1594030484168838125">Velg</translation>
<translation id="1620510694547887537">Kamera</translation>
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Få innhold med et personlig preg</translation>
<translation id="5675650730144413517">Denne siden fungerer ikke</translation>
<translation id="5689199277474810259">Eksportér til JSON</translation>
+<translation id="5689516760719285838">Sted</translation>
<translation id="5710435578057952990">Identiteten til dette nettstedet er ikke verifisert.</translation>
<translation id="5719499550583120431">Forhåndsbetalte kort godtas.</translation>
<translation id="5720705177508910913">Gjeldende bruker</translation>
@@ -886,7 +887,7 @@
<translation id="7812922009395017822">Mir</translation>
<translation id="7813600968533626083">Vil du fjerne skjemaforslaget fra Chrome?</translation>
<translation id="7815407501681723534">Fant <ph name="NUMBER_OF_RESULTS" /> <ph name="SEARCH_RESULTS" /> for «<ph name="SEARCH_STRING" />»</translation>
-<translation id="7818867226424560206">Administrasjon av regler</translation>
+<translation id="7818867226424560206">Administrasjon av retningslinjer</translation>
<translation id="782886543891417279">Det kan hende at Wi-Fi-nettverket du bruker (<ph name="WIFI_NAME" />), krever at du besøker en påloggingsside.</translation>
<translation id="785549533363645510">Du er imidlertid ikke usynlig. Inkognitomodus skjuler ikke surfingen din for arbeidsgiveren din, Internett-leverandøren eller nettstedene du besøker.</translation>
<translation id="7855695075675558090"><ph name="TOTAL_LABEL" /> <ph name="CURRENCY_CODE" /> <ph name="FORMATTED_TOTAL_AMOUNT" /></translation>
@@ -943,7 +944,7 @@
<translation id="8298115750975731693">Det kan hende at Wi-Fi-nettverket du bruker (<ph name="WIFI_NAME" />), krever at du besøker <ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" />.</translation>
<translation id="8306404619377842860">Det kan ikke opprettes noen privat tilkobling til <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, siden datoen og klokkeslettet (<ph name="DATE_AND_TIME" />) på enheten du bruker, er feil. <ph name="BEGIN_LEARN_MORE_LINK" />Finn ut mer<ph name="END_LEARN_MORE_LINK" /></translation>
<translation id="8308427013383895095">Oversettelsen mislyktes på grunn av et problem med nettverksforbindelsen.</translation>
-<translation id="8311129316111205805">Last inn økt</translation>
+<translation id="8311129316111205805">Last inn økten</translation>
<translation id="8332188693563227489">Forsøket på å koble til <ph name="HOST_NAME" /> ble avvist</translation>
<translation id="834457929814110454">Hvis du forstår sikkerhetsrisikoen, kan du <ph name="BEGIN_LINK" />gå til det usikre nettstedet<ph name="END_LINK" /> før de farlige programmene er fjernet.</translation>
<translation id="8349305172487531364">Bokmerkerad</translation>
diff --git a/chromium/components/strings/components_strings_pl.xtb b/chromium/components/strings/components_strings_pl.xtb
index 7ba632a35da..fe1b8e78a75 100644
--- a/chromium/components/strings/components_strings_pl.xtb
+++ b/chromium/components/strings/components_strings_pl.xtb
@@ -437,7 +437,7 @@
<translation id="413544239732274901">Więcej informacji</translation>
<translation id="4148925816941278100">American Express</translation>
<translation id="4151403195736952345">Użyj globalnego ustawienia domyślnego (Wykrywaj)</translation>
-<translation id="4165986682804962316">Ustawienia witryn</translation>
+<translation id="4165986682804962316">Ustawienia witryny</translation>
<translation id="4169947484918424451">Czy Chromium ma zapisać tę kartę?</translation>
<translation id="4171400957073367226">Nieprawidłowy podpis weryfikujący</translation>
<translation id="4173827307318847180">{MORE_ITEMS,plural, =1{Jeszcze <ph name="ITEM_COUNT" /> element}few{Jeszcze <ph name="ITEM_COUNT" /> elementy}many{Jeszcze <ph name="ITEM_COUNT" /> elementów}other{Jeszcze <ph name="ITEM_COUNT" /> elementu}}</translation>
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Otrzymywanie spersonalizowanych treści</translation>
<translation id="5675650730144413517">Ta strona nie działa</translation>
<translation id="5689199277474810259">Eksportuj w formacie JSON</translation>
+<translation id="5689516760719285838">Lokalizacja</translation>
<translation id="5710435578057952990">Tożsamość witryny nie została zweryfikowana.</translation>
<translation id="5719499550583120431">Karty przedpłacone są akceptowane.</translation>
<translation id="5720705177508910913">Bieżący użytkownik</translation>
diff --git a/chromium/components/strings/components_strings_pt-BR.xtb b/chromium/components/strings/components_strings_pt-BR.xtb
index 07cb4fc79fa..59398f25d1a 100644
--- a/chromium/components/strings/components_strings_pt-BR.xtb
+++ b/chromium/components/strings/components_strings_pt-BR.xtb
@@ -8,7 +8,7 @@
<translation id="1038842779957582377">nome desconhecido</translation>
<translation id="1050038467049342496">Fechar outros apps</translation>
<translation id="1055184225775184556">&amp;Desfazer adicionar</translation>
-<translation id="10614374240317010">Nunca salvam</translation>
+<translation id="10614374240317010">Nunca salvas</translation>
<translation id="1066396345355680611">É possível que você perca o acesso a conteúdos protegidos de <ph name="SITE" /> e de alguns outros sites.</translation>
<translation id="106701514854093668">Favoritos em computador</translation>
<translation id="1074497978438210769">Não seguro</translation>
@@ -280,7 +280,7 @@
<translation id="3039538478787849737">Salvar cartão no Google?</translation>
<translation id="3041612393474885105">Informações do certificado</translation>
<translation id="3063697135517575841">Não foi possível confirmar seu cartão com o Chrome no momento. Tente novamente mais tarde.</translation>
-<translation id="3064966200440839136">Saindo do modo sem rastros para pagar usando um aplicativo externo. Continuar?</translation>
+<translation id="3064966200440839136">Saindo do modo de navegação anônima para pagar usando um aplicativo externo. Continuar?</translation>
<translation id="3083099961703215236">{COUNT,plural, =0{Nenhuma}=1{1 senha}one{# senha}other{# senhas}}</translation>
<translation id="3093245981617870298">Você está off-line.</translation>
<translation id="3105172416063519923">Código do recurso:</translation>
@@ -301,7 +301,7 @@
<ph name="PLATFORM_TEXT" /></translation>
<translation id="320323717674993345">Cancelar pagamento</translation>
<translation id="3207960819495026254">Adicionada aos favoritos</translation>
-<translation id="3209375525920864198">Insira um nome de sessão válido.</translation>
+<translation id="3209375525920864198">Digite um nome de sessão válido.</translation>
<translation id="3211223744486044430">Para agilizar o pagamento na próxima vez, salve este cartão na sua Conta do Google e neste dispositivo.</translation>
<translation id="3225919329040284222">O servidor apresentou um certificado que não coincide com as expectativas incorporadas. Estas expectativas são incluídas para determinados websites de alta segurança com a finalidade de oferecer proteção a você.</translation>
<translation id="3226128629678568754">Pressione o botão "Atualizar" para reenviar os dados necessários para carregar a página.</translation>
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Receber conteúdo personalizado</translation>
<translation id="5675650730144413517">Esta página não está funcionando</translation>
<translation id="5689199277474810259">Exportar para JSON</translation>
+<translation id="5689516760719285838">Local</translation>
<translation id="5710435578057952990">A identidade deste site não foi confirmada.</translation>
<translation id="5719499550583120431">Cartões pré-pagos são aceitos.</translation>
<translation id="5720705177508910913">Usuário atual</translation>
diff --git a/chromium/components/strings/components_strings_pt-PT.xtb b/chromium/components/strings/components_strings_pt-PT.xtb
index 26874e9a866..5ddcb9b7086 100644
--- a/chromium/components/strings/components_strings_pt-PT.xtb
+++ b/chromium/components/strings/components_strings_pt-PT.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Obter conteúdo personalizado</translation>
<translation id="5675650730144413517">Esta página não está a funcionar</translation>
<translation id="5689199277474810259">Exportar para JSON</translation>
+<translation id="5689516760719285838">Local</translation>
<translation id="5710435578057952990">A identidade deste Web site não foi verificada.</translation>
<translation id="5719499550583120431">Os cartões pré-pagos são admitidos.</translation>
<translation id="5720705177508910913">Utilizador atual</translation>
diff --git a/chromium/components/strings/components_strings_ro.xtb b/chromium/components/strings/components_strings_ro.xtb
index 51b6b914556..4fec9be15c6 100644
--- a/chromium/components/strings/components_strings_ro.xtb
+++ b/chromium/components/strings/components_strings_ro.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Obține conținut personalizat</translation>
<translation id="5675650730144413517">Pagina nu funcționează</translation>
<translation id="5689199277474810259">Exportă în format JSON</translation>
+<translation id="5689516760719285838">Locație</translation>
<translation id="5710435578057952990">Identitatea acestui site nu a fost confirmată.</translation>
<translation id="5719499550583120431">Se acceptă carduri preplătite.</translation>
<translation id="5720705177508910913">Utilizator curent</translation>
diff --git a/chromium/components/strings/components_strings_ru.xtb b/chromium/components/strings/components_strings_ru.xtb
index c3ab8120e64..fc9dde177cb 100644
--- a/chromium/components/strings/components_strings_ru.xtb
+++ b/chromium/components/strings/components_strings_ru.xtb
@@ -77,7 +77,7 @@
<translation id="1549470594296187301">Для использования этой функции необходимо включить JavaScript.</translation>
<translation id="1559528461873125649">Данный файл или каталог не существует</translation>
<translation id="1583429793053364125">При загрузке этой страницы возникли неполадки.</translation>
-<translation id="1590457302292452960">Создать надежный пароль…</translation>
+<translation id="1590457302292452960">Создайте надежный пароль…</translation>
<translation id="1592005682883173041">Доступ к данным на устройстве</translation>
<translation id="1594030484168838125">Выбрать</translation>
<translation id="1620510694547887537">Камера</translation>
@@ -300,7 +300,7 @@
<ph name="PLATFORM_TEXT" /></translation>
<translation id="320323717674993345">Отменить оплату</translation>
<translation id="3207960819495026254">Добавлено в закладки</translation>
-<translation id="3209375525920864198">Укажите допустимое название сеанса.</translation>
+<translation id="3209375525920864198">Недопустимое название сеанса.</translation>
<translation id="3211223744486044430">Чтобы ускорить процесс оплаты в будущем, сохраните карту в аккаунте Google и на этом устройстве.</translation>
<translation id="3225919329040284222">Сертификат не соответствует встроенным параметрам определенных сайтов с высоким уровнем безопасности.</translation>
<translation id="3226128629678568754">Чтобы повторно ввести данные, необходимые для загрузки страницы, нажмите "Обновить".</translation>
@@ -630,6 +630,7 @@
<translation id="5669703222995421982">Получение персонализированного контента</translation>
<translation id="5675650730144413517">Страница недоступна</translation>
<translation id="5689199277474810259">Экспортировать как JSON</translation>
+<translation id="5689516760719285838">Геоданные</translation>
<translation id="5710435578057952990">Идентификационные данные этого сайта не проверены.</translation>
<translation id="5719499550583120431">Принимаются карты предоплаты.</translation>
<translation id="5720705177508910913">Текущий пользователь</translation>
diff --git a/chromium/components/strings/components_strings_sk.xtb b/chromium/components/strings/components_strings_sk.xtb
index 7513d548ef1..1b91667abe8 100644
--- a/chromium/components/strings/components_strings_sk.xtb
+++ b/chromium/components/strings/components_strings_sk.xtb
@@ -77,7 +77,7 @@
<translation id="1549470594296187301">Ak chcete použiť túto funkciu, musíte povoliť JavaScript.</translation>
<translation id="1559528461873125649">Neexistuje žiadny takýto súbor ani priečinok</translation>
<translation id="1583429793053364125">Pri zobrazovaní tejto webovej stránky sa vyskytla chyba.</translation>
-<translation id="1590457302292452960">Vygenerujte silnejšie heslo…</translation>
+<translation id="1590457302292452960">Vygenerujte silné heslo…</translation>
<translation id="1592005682883173041">Prístup k miestnym údajom</translation>
<translation id="1594030484168838125">Zvoliť</translation>
<translation id="1620510694547887537">Kamera</translation>
@@ -627,6 +627,7 @@
<translation id="5669703222995421982">Ako získať prispôsobený obsah</translation>
<translation id="5675650730144413517">Táto stránka nefunguje</translation>
<translation id="5689199277474810259">Exportovať vo formáte JSON</translation>
+<translation id="5689516760719285838">Poloha</translation>
<translation id="5710435578057952990">Identita tejto webovej stránky nebola overená.</translation>
<translation id="5719499550583120431">Predplatené karty sú akceptované.</translation>
<translation id="5720705177508910913">Aktuálny používateľ</translation>
@@ -967,7 +968,7 @@
</translation>
<translation id="859285277496340001">V certifikáte nie je uvedené, akým spôsobom sa má skontrolovať, či certifikát nebol odmietnutý.</translation>
<translation id="8620436878122366504">Vaši rodičia to zatiaľ neschválili</translation>
-<translation id="8625384913736129811">Uložiť túto kartu v zariadení</translation>
+<translation id="8625384913736129811">Uložiť túto kartu do tohto zariadenia</translation>
<translation id="8647750283161643317">Obnoviť predvolené nastavenia všetkých experimentov</translation>
<translation id="8660471606262461360">Zo služby Google Payments</translation>
<translation id="8688672835843460752">K dispozícii</translation>
diff --git a/chromium/components/strings/components_strings_sl.xtb b/chromium/components/strings/components_strings_sl.xtb
index b317584cf51..38dac3b8376 100644
--- a/chromium/components/strings/components_strings_sl.xtb
+++ b/chromium/components/strings/components_strings_sl.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Prilagojena vsebina</translation>
<translation id="5675650730144413517">Ta stran ne deluje</translation>
<translation id="5689199277474810259">Izvozi v JSON</translation>
+<translation id="5689516760719285838">Lokacija</translation>
<translation id="5710435578057952990">Identiteta tega spletnega mesta ni bila potrjena.</translation>
<translation id="5719499550583120431">Sprejema predplačniške kartice.</translation>
<translation id="5720705177508910913">Trenutni uporabnik</translation>
diff --git a/chromium/components/strings/components_strings_sr.xtb b/chromium/components/strings/components_strings_sr.xtb
index 4adc562acbf..9cf14f2cfb5 100644
--- a/chromium/components/strings/components_strings_sr.xtb
+++ b/chromium/components/strings/components_strings_sr.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Добијте персонализовани садржај</translation>
<translation id="5675650730144413517">Ова страница не функционише</translation>
<translation id="5689199277474810259">Извези у JSON</translation>
+<translation id="5689516760719285838">Локација</translation>
<translation id="5710435578057952990">Идентитет овог веб-сајта није верификован.</translation>
<translation id="5719499550583120431">Прихватају се припејд картице.</translation>
<translation id="5720705177508910913">Тренутни корисник</translation>
diff --git a/chromium/components/strings/components_strings_sv.xtb b/chromium/components/strings/components_strings_sv.xtb
index 1fcfc8555fc..67c0725bf80 100644
--- a/chromium/components/strings/components_strings_sv.xtb
+++ b/chromium/components/strings/components_strings_sv.xtb
@@ -301,7 +301,7 @@
<ph name="PLATFORM_TEXT" /></translation>
<translation id="320323717674993345">Avbryt betalningen</translation>
<translation id="3207960819495026254">Bokmärkt</translation>
-<translation id="3209375525920864198">Ange ett giltigt namn på sessionen.</translation>
+<translation id="3209375525920864198">Ange ett giltigt sessionsnamn.</translation>
<translation id="3211223744486044430">Spara det här kortet i Google-kontot och på enheten så går det snabbare att betala nästa gång.</translation>
<translation id="3225919329040284222">Ett certifikat som inte överensstämmer med inbyggda förväntningar presenterades på servern. Förväntningarna gäller för webbplatser med hög säkerhet för att skydda dig.</translation>
<translation id="3226128629678568754">Om du på nytt vill skicka datan som behövs för att läsa in sidan trycker du på knappen Läs in igen.</translation>
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Få anpassat innehåll</translation>
<translation id="5675650730144413517">Sidan fungerar inte</translation>
<translation id="5689199277474810259">Exportera som JSON</translation>
+<translation id="5689516760719285838">Plats</translation>
<translation id="5710435578057952990">Webbplatsens identitet har inte verifierats.</translation>
<translation id="5719499550583120431">Förbetalda kort kan användas.</translation>
<translation id="5720705177508910913">Aktuell användare</translation>
@@ -886,14 +887,14 @@
<translation id="7812922009395017822">Mir</translation>
<translation id="7813600968533626083">Vill du ta bort formulärförslaget från Chrome?</translation>
<translation id="7815407501681723534">Hittade <ph name="NUMBER_OF_RESULTS" /> <ph name="SEARCH_RESULTS" /> för <ph name="SEARCH_STRING" /></translation>
-<translation id="7818867226424560206">Hantera policyer</translation>
+<translation id="7818867226424560206">Hantera principer</translation>
<translation id="782886543891417279">Wi-Fi-nätverket du använder (<ph name="WIFI_NAME" />) kanske kräver att du besöker dess inloggningssida.</translation>
<translation id="785549533363645510">Men du är inte osynlig. Inkognitoläget döljer inte webbhistoriken för din arbetsgivare, internetleverantören eller webbplatserna du besöker.</translation>
<translation id="7855695075675558090"><ph name="TOTAL_LABEL" /> <ph name="FORMATTED_TOTAL_AMOUNT" /> <ph name="CURRENCY_CODE" /></translation>
<translation id="7878176543348854470">Betalkort och förbetalda kort får användas.</translation>
<translation id="7878562273885520351">Lösenordet kan vara utsatt för risk</translation>
<translation id="7887683347370398519">Kontrollera CVC-koden och försök igen</translation>
-<translation id="7893255318348328562">Namn på sessionen</translation>
+<translation id="7893255318348328562">Sessionsnamn</translation>
<translation id="79338296614623784">Ange ett giltigt telefonnummer</translation>
<translation id="7935318582918952113">DOM Distiller</translation>
<translation id="7938958445268990899">Servercertifikatet är inte giltigt ännu.</translation>
diff --git a/chromium/components/strings/components_strings_sw.xtb b/chromium/components/strings/components_strings_sw.xtb
index 4d1cb194a6d..3211f495a65 100644
--- a/chromium/components/strings/components_strings_sw.xtb
+++ b/chromium/components/strings/components_strings_sw.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Pata maudhui yanayokufaa</translation>
<translation id="5675650730144413517">Ukurasa huu haufanyi kazi</translation>
<translation id="5689199277474810259">Tuma katika mfumo wa JSON</translation>
+<translation id="5689516760719285838">Mahali</translation>
<translation id="5710435578057952990">Utambulisho wa tovuti hii haujathibitishwa.</translation>
<translation id="5719499550583120431">Kadi za kulipia awali zinakubaliwa.</translation>
<translation id="5720705177508910913">Mtumiaji wa sasa</translation>
@@ -943,7 +944,7 @@
<translation id="8298115750975731693">Wi-Fi unayotumia (<ph name="WIFI_NAME" />) inaweza kukuhitaji kutembelea <ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" />.</translation>
<translation id="8306404619377842860">Muunganisho wa faragha kwenye <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> haujatambuliwa kwa sababu tarehe na saa za kifaa chako (<ph name="DATE_AND_TIME" />) si sahihi. <ph name="BEGIN_LEARN_MORE_LINK" />Pata maelezo zaidi<ph name="END_LEARN_MORE_LINK" /></translation>
<translation id="8308427013383895095">Utafsiri haukufanikiwa kwa sababu ya hitilafu ya seva.</translation>
-<translation id="8311129316111205805">Pakia kipindi kilichotajwa</translation>
+<translation id="8311129316111205805">Pakia kipindi</translation>
<translation id="8332188693563227489">Ufikiaji wa <ph name="HOST_NAME" /> umekataliwa</translation>
<translation id="834457929814110454">Ikiwa unaelewa hatari kwa usalama wako, unaweza <ph name="BEGIN_LINK" />kutembelea tovuti hii<ph name="END_LINK" /> kabla programu hatari hazijaondolewa.</translation>
<translation id="8349305172487531364">Sehemu ya Alamisho</translation>
@@ -972,7 +973,7 @@
</translation>
<translation id="859285277496340001">Cheti hakibainishi utaratibu wa kuangalia iwapo kimekataliwa.</translation>
<translation id="8620436878122366504">Wazazi wako bado hawajaiidhinisha</translation>
-<translation id="8625384913736129811">Hifadhi Kadi Hii kwenye Kifaa Hiki</translation>
+<translation id="8625384913736129811">Hifadhi Maelezo ya Kadi Hii kwenye Kifaa Hiki</translation>
<translation id="8647750283161643317">Rudisha zote katika chaguo-msingi</translation>
<translation id="8660471606262461360">Kutoka Google Payments</translation>
<translation id="8688672835843460752">Inapatikana</translation>
diff --git a/chromium/components/strings/components_strings_ta.xtb b/chromium/components/strings/components_strings_ta.xtb
index dac775c912b..4b6201e4f8d 100644
--- a/chromium/components/strings/components_strings_ta.xtb
+++ b/chromium/components/strings/components_strings_ta.xtb
@@ -298,7 +298,7 @@
<translation id="3176929007561373547">பிராக்சி சர்வர் இயக்கத்தில் உள்ளது என்பதை உறுதிப்படுத்த உங்கள் பிராக்சி அமைப்புகளைச் சரிபார்க்கவும் அல்லது நெட்வொர்க் நிர்வாகியைத் தொடர்புகொள்ளவும். நீங்கள் பிராக்சி சர்வரைப் பயன்படுத்துகிறீர்கள் என்பதை நம்பவில்லை என்றால், பின்வருவதைச் செய்யவும்:<ph name="PLATFORM_TEXT" /></translation>
<translation id="320323717674993345">கட்டணம் செலுத்துவதை ரத்துசெய்</translation>
<translation id="3207960819495026254">புக்மார்க் செய்யப்பட்டது</translation>
-<translation id="3209375525920864198">சரியான அமர்வின் பெயரை உள்ளிடவும்.</translation>
+<translation id="3209375525920864198">சரியான அமர்வுப் பெயரை உள்ளிடவும்.</translation>
<translation id="3211223744486044430">அடுத்த முறை விரைவாகப் பணத்தைச் செலுத்த, இந்தக் கார்டை உங்கள் Google கணக்கிலும் இந்தச் சாதனத்திலும் சேமிக்கவும்.</translation>
<translation id="3225919329040284222">உள்ளமைந்த எதிர்பார்ப்புகளுடன் பொருந்தாத சான்றிதழை சேவையகம் வழங்கியது. சில உயர்-பாதுகாப்பு வலைத்தளங்களில் உங்களைப் பாதுகாக்கவே இந்த எதிர்பார்ப்புகள் சேர்க்கப்படுகின்றன.</translation>
<translation id="3226128629678568754">பக்கத்தை ஏற்ற தேவைப்படும் தரவை மறுமுறைச் சமர்ப்பிப்பதற்கு மீண்டும் ஏற்று என்ற பொத்தானை அழுத்துக.</translation>
@@ -628,6 +628,7 @@
<translation id="5669703222995421982">தனிப்பயனாக்கிய உள்ளடக்கத்தைப் பெறுங்கள்</translation>
<translation id="5675650730144413517">இந்தப் பக்கம் செயல்படவில்லை</translation>
<translation id="5689199277474810259">JSONக்கு ஏற்று</translation>
+<translation id="5689516760719285838">இருப்பிடம்</translation>
<translation id="5710435578057952990">இந்த தளத்தின் அடையாளம் சரிபார்க்கப்படவில்லை.</translation>
<translation id="5719499550583120431">ப்ரீபெய்டு கார்டுகள் ஏற்கப்படுகின்றன.</translation>
<translation id="5720705177508910913">நடப்புப் பயனர்</translation>
@@ -745,7 +746,7 @@
<translation id="6753269504797312559">கொள்கை மதிப்பு</translation>
<translation id="6757797048963528358">உங்கள் சாதனம் உறக்கநிலைக்குச் சென்றது.</translation>
<translation id="6778737459546443941">இன்னும் உங்கள் பெற்றோர் அனுமதிக்கவில்லை</translation>
-<translation id="681021252041861472">அவசியமான புலம்</translation>
+<translation id="681021252041861472">அவசியம்</translation>
<translation id="6810899417690483278">தனிப்பயனாக்கல் ஐடி</translation>
<translation id="6820686453637990663">CVC</translation>
<translation id="6824266427216888781">மண்டலங்களின் தரவை ஏற்ற முடியவில்லை</translation>
diff --git a/chromium/components/strings/components_strings_te.xtb b/chromium/components/strings/components_strings_te.xtb
index 359cecbe8c7..9b652d8c237 100644
--- a/chromium/components/strings/components_strings_te.xtb
+++ b/chromium/components/strings/components_strings_te.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">వ్యక్తిగతీకరించిన కంటెంట్‌ను పొందండి</translation>
<translation id="5675650730144413517">ఈ పేజీ పని చేయడం లేదు</translation>
<translation id="5689199277474810259">JSONకు ఎగుమతి చేయి</translation>
+<translation id="5689516760719285838">స్థానం</translation>
<translation id="5710435578057952990">ఈ వెబ్‍‌సైట్ యొక్క గుర్తింపు నిర్థారించబడలేదు.</translation>
<translation id="5719499550583120431">ప్రీపెయిడ్ కార్డ్‌లు ఆమోదించబడతాయి.</translation>
<translation id="5720705177508910913">ప్రస్తుత వినియోగదారు</translation>
diff --git a/chromium/components/strings/components_strings_th.xtb b/chromium/components/strings/components_strings_th.xtb
index 8cac76e7211..15ceff7d372 100644
--- a/chromium/components/strings/components_strings_th.xtb
+++ b/chromium/components/strings/components_strings_th.xtb
@@ -398,7 +398,7 @@
<translation id="3759461132968374835">คุณไม่ได้รายงานข้อขัดข้องเมื่อเร็วๆ นี้ ข้อขัดข้องที่เกิดขึ้นเมื่อปิดใช้งานการรายงานข้อขัดข้อง จะไม่ปรากฏที่นี่</translation>
<translation id="3765032636089507299">หน้า Google Safe Browsing อยู่ในระหว่างการปรับปรุง</translation>
<translation id="3778403066972421603">คุณต้องการบันทึกบัตรนี้ลงในบัญชี Google และในอุปกรณ์นี้ไหม</translation>
-<translation id="3783418713923659662">MasterCard</translation>
+<translation id="3783418713923659662">Mastercard</translation>
<translation id="3787705759683870569">หมดอายุ <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
<translation id="3808375843007691220">คำเตือน: จากนี้ไปจะเป็นฟีเจอร์ทดลอง!</translation>
<translation id="382518646247711829">หากคุณใช้พร็อกซีเซิร์ฟเวอร์...</translation>
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">รับเนื้อหาที่ปรับเปลี่ยนในแบบของคุณ</translation>
<translation id="5675650730144413517">หน้านี้ใช้ไม่ได้</translation>
<translation id="5689199277474810259">ส่งออกไปยัง JSON</translation>
+<translation id="5689516760719285838">ตำแหน่ง</translation>
<translation id="5710435578057952990">ข้อมูลประจำตัวของเว็บไซต์นี้ยังไม่ได้รับการยืนยัน</translation>
<translation id="5719499550583120431">รับบัตรเติมเงิน</translation>
<translation id="5720705177508910913">ผู้ใช้ปัจจุบัน</translation>
diff --git a/chromium/components/strings/components_strings_tr.xtb b/chromium/components/strings/components_strings_tr.xtb
index 729e03efe9d..f3a88ce418e 100644
--- a/chromium/components/strings/components_strings_tr.xtb
+++ b/chromium/components/strings/components_strings_tr.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Kişiselleştirilmiş içerikler alma</translation>
<translation id="5675650730144413517">Bu sayfa çalışmıyor</translation>
<translation id="5689199277474810259">JSON'a aktar</translation>
+<translation id="5689516760719285838">Konum</translation>
<translation id="5710435578057952990">Bu web sitesinin kimliği doğrulanmadı.</translation>
<translation id="5719499550583120431">Ön ödemeli kartlar kabul edilir.</translation>
<translation id="5720705177508910913">Geçerli kullanıcı</translation>
@@ -749,7 +750,7 @@
<translation id="6753269504797312559">Politika değeri</translation>
<translation id="6757797048963528358">Cihazınız uyku moduna geçti.</translation>
<translation id="6778737459546443941">Ebeveyniniz henüz onaylamadı</translation>
-<translation id="681021252041861472">Zorunlu Alan</translation>
+<translation id="681021252041861472">Gerekli Alan</translation>
<translation id="6810899417690483278">Özelleştirme Kimliği</translation>
<translation id="6820686453637990663">CVC</translation>
<translation id="6824266427216888781">Bölge verileri yüklenemedi</translation>
diff --git a/chromium/components/strings/components_strings_uk.xtb b/chromium/components/strings/components_strings_uk.xtb
index 675c60c89ac..8c3c4673d96 100644
--- a/chromium/components/strings/components_strings_uk.xtb
+++ b/chromium/components/strings/components_strings_uk.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Отримувати персоналізовані пропозиції</translation>
<translation id="5675650730144413517">Сторінка не працює</translation>
<translation id="5689199277474810259">Експортувати у формат JSON</translation>
+<translation id="5689516760719285838">Місцезнаходження</translation>
<translation id="5710435578057952990">Ідентифікаційну інформацію цього веб-сайта не було перевірено.</translation>
<translation id="5719499550583120431">Передплачені картки, які приймаються.</translation>
<translation id="5720705177508910913">Поточний користувач</translation>
@@ -886,7 +887,7 @@
<translation id="7812922009395017822">Mir</translation>
<translation id="7813600968533626083">Видалити дані для автозаповнення форм із Chrome?</translation>
<translation id="7815407501681723534">Знайдено результатів за запитом "<ph name="SEARCH_STRING" />": <ph name="NUMBER_OF_RESULTS" /> <ph name="SEARCH_RESULTS" /></translation>
-<translation id="7818867226424560206">Керування правилами</translation>
+<translation id="7818867226424560206">Правила</translation>
<translation id="782886543891417279">Можливо, щоб під’єднатися до цієї мережі Wi-Fi (<ph name="WIFI_NAME" />), потрібно відвідати її сторінку входу.</translation>
<translation id="785549533363645510">Навіть у режимі анонімного перегляду ваш роботодавець, постачальник послуг Інтернету чи веб-сайти, які ви відвідуєте, можуть бачити, що ви переглядаєте.</translation>
<translation id="7855695075675558090"><ph name="TOTAL_LABEL" />: <ph name="FORMATTED_TOTAL_AMOUNT" /> <ph name="CURRENCY_CODE" /></translation>
diff --git a/chromium/components/strings/components_strings_vi.xtb b/chromium/components/strings/components_strings_vi.xtb
index 73b39ad77d1..64c67cd9ead 100644
--- a/chromium/components/strings/components_strings_vi.xtb
+++ b/chromium/components/strings/components_strings_vi.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">Nhận nội dung được cá nhân hóa</translation>
<translation id="5675650730144413517">Trang này hiện không hoạt động</translation>
<translation id="5689199277474810259">Xuất sang định dạng JSON</translation>
+<translation id="5689516760719285838">Vị trí</translation>
<translation id="5710435578057952990">Nhận dạng trang web này chưa được xác minh.</translation>
<translation id="5719499550583120431">Thẻ trả trước được chấp nhận.</translation>
<translation id="5720705177508910913">Người dùng hiện tại</translation>
diff --git a/chromium/components/strings/components_strings_zh-CN.xtb b/chromium/components/strings/components_strings_zh-CN.xtb
index 9370b652270..f81e5b4fe5b 100644
--- a/chromium/components/strings/components_strings_zh-CN.xtb
+++ b/chromium/components/strings/components_strings_zh-CN.xtb
@@ -77,7 +77,7 @@
<translation id="1549470594296187301">必须启用 JavaScript 才能使用此功能。</translation>
<translation id="1559528461873125649">不存在此类文件或目录</translation>
<translation id="1583429793053364125">显示此网页时出了点问题。</translation>
-<translation id="1590457302292452960">生成一个安全系数高的密码…</translation>
+<translation id="1590457302292452960">生成安全系数高的密码…</translation>
<translation id="1592005682883173041">本地数据访问权限</translation>
<translation id="1594030484168838125">选择</translation>
<translation id="1620510694547887537">摄像头</translation>
@@ -628,6 +628,7 @@
<translation id="5669703222995421982">获取个性化内容</translation>
<translation id="5675650730144413517">该网页无法正常运作</translation>
<translation id="5689199277474810259">导出为 JSON 格式</translation>
+<translation id="5689516760719285838">位置</translation>
<translation id="5710435578057952990">此网站尚未经过身份验证。</translation>
<translation id="5719499550583120431">接受预付卡。</translation>
<translation id="5720705177508910913">当前用户</translation>
diff --git a/chromium/components/strings/components_strings_zh-TW.xtb b/chromium/components/strings/components_strings_zh-TW.xtb
index 1c0b304b1f5..25f5e47dc64 100644
--- a/chromium/components/strings/components_strings_zh-TW.xtb
+++ b/chromium/components/strings/components_strings_zh-TW.xtb
@@ -631,6 +631,7 @@
<translation id="5669703222995421982">取得個人化內容</translation>
<translation id="5675650730144413517">這個網頁無法正常運作</translation>
<translation id="5689199277474810259">以 JSON 格式匯出</translation>
+<translation id="5689516760719285838">位置</translation>
<translation id="5710435578057952990">此網頁的身分未經驗證。</translation>
<translation id="5719499550583120431">接受預付卡。</translation>
<translation id="5720705177508910913">目前使用者</translation>
diff --git a/chromium/components/ukm/test_ukm_recorder.cc b/chromium/components/ukm/test_ukm_recorder.cc
index 0a3fcd16a6e..5f9e9e60bb6 100644
--- a/chromium/components/ukm/test_ukm_recorder.cc
+++ b/chromium/components/ukm/test_ukm_recorder.cc
@@ -58,6 +58,12 @@ TestUkmRecorder::TestUkmRecorder() {
TestUkmRecorder::~TestUkmRecorder() {
};
+bool TestUkmRecorder::ShouldRestrictToWhitelistedSourceIds() const {
+ // In tests, we want to record all source ids (not just hose that are
+ // whitelisted).
+ return false;
+}
+
std::set<ukm::SourceId> TestUkmRecorder::GetSourceIds() const {
std::set<ukm::SourceId> result;
for (const auto& kv : sources()) {
diff --git a/chromium/components/ukm/test_ukm_recorder.h b/chromium/components/ukm/test_ukm_recorder.h
index b14f9d79cdb..5bce2e87c39 100644
--- a/chromium/components/ukm/test_ukm_recorder.h
+++ b/chromium/components/ukm/test_ukm_recorder.h
@@ -27,6 +27,8 @@ class TestUkmRecorder : public UkmRecorderImpl {
TestUkmRecorder();
~TestUkmRecorder() override;
+ bool ShouldRestrictToWhitelistedSourceIds() const override;
+
size_t sources_count() const { return sources().size(); }
// Get all SourceIds with any data associated with them.
diff --git a/chromium/components/ukm/ukm_recorder_impl.cc b/chromium/components/ukm/ukm_recorder_impl.cc
index cb670812ebf..43adec45b40 100644
--- a/chromium/components/ukm/ukm_recorder_impl.cc
+++ b/chromium/components/ukm/ukm_recorder_impl.cc
@@ -13,6 +13,7 @@
#include "components/metrics/proto/ukm/report.pb.h"
#include "components/metrics/proto/ukm/source.pb.h"
#include "components/ukm/ukm_source.h"
+#include "services/metrics/public/cpp/ukm_source_id.h"
namespace ukm {
@@ -25,6 +26,11 @@ std::string GetWhitelistEntries() {
"WhitelistEntries");
}
+bool IsWhitelistedSourceId(SourceId source_id) {
+ return (static_cast<int64_t>(source_id) &
+ static_cast<int64_t>(SourceIdType::NAVIGATION_ID)) != 0;
+}
+
// Gets the maximum number of Sources we'll keep in memory before discarding any
// new ones being added.
size_t GetMaxSources() {
@@ -33,6 +39,14 @@ size_t GetMaxSources() {
kUkmFeature, "MaxSources", kDefaultMaxSources));
}
+// Gets the maximum number of unferenced Sources kept after purging sources
+// that were added to the log.
+size_t GetMaxKeptSources() {
+ constexpr size_t kDefaultMaxKeptSources = 100;
+ return static_cast<size_t>(base::GetFieldTrialParamByFeatureAsInt(
+ kUkmFeature, "MaxKeptSources", kDefaultMaxKeptSources));
+}
+
// Gets the maximum number of Entries we'll keep in memory before discarding any
// new ones being added.
size_t GetMaxEntries() {
@@ -101,21 +115,61 @@ void UkmRecorderImpl::Purge() {
}
void UkmRecorderImpl::StoreRecordingsInReport(Report* report) {
- for (const auto& kv : sources_) {
+ std::set<SourceId> ids_seen;
+ for (const auto& entry : entries_) {
+ Entry* proto_entry = report->add_entries();
+ StoreEntryProto(*entry, proto_entry);
+ ids_seen.insert(entry->source_id);
+ }
+
+ std::vector<std::unique_ptr<UkmSource>> unsent_sources;
+ for (auto& kv : sources_) {
+ // If the source id is not whitelisted, don't send it unless it has
+ // associated entries. Note: If ShouldRestrictToWhitelistedSourceIds() is
+ // true, this logic will not be hit as the source would have already been
+ // filtered in UpdateSourceURL().
+ if (!IsWhitelistedSourceId(kv.first) &&
+ !base::ContainsKey(ids_seen, kv.first)) {
+ unsent_sources.push_back(std::move(kv.second));
+ continue;
+ }
Source* proto_source = report->add_sources();
kv.second->PopulateProto(proto_source);
if (!ShouldRecordInitialUrl())
proto_source->clear_initial_url();
}
- for (const auto& entry : entries_) {
- Entry* proto_entry = report->add_entries();
- StoreEntryProto(*entry, proto_entry);
- }
- UMA_HISTOGRAM_COUNTS_1000("UKM.Sources.SerializedCount", sources_.size());
+ UMA_HISTOGRAM_COUNTS_1000("UKM.Sources.SerializedCount",
+ sources_.size() - unsent_sources.size());
UMA_HISTOGRAM_COUNTS_1000("UKM.Entries.SerializedCount", entries_.size());
+ UMA_HISTOGRAM_COUNTS_1000("UKM.Sources.UnsentSourcesCount",
+ unsent_sources.size());
sources_.clear();
entries_.clear();
+
+ // Keep at most |max_kept_sources|, prioritizing most-recent entries (by
+ // creation time).
+ const size_t max_kept_sources = GetMaxKeptSources();
+ if (unsent_sources.size() > max_kept_sources) {
+ std::nth_element(unsent_sources.begin(),
+ unsent_sources.begin() + max_kept_sources,
+ unsent_sources.end(),
+ [](const std::unique_ptr<ukm::UkmSource>& lhs,
+ const std::unique_ptr<ukm::UkmSource>& rhs) {
+ return lhs->creation_time() > rhs->creation_time();
+ });
+ unsent_sources.resize(max_kept_sources);
+ }
+
+ for (auto& source : unsent_sources) {
+ sources_.emplace(source->id(), std::move(source));
+ }
+ UMA_HISTOGRAM_COUNTS_1000("UKM.Sources.KeptSourcesCount", sources_.size());
+}
+
+bool UkmRecorderImpl::ShouldRestrictToWhitelistedSourceIds() const {
+ return base::GetFieldTrialParamByFeatureAsBool(
+ kUkmFeature, "RestrictToWhitelistedSourceIds", true);
}
void UkmRecorderImpl::UpdateSourceURL(ukm::SourceId source_id,
@@ -127,6 +181,12 @@ void UkmRecorderImpl::UpdateSourceURL(ukm::SourceId source_id,
return;
}
+ if (ShouldRestrictToWhitelistedSourceIds() &&
+ !IsWhitelistedSourceId(source_id)) {
+ RecordDroppedSource(DroppedDataReason::NOT_WHITELISTED);
+ return;
+ }
+
// Update the pre-existing source if there is any. This happens when the
// initial URL is different from the committed URL for the same source, e.g.,
// when there is redirection.
diff --git a/chromium/components/ukm/ukm_recorder_impl.h b/chromium/components/ukm/ukm_recorder_impl.h
index 1a20ddab4d1..c3cdc8d254b 100644
--- a/chromium/components/ukm/ukm_recorder_impl.h
+++ b/chromium/components/ukm/ukm_recorder_impl.h
@@ -45,12 +45,14 @@ class UkmRecorderImpl : public UkmRecorder {
// Writes recordings into a report proto, and clears recordings.
void StoreRecordingsInReport(Report* report);
- const std::map<ukm::SourceId, std::unique_ptr<UkmSource>>& sources() const {
+ const std::map<SourceId, std::unique_ptr<UkmSource>>& sources() const {
return sources_;
}
const std::vector<mojom::UkmEntryPtr>& entries() const { return entries_; }
+ virtual bool ShouldRestrictToWhitelistedSourceIds() const;
+
private:
friend ::metrics::UkmBrowserTest;
friend ::ukm::debug::DebugPage;
@@ -63,8 +65,8 @@ class UkmRecorderImpl : public UkmRecorder {
bool recording_enabled_;
// Contains newly added sources and entries of UKM metrics which periodically
- // get serialized and cleared by BuildAndStoreLog().
- std::map<ukm::SourceId, std::unique_ptr<UkmSource>> sources_;
+ // get serialized and cleared by StoreRecordingsInReport().
+ std::map<SourceId, std::unique_ptr<UkmSource>> sources_;
std::vector<mojom::UkmEntryPtr> entries_;
// Whitelisted Entry hashes, only the ones in this set will be recorded.
diff --git a/chromium/components/ukm/ukm_service_unittest.cc b/chromium/components/ukm/ukm_service_unittest.cc
index 75b383ab3a9..4c5b80e401c 100644
--- a/chromium/components/ukm/ukm_service_unittest.cc
+++ b/chromium/components/ukm/ukm_service_unittest.cc
@@ -10,9 +10,13 @@
#include "base/hash.h"
#include "base/metrics/metrics_hashes.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_util.h"
#include "base/test/scoped_feature_list.h"
#include "base/test/test_simple_task_runner.h"
+#include "base/threading/platform_thread.h"
#include "base/threading/thread_task_runner_handle.h"
+#include "base/time/time.h"
#include "components/metrics/proto/ukm/report.pb.h"
#include "components/metrics/proto/ukm/source.pb.h"
#include "components/metrics/test_metrics_provider.h"
@@ -136,6 +140,14 @@ class UkmServiceTest : public testing::Test {
return report;
}
+ static SourceId GetWhitelistedSourceId(int64_t id) {
+ return ConvertToSourceId(id, SourceIdType::NAVIGATION_ID);
+ }
+
+ static SourceId GetNonWhitelistedSourceId(int64_t id) {
+ return ConvertToSourceId(id, SourceIdType::UKM);
+ }
+
protected:
TestingPrefServiceSimple prefs_;
metrics::TestMetricsServiceClient client_;
@@ -173,7 +185,7 @@ TEST_F(UkmServiceTest, PersistAndPurge) {
service.EnableRecording();
service.EnableReporting();
- ukm::SourceId id = UkmRecorder::GetNewSourceID();
+ SourceId id = GetWhitelistedSourceId(0);
recorder.UpdateSourceURL(id, GURL("https://google.com/foobar"));
// Should init, generate a log, and start an upload for source.
task_runner_->RunPendingTasks();
@@ -199,7 +211,7 @@ TEST_F(UkmServiceTest, SourceSerialization) {
service.EnableRecording();
service.EnableReporting();
- ukm::SourceId id = UkmRecorder::GetNewSourceID();
+ ukm::SourceId id = GetWhitelistedSourceId(0);
recorder.UpdateSourceURL(id, GURL("https://google.com/initial"));
recorder.UpdateSourceURL(id, GURL("https://google.com/intermediate"));
recorder.UpdateSourceURL(id, GURL("https://google.com/foobar"));
@@ -226,7 +238,7 @@ TEST_F(UkmServiceTest, EntryBuilderAndSerialization) {
service.EnableRecording();
service.EnableReporting();
- ukm::SourceId id = UkmRecorder::GetNewSourceID();
+ ukm::SourceId id = GetWhitelistedSourceId(0);
recorder.UpdateSourceURL(id, GURL("https://google.com/foobar"));
{
std::unique_ptr<UkmEntryBuilder> foo_builder =
@@ -290,7 +302,7 @@ TEST_F(UkmServiceTest, AddEntryWithEmptyMetrics) {
service.EnableRecording();
service.EnableReporting();
- ukm::SourceId id = UkmRecorder::GetNewSourceID();
+ ukm::SourceId id = GetWhitelistedSourceId(0);
recorder.UpdateSourceURL(id, GURL("https://google.com/foobar"));
{ ::ukm::builders::PageLoad(id).Record(&service); }
@@ -317,7 +329,7 @@ TEST_F(UkmServiceTest, MetricsProviderTest) {
service.EnableRecording();
service.EnableReporting();
- ukm::SourceId id = UkmRecorder::GetNewSourceID();
+ ukm::SourceId id = GetWhitelistedSourceId(0);
recorder.UpdateSourceURL(id, GURL("https://google.com/foobar"));
{
::ukm::builders::PageLoad(id)
@@ -350,7 +362,7 @@ TEST_F(UkmServiceTest, LogsUploadedOnlyWhenHavingSourcesOrEntries) {
service.Flush();
EXPECT_EQ(GetPersistedLogCount(), 0);
- ukm::SourceId id = UkmRecorder::GetNewSourceID();
+ ukm::SourceId id = GetWhitelistedSourceId(0);
recorder.UpdateSourceURL(id, GURL("https://google.com/foobar"));
// Includes a Source, so will persist.
service.Flush();
@@ -405,7 +417,7 @@ TEST_F(UkmServiceTest, RecordInitialUrl) {
service.EnableRecording();
service.EnableReporting();
- ukm::SourceId id = UkmRecorder::GetNewSourceID();
+ ukm::SourceId id = GetWhitelistedSourceId(0);
recorder.UpdateSourceURL(id, GURL("https://google.com/initial"));
recorder.UpdateSourceURL(id, GURL("https://google.com/intermediate"));
recorder.UpdateSourceURL(id, GURL("https://google.com/foobar"));
@@ -427,6 +439,55 @@ TEST_F(UkmServiceTest, RecordInitialUrl) {
}
}
+TEST_F(UkmServiceTest, RestrictToWhitelistedSourceIds) {
+ for (bool restrict_to_whitelisted_source_ids : {true, false}) {
+ base::FieldTrialList field_trial_list(nullptr /* entropy_provider */);
+ ScopedUkmFeatureParams params(
+ base::FeatureList::OVERRIDE_ENABLE_FEATURE,
+ {{"RestrictToWhitelistedSourceIds",
+ restrict_to_whitelisted_source_ids ? "true" : "false"}});
+
+ ClearPrefs();
+ UkmService service(&prefs_, &client_);
+ TestRecordingHelper recorder(&service);
+ EXPECT_EQ(GetPersistedLogCount(), 0);
+ service.Initialize();
+ task_runner_->RunUntilIdle();
+ service.EnableRecording();
+ service.EnableReporting();
+
+ ukm::SourceId id1 = GetWhitelistedSourceId(0);
+ recorder.UpdateSourceURL(id1, GURL("https://other.com/"));
+ recorder.GetEntryBuilder(id1, "FakeEntry");
+
+ // Create a non-navigation-based sourceid, which should not be whitelisted.
+ ukm::SourceId id2 = UkmRecorder::GetNewSourceID();
+ recorder.UpdateSourceURL(id2, GURL("https://example.com/"));
+ recorder.GetEntryBuilder(id2, "FakeEntry");
+
+ service.Flush();
+ EXPECT_EQ(GetPersistedLogCount(), 1);
+ Report proto_report = GetPersistedReport();
+ EXPECT_GE(proto_report.sources_size(), 1);
+
+ // The whitelisted source should always be recorded.
+ const Source& proto_source1 = proto_report.sources(0);
+ EXPECT_EQ(id1, proto_source1.id());
+ EXPECT_EQ(GURL("https://other.com/").spec(), proto_source1.url());
+
+ // The non-whitelisted source should only be recorded if we aren't
+ // restricted to whitelisted source ids.
+ if (restrict_to_whitelisted_source_ids) {
+ EXPECT_EQ(1, proto_report.sources_size());
+ } else {
+ EXPECT_EQ(2, proto_report.sources_size());
+ const Source& proto_source2 = proto_report.sources(1);
+ EXPECT_EQ(id2, proto_source2.id());
+ EXPECT_EQ(GURL("https://example.com/").spec(), proto_source2.url());
+ }
+ }
+}
+
TEST_F(UkmServiceTest, RecordSessionId) {
ClearPrefs();
UkmService service(&prefs_, &client_);
@@ -437,7 +498,7 @@ TEST_F(UkmServiceTest, RecordSessionId) {
service.EnableRecording();
service.EnableReporting();
- auto id = UkmRecorder::GetNewSourceID();
+ auto id = GetWhitelistedSourceId(0);
recorder.UpdateSourceURL(id, GURL("https://google.com/foobar"));
service.Flush();
@@ -463,11 +524,11 @@ TEST_F(UkmServiceTest, SourceSize) {
service.EnableRecording();
service.EnableReporting();
- auto id = UkmRecorder::GetNewSourceID();
+ auto id = GetWhitelistedSourceId(0);
recorder.UpdateSourceURL(id, GURL("https://google.com/foobar1"));
- id = UkmRecorder::GetNewSourceID();
+ id = GetWhitelistedSourceId(1);
recorder.UpdateSourceURL(id, GURL("https://google.com/foobar2"));
- id = UkmRecorder::GetNewSourceID();
+ id = GetWhitelistedSourceId(2);
recorder.UpdateSourceURL(id, GURL("https://google.com/foobar3"));
service.Flush();
@@ -487,7 +548,7 @@ TEST_F(UkmServiceTest, PurgeMidUpload) {
task_runner_->RunUntilIdle();
service.EnableRecording();
service.EnableReporting();
- auto id = UkmRecorder::GetNewSourceID();
+ auto id = GetWhitelistedSourceId(0);
recorder.UpdateSourceURL(id, GURL("https://google.com/foobar1"));
// Should init, generate a log, and start an upload.
task_runner_->RunPendingTasks();
@@ -515,7 +576,7 @@ TEST_F(UkmServiceTest, WhitelistEntryTest) {
service.EnableRecording();
service.EnableReporting();
- auto id = UkmRecorder::GetNewSourceID();
+ auto id = GetWhitelistedSourceId(0);
recorder.UpdateSourceURL(id, GURL("https://google.com/foobar1"));
{
@@ -561,7 +622,7 @@ TEST_F(UkmServiceTest, SourceURLLength) {
service.EnableRecording();
service.EnableReporting();
- auto id = UkmRecorder::GetNewSourceID();
+ auto id = GetWhitelistedSourceId(0);
// This URL is too long to be recorded fully.
const std::string long_string = "https://" + std::string(10000, 'a');
@@ -576,4 +637,87 @@ TEST_F(UkmServiceTest, SourceURLLength) {
EXPECT_EQ("URLTooLong", proto_source.url());
}
+TEST_F(UkmServiceTest, UnreferencedNonWhitelistedSources) {
+ for (bool restrict_to_whitelisted_source_ids : {true, false}) {
+ base::FieldTrialList field_trial_list(nullptr /* entropy_provider */);
+ // Set a threshold of number of Sources via Feature Params.
+ ScopedUkmFeatureParams params(
+ base::FeatureList::OVERRIDE_ENABLE_FEATURE,
+ {{"MaxKeptSources", "3"},
+ {"WhitelistEntries", "EntryA,EntryB"},
+ {"RestrictToWhitelistedSourceIds",
+ restrict_to_whitelisted_source_ids ? "true" : "false"}});
+
+ ClearPrefs();
+ UkmService service(&prefs_, &client_);
+ TestRecordingHelper recorder(&service);
+ EXPECT_EQ(0, GetPersistedLogCount());
+ service.Initialize();
+ task_runner_->RunUntilIdle();
+ service.EnableRecording();
+ service.EnableReporting();
+
+ std::vector<SourceId> ids;
+ base::TimeTicks last_time = base::TimeTicks::Now();
+ for (int i = 0; i < 6; ++i) {
+ // Wait until base::TimeTicks::Now() no longer equals |last_time|. This
+ // ensures each source has a unique timestamp to avoid flakes. Should take
+ // between 1-15ms per documented resolution of base::TimeTicks.
+ while (base::TimeTicks::Now() == last_time) {
+ base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1));
+ }
+
+ ids.push_back(GetNonWhitelistedSourceId(i));
+ recorder.UpdateSourceURL(
+ ids.back(), GURL("https://google.com/foobar" + base::IntToString(i)));
+ last_time = base::TimeTicks::Now();
+ }
+
+ // Add whitelisted entries for 0, 2 and non-whitelisted entries for 2, 3.
+ recorder.GetEntryBuilder(ids[0], "EntryA")->AddMetric("Metric", 500);
+ recorder.GetEntryBuilder(ids[2], "EntryB")->AddMetric("Metric", 500);
+ recorder.GetEntryBuilder(ids[2], "EntryC")->AddMetric("Metric", 500);
+ recorder.GetEntryBuilder(ids[3], "EntryC")->AddMetric("Metric", 500);
+
+ service.Flush();
+ EXPECT_EQ(1, GetPersistedLogCount());
+ auto proto_report = GetPersistedReport();
+
+ if (restrict_to_whitelisted_source_ids) {
+ ASSERT_EQ(0, proto_report.sources_size());
+ } else {
+ ASSERT_EQ(2, proto_report.sources_size());
+ EXPECT_EQ(ids[0], proto_report.sources(0).id());
+ EXPECT_EQ("https://google.com/foobar0", proto_report.sources(0).url());
+ EXPECT_EQ(ids[2], proto_report.sources(1).id());
+ EXPECT_EQ("https://google.com/foobar2", proto_report.sources(1).url());
+ }
+
+ // Since MaxKeptSources is 3, only Sources 5, 4, 3 should be retained.
+ // Log entries under 0, 1, 3 and 4. Log them in reverse order - which
+ // shouldn't affect source ordering in the output.
+ // - Source 0 should not be re-transmitted since it was sent before.
+ // - Source 1 should not be transmitted due to MaxKeptSources param.
+ // - Sources 3 and 4 should be transmitted since they were not sent before.
+ recorder.GetEntryBuilder(ids[4], "EntryA")->AddMetric("Metric", 500);
+ recorder.GetEntryBuilder(ids[3], "EntryA")->AddMetric("Metric", 500);
+ recorder.GetEntryBuilder(ids[1], "EntryA")->AddMetric("Metric", 500);
+ recorder.GetEntryBuilder(ids[0], "EntryA")->AddMetric("Metric", 500);
+
+ service.Flush();
+ EXPECT_EQ(2, GetPersistedLogCount());
+ proto_report = GetPersistedReport();
+
+ if (restrict_to_whitelisted_source_ids) {
+ ASSERT_EQ(0, proto_report.sources_size());
+ } else {
+ ASSERT_EQ(2, proto_report.sources_size());
+ EXPECT_EQ(ids[3], proto_report.sources(0).id());
+ EXPECT_EQ("https://google.com/foobar3", proto_report.sources(0).url());
+ EXPECT_EQ(ids[4], proto_report.sources(1).id());
+ EXPECT_EQ("https://google.com/foobar4", proto_report.sources(1).url());
+ }
+ }
+}
+
} // namespace ukm
diff --git a/chromium/components/ukm/ukm_source.cc b/chromium/components/ukm/ukm_source.cc
index 5324048fc28..4a701495ecb 100644
--- a/chromium/components/ukm/ukm_source.cc
+++ b/chromium/components/ukm/ukm_source.cc
@@ -39,7 +39,9 @@ void UkmSource::SetCustomTabVisible(bool visible) {
g_custom_tab_state = visible ? kCustomTabTrue : kCustomTabFalse;
}
-UkmSource::UkmSource() : custom_tab_state_(g_custom_tab_state) {}
+UkmSource::UkmSource()
+ : custom_tab_state_(g_custom_tab_state),
+ creation_time_(base::TimeTicks::Now()) {}
UkmSource::~UkmSource() = default;
diff --git a/chromium/components/ukm/ukm_source.h b/chromium/components/ukm/ukm_source.h
index 6492cd1cf5b..e053a1f22c7 100644
--- a/chromium/components/ukm/ukm_source.h
+++ b/chromium/components/ukm/ukm_source.h
@@ -35,6 +35,10 @@ class UkmSource {
const GURL& initial_url() const { return initial_url_; }
const GURL& url() const { return url_; }
+ // The object creation time. This is for internal purposes only and is not
+ // intended to be anything useful for UKM clients.
+ const base::TimeTicks creation_time() const { return creation_time_; }
+
// Sets the URL for this source. Should be invoked when a source is
// initialized.
void set_url(const GURL& url) { url_ = url; }
@@ -66,6 +70,9 @@ class UkmSource {
// the metric was created.
const CustomTabState custom_tab_state_;
+ // When this object was created.
+ const base::TimeTicks creation_time_;
+
DISALLOW_COPY_AND_ASSIGN(UkmSource);
};