| // Copyright 2017 The Chromium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "chrome/browser/autofill/address_normalizer_factory.h" | 
 |  | 
 | #include <memory> | 
 |  | 
 | #include "build/build_config.h" | 
 | #include "chrome/browser/autofill/validation_rules_storage_factory.h" | 
 | #include "chrome/browser/browser_process.h" | 
 | #include "chrome/browser/net/system_network_context_manager.h" | 
 | #include "services/network/public/cpp/shared_url_loader_factory.h" | 
 | #include "third_party/libaddressinput/chromium/chrome_metadata_source.h" | 
 | #include "third_party/libaddressinput/chromium/chrome_storage_impl.h" | 
 |  | 
 | #if BUILDFLAG(IS_ANDROID) | 
 | #include "base/android/scoped_java_ref.h" | 
 | #include "chrome/browser/autofill/android/jni_headers/AddressNormalizerFactory_jni.h" | 
 | #endif  // BUILDFLAG(IS_ANDROID) | 
 |  | 
 | namespace autofill { | 
 |  | 
 | // static | 
 | AddressNormalizer* AddressNormalizerFactory::GetInstance() { | 
 |   static base::LazyInstance<AddressNormalizerFactory>::DestructorAtExit | 
 |       instance = LAZY_INSTANCE_INITIALIZER; | 
 |   return &(instance.Get().address_normalizer_); | 
 | } | 
 |  | 
 | AddressNormalizerFactory::AddressNormalizerFactory() | 
 |     : address_normalizer_( | 
 |           std::unique_ptr<::i18n::addressinput::Source>( | 
 |               std::make_unique<ChromeMetadataSource>( | 
 |                   I18N_ADDRESS_VALIDATION_DATA_URL, | 
 |                   g_browser_process->system_network_context_manager() | 
 |                       ? g_browser_process->system_network_context_manager() | 
 |                             ->GetSharedURLLoaderFactory() | 
 |                       : nullptr)), | 
 |           ValidationRulesStorageFactory::CreateStorage(), | 
 |           g_browser_process->GetApplicationLocale()) {} | 
 |  | 
 | AddressNormalizerFactory::~AddressNormalizerFactory() = default; | 
 |  | 
 | #if BUILDFLAG(IS_ANDROID) | 
 | static base::android::ScopedJavaLocalRef<jobject> | 
 | JNI_AddressNormalizerFactory_GetInstance(JNIEnv* env) { | 
 |   return AddressNormalizerFactory::GetInstance()->GetJavaObject(); | 
 | } | 
 | #endif  // BUILDFLAG(IS_ANDROID) | 
 |  | 
 | }  // namespace autofill |