diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-02-04 17:20:24 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-02-12 08:15:25 +0000 |
commit | 8fa0776f1f79e91fc9c0b9c1ba11a0a29c05196b (patch) | |
tree | 788d8d7549712682703a0310ca4a0f0860d4802b /chromium/components/android_autofill | |
parent | 606d85f2a5386472314d39923da28c70c60dc8e7 (diff) | |
download | qtwebengine-chromium-8fa0776f1f79e91fc9c0b9c1ba11a0a29c05196b.tar.gz |
BASELINE: Update Chromium to 98.0.4758.90
Change-Id: Ib7c41539bf8a8e0376bd639f27d68294de90f3c8
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/components/android_autofill')
12 files changed, 47 insertions, 63 deletions
diff --git a/chromium/components/android_autofill/DEPS b/chromium/components/android_autofill/DEPS index a0d14e6ba50..730952a3e13 100644 --- a/chromium/components/android_autofill/DEPS +++ b/chromium/components/android_autofill/DEPS @@ -4,3 +4,9 @@ include_rules = [ "+content/public/browser", "+ui", ] + +specific_include_rules = { + "autofill_provider_unittest.cc" : [ + "+content/public/test", + ], +} diff --git a/chromium/components/android_autofill/browser/BUILD.gn b/chromium/components/android_autofill/browser/BUILD.gn index d80b56fd847..78122578fc7 100644 --- a/chromium/components/android_autofill/browser/BUILD.gn +++ b/chromium/components/android_autofill/browser/BUILD.gn @@ -83,6 +83,7 @@ source_set("unit_tests") { sources = [ "autofill_provider_unittest.cc" ] deps = [ ":test_support", + "//content/test:test_support", "//testing/gmock", "//testing/gtest", ] diff --git a/chromium/components/android_autofill/browser/android_autofill_manager.h b/chromium/components/android_autofill/browser/android_autofill_manager.h index 87c386912ad..0a1896194f0 100644 --- a/chromium/components/android_autofill/browser/android_autofill_manager.h +++ b/chromium/components/android_autofill/browser/android_autofill_manager.h @@ -5,6 +5,7 @@ #ifndef COMPONENTS_ANDROID_AUTOFILL_BROWSER_ANDROID_AUTOFILL_MANAGER_H_ #define COMPONENTS_ANDROID_AUTOFILL_BROWSER_ANDROID_AUTOFILL_MANAGER_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "components/autofill/core/browser/autofill_manager.h" #include "components/autofill/core/common/dense_set.h" @@ -113,7 +114,7 @@ class AndroidAutofillManager : public AutofillManager { AutofillProvider* GetAutofillProvider(); bool has_server_prediction_ = false; - AutofillProvider* autofill_provider_for_testing_ = nullptr; + raw_ptr<AutofillProvider> autofill_provider_for_testing_ = nullptr; base::WeakPtrFactory<AndroidAutofillManager> weak_ptr_factory_{this}; }; diff --git a/chromium/components/android_autofill/browser/autofill_provider.cc b/chromium/components/android_autofill/browser/autofill_provider.cc index 91e386f62bb..8a0483d55d9 100644 --- a/chromium/components/android_autofill/browser/autofill_provider.cc +++ b/chromium/components/android_autofill/browser/autofill_provider.cc @@ -25,7 +25,7 @@ void AutofillProvider::set_is_download_manager_disabled_for_testing() { } AutofillProvider::AutofillProvider(content::WebContents* web_contents) - : web_contents_(web_contents) { + : content::WebContentsUserData<AutofillProvider>(*web_contents) { web_contents->SetUserData(UserDataKey(), base::WrapUnique(this)); } diff --git a/chromium/components/android_autofill/browser/autofill_provider.h b/chromium/components/android_autofill/browser/autofill_provider.h index 213cb4b0c06..dca4a6b7fb8 100644 --- a/chromium/components/android_autofill/browser/autofill_provider.h +++ b/chromium/components/android_autofill/browser/autofill_provider.h @@ -5,6 +5,7 @@ #ifndef COMPONENTS_ANDROID_AUTOFILL_BROWSER_AUTOFILL_PROVIDER_H_ #define COMPONENTS_ANDROID_AUTOFILL_BROWSER_AUTOFILL_PROVIDER_H_ +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "components/autofill/core/common/form_data.h" #include "components/autofill/core/common/mojom/autofill_types.mojom.h" @@ -101,16 +102,9 @@ class AutofillProvider : public content::WebContentsUserData<AutofillProvider> { explicit AutofillProvider(content::WebContents* web_contents); friend class content::WebContentsUserData<AutofillProvider>; -#ifdef UNIT_TEST - // For the unit tests where WebContents isn't available. - AutofillProvider() = default; -#endif // UNIT_TEST - - content::WebContents* web_contents() { return web_contents_; } + content::WebContents* web_contents() { return &GetWebContents(); } private: - content::WebContents* web_contents_; - WEB_CONTENTS_USER_DATA_KEY_DECL(); }; diff --git a/chromium/components/android_autofill/browser/autofill_provider_android.cc b/chromium/components/android_autofill/browser/autofill_provider_android.cc index ec56956d55b..f8b9fe7708c 100644 --- a/chromium/components/android_autofill/browser/autofill_provider_android.cc +++ b/chromium/components/android_autofill/browser/autofill_provider_android.cc @@ -53,12 +53,6 @@ static jlong JNI_AutofillProvider_Init( AutofillProviderAndroid::Create(env, jcaller, web_contents)); } -static jboolean JNI_AutofillProvider_IsQueryServerFieldTypesEnabled( - JNIEnv* env) { - return base::FeatureList::IsEnabled( - features::kAndroidAutofillQueryServerFieldTypes); -} - // Static AutofillProviderAndroid* AutofillProviderAndroid::Create( JNIEnv* env, diff --git a/chromium/components/android_autofill/browser/autofill_provider_unittest.cc b/chromium/components/android_autofill/browser/autofill_provider_unittest.cc index 0f76356223a..05685586c9e 100644 --- a/chromium/components/android_autofill/browser/autofill_provider_unittest.cc +++ b/chromium/components/android_autofill/browser/autofill_provider_unittest.cc @@ -2,8 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/memory/raw_ptr.h" #include "components/android_autofill/browser/android_autofill_manager.h" #include "components/android_autofill/browser/test_autofill_provider.h" +#include "content/public/test/browser_task_environment.h" +#include "content/public/test/test_browser_context.h" +#include "content/public/test/web_contents_tester.h" #include "testing/gtest/include/gtest/gtest.h" namespace autofill { @@ -29,6 +33,9 @@ class AndroidAutofillManagerTestHelper : public AndroidAutofillManager { class AutofillProviderTestHelper : public TestAutofillProvider { public: + explicit AutofillProviderTestHelper(content::WebContents* web_contents) + : TestAutofillProvider(web_contents) {} + bool HasServerPrediction() const { return manager_->has_server_prediction(); } private: @@ -44,14 +51,17 @@ class AutofillProviderTestHelper : public TestAutofillProvider { void OnServerQueryRequestError(AndroidAutofillManager* manager, FormSignature form_signature) override {} - AndroidAutofillManager* manager_; + raw_ptr<AndroidAutofillManager> manager_; }; class AutofillProviderTest : public testing::Test { public: void SetUp() override { + web_contents_ = content::WebContentsTester::CreateTestWebContents( + &browser_context_, nullptr); + // Owned by WebContents. autofill_provider_test_helper_ = - std::make_unique<AutofillProviderTestHelper>(); + new AutofillProviderTestHelper(web_contents_.get()); android_autofill_manager_test_helper_ = std::make_unique<AndroidAutofillManagerTestHelper>( autofill_provider_test_helper_.get()); @@ -66,7 +76,11 @@ class AutofillProviderTest : public testing::Test { } private: - std::unique_ptr<AutofillProviderTestHelper> autofill_provider_test_helper_; + content::BrowserTaskEnvironment task_environment_; + content::TestBrowserContext browser_context_; + std::unique_ptr<content::WebContents> web_contents_; + // Owned by WebContents. + raw_ptr<AutofillProviderTestHelper> autofill_provider_test_helper_; std::unique_ptr<AndroidAutofillManagerTestHelper> android_autofill_manager_test_helper_; }; diff --git a/chromium/components/android_autofill/browser/form_data_android.cc b/chromium/components/android_autofill/browser/form_data_android.cc index 71beba4d77d..67dce6abc16 100644 --- a/chromium/components/android_autofill/browser/form_data_android.cc +++ b/chromium/components/android_autofill/browser/form_data_android.cc @@ -45,8 +45,8 @@ ScopedJavaLocalRef<jobject> FormDataAndroid::GetJavaPeer( UpdateFieldTypes(*form_structure); ScopedJavaLocalRef<jstring> jname = ConvertUTF16ToJavaString(env, form_.name); - ScopedJavaLocalRef<jstring> jhost = - ConvertUTF8ToJavaString(env, form_.url.GetOrigin().spec()); + ScopedJavaLocalRef<jstring> jhost = ConvertUTF8ToJavaString( + env, form_.url.DeprecatedGetOriginAsURL().spec()); obj = Java_FormData_createFormData(env, reinterpret_cast<intptr_t>(this), jname, jhost, form_.fields.size()); java_ref_ = JavaObjectWeakGlobalRef(env, obj); diff --git a/chromium/components/android_autofill/browser/form_field_data_android.h b/chromium/components/android_autofill/browser/form_field_data_android.h index 9ebd98884a7..1d5a8f353ff 100644 --- a/chromium/components/android_autofill/browser/form_field_data_android.h +++ b/chromium/components/android_autofill/browser/form_field_data_android.h @@ -7,6 +7,7 @@ #include "base/android/jni_weak_ref.h" #include "base/android/scoped_java_ref.h" +#include "base/memory/raw_ptr.h" #include "components/autofill/core/browser/autofill_type.h" #include "components/autofill/core/common/form_field_data.h" @@ -38,7 +39,7 @@ class FormFieldDataAndroid { std::vector<AutofillType> server_predictions_; // Not owned. - FormFieldData* field_ptr_; + raw_ptr<FormFieldData> field_ptr_; JavaObjectWeakGlobalRef java_ref_; }; diff --git a/chromium/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillProvider.java b/chromium/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillProvider.java index f09e696c20f..9cf929c4381 100644 --- a/chromium/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillProvider.java +++ b/chromium/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillProvider.java @@ -62,10 +62,6 @@ import java.util.ArrayList; public class AutofillProvider { private static final String TAG = "AutofillProvider"; - // This member is initialize at first use. Not access it directly, always through - // isQueryServerFieldTypesEnabled(). - private static Boolean sIsQueryServerFieldTypesEnabled; - private static class FocusField { public final short fieldIndex; public final Rect absBound; @@ -134,16 +130,13 @@ public class AutofillProvider { .addAttribute("label", field.mLabel) .addAttribute("ua-autofill-hints", field.mHeuristicType) .addAttribute("id", field.mId); - - if (isQueryServerFieldTypesEnabled()) { - builder.addAttribute("crowdsourcing-autofill-hints", field.getServerType()); - builder.addAttribute("computed-autofill-hints", field.getComputedType()); - // Compose multiple predictions to a string separated by ','. - String[] predictions = field.getServerPredictions(); - if (predictions != null && predictions.length > 0) { - builder.addAttribute("crowdsourcing-predictions-autofill-hints", - String.join(",", predictions)); - } + builder.addAttribute("crowdsourcing-autofill-hints", field.getServerType()); + builder.addAttribute("computed-autofill-hints", field.getComputedType()); + // Compose multiple predictions to a string separated by ','. + String[] predictions = field.getServerPredictions(); + if (predictions != null && predictions.length > 0) { + builder.addAttribute("crowdsourcing-predictions-autofill-hints", + String.join(",", predictions)); } switch (field.getControlType()) { case FormFieldData.ControlType.LIST: @@ -383,12 +376,9 @@ public class AutofillProvider { bundle.putCharSequence("VIRTUAL_STRUCTURE_PROVIDER_NAME", mProviderName); bundle.putCharSequence( "VIRTUAL_STRUCTURE_PROVIDER_VERSION", VersionConstants.PRODUCT_VERSION); - - if (isQueryServerFieldTypesEnabled()) { - AutofillHintsService autofillHintsService = mRequest.getAutofillHintsService(); - if (autofillHintsService != null) { - bundle.putBinder("AUTOFILL_HINTS_SERVICE", autofillHintsService.getBinder()); - } + AutofillHintsService autofillHintsService = mRequest.getAutofillHintsService(); + if (autofillHintsService != null) { + bundle.putBinder("AUTOFILL_HINTS_SERVICE", autofillHintsService.getBinder()); } } mRequest.fillViewStructure(structure); @@ -816,23 +806,13 @@ public class AutofillProvider { @CalledByNative private void onQueryDone(boolean success) { - if (mRequest != null) { - mRequest.onQueryDone(success); - } + if (mRequest == null) return; + mRequest.onQueryDone(success); mAutofillUMA.onServerTypeAvailable( - (success && mRequest != null) ? mRequest.mFormData : null, - /*afterSessionStarted*/ true); + success ? mRequest.mFormData : null, /*afterSessionStarted*/ true); mAutofillManager.onQueryDone(success); } - public static boolean isQueryServerFieldTypesEnabled() { - if (sIsQueryServerFieldTypesEnabled == null) { - sIsQueryServerFieldTypesEnabled = - AutofillProviderJni.get().isQueryServerFieldTypesEnabled(); - } - return sIsQueryServerFieldTypesEnabled; - } - private void forceNotifyFormValues() { if (mRequest == null) return; for (int i = 0; i < mRequest.getFieldCount(); ++i) { @@ -924,6 +904,5 @@ public class AutofillProvider { long nativeAutofillProviderAndroid, AutofillProvider caller, String value); void setAnchorViewRect(long nativeAutofillProviderAndroid, AutofillProvider caller, View anchorView, float x, float y, float width, float height); - boolean isQueryServerFieldTypesEnabled(); } } diff --git a/chromium/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillProviderUMA.java b/chromium/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillProviderUMA.java index 3f4ea071c87..f71250b0cb7 100644 --- a/chromium/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillProviderUMA.java +++ b/chromium/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillProviderUMA.java @@ -144,7 +144,7 @@ public class AutofillProviderUMA { if (mSuggestionTimeMillis != null) { recordTimesHistogram(UMA_AUTOFILL_SUGGESTION_TIME, mSuggestionTimeMillis); } - if (!mServerPredictionAvailable && AutofillProvider.isQueryServerFieldTypesEnabled()) { + if (!mServerPredictionAvailable) { RecordHistogram.recordEnumeratedHistogram( UMA_AUTOFILL_SERVER_PREDICTION_AVAILABILITY, SERVER_PREDICTION_NOT_AVAILABLE, SERVER_PREDICTION_AVAILABLE_COUNT); @@ -152,7 +152,6 @@ public class AutofillProviderUMA { } public void onServerTypeAvailable(FormData formData, boolean afterSessionStarted) { - if (!AutofillProvider.isQueryServerFieldTypesEnabled()) return; mServerPredictionAvailable = true; RecordHistogram.recordEnumeratedHistogram(UMA_AUTOFILL_SERVER_PREDICTION_AVAILABILITY, afterSessionStarted ? SERVER_PREDICTION_AVAILABLE_AFTER_SESSION_STARTS diff --git a/chromium/components/android_autofill/browser/test_autofill_provider.h b/chromium/components/android_autofill/browser/test_autofill_provider.h index 807ac439192..dcb28fa9815 100644 --- a/chromium/components/android_autofill/browser/test_autofill_provider.h +++ b/chromium/components/android_autofill/browser/test_autofill_provider.h @@ -13,11 +13,6 @@ namespace autofill { class TestAutofillProvider : public AutofillProvider { public: -#ifdef UNIT_TEST - // For unit testing only. - TestAutofillProvider() = default; -#endif // UNIT_TEST - // Create a instance owned by |web_contents|. explicit TestAutofillProvider(content::WebContents* web_contents) : AutofillProvider(web_contents) {} |