| // Copyright 2016 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "chrome/browser/chromeos/printing/ppd_provider_factory.h" | 
 |  | 
 | #include "base/files/file_path.h" | 
 | #include "base/time/default_clock.h" | 
 | #include "chrome/browser/browser_process.h" | 
 | #include "chrome/browser/net/system_network_context_manager.h" | 
 | #include "chrome/browser/profiles/profile.h" | 
 | #include "chromeos/printing/ppd_cache.h" | 
 | #include "chromeos/printing/ppd_provider_v3.h" | 
 | #include "components/version_info/version_info.h" | 
 | #include "content/public/browser/browser_thread.h" | 
 | #include "google_apis/google_api_keys.h" | 
 |  | 
 | namespace chromeos { | 
 | namespace { | 
 |  | 
 | network::mojom::URLLoaderFactory* GetURLLoaderFactory() { | 
 |   DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 
 |   return g_browser_process->system_network_context_manager() | 
 |       ->GetURLLoaderFactory(); | 
 | } | 
 |  | 
 | }  // namespace | 
 |  | 
 | scoped_refptr<PpdProvider> CreatePpdProvider(Profile* profile) { | 
 |   base::FilePath ppd_cache_path = | 
 |       profile->GetPath().Append(FILE_PATH_LITERAL("PPDCache")); | 
 |  | 
 |   auto provider_config_cache = | 
 |       PrinterConfigCache::Create(base::DefaultClock::GetInstance(), | 
 |                                  base::BindRepeating(&GetURLLoaderFactory)); | 
 |  | 
 |   auto manager_config_cache = | 
 |       PrinterConfigCache::Create(base::DefaultClock::GetInstance(), | 
 |                                  base::BindRepeating(&GetURLLoaderFactory)); | 
 |   auto metadata_manager = PpdMetadataManager::Create( | 
 |       g_browser_process->GetApplicationLocale(), | 
 |       base::DefaultClock::GetInstance(), std::move(manager_config_cache)); | 
 |  | 
 |   return CreateV3Provider( | 
 |       version_info::GetVersion(), PpdCache::Create(ppd_cache_path), | 
 |       std::move(metadata_manager), std::move(provider_config_cache)); | 
 | } | 
 |  | 
 | }  // namespace chromeos |