1 // Copyright 2018 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/extensions/chrome_zipfile_installer.h" 6 7 #include "base/bind.h" 8 #include "base/check.h" 9 #include "base/files/file_path.h" 10 #include "base/memory/weak_ptr.h" 11 #include "chrome/browser/extensions/extension_service.h" 12 #include "chrome/browser/extensions/load_error_reporter.h" 13 #include "chrome/browser/extensions/unpacked_installer.h" 14 #include "chrome/browser/profiles/profile.h" 15 16 namespace extensions { 17 MakeRegisterInExtensionServiceCallback(ExtensionService * service)18ZipFileInstaller::DoneCallback MakeRegisterInExtensionServiceCallback( 19 ExtensionService* service) { 20 return base::BindOnce( 21 [](base::WeakPtr<ExtensionService> extension_service_weak, 22 const base::FilePath& zip_file, const base::FilePath& unzip_dir, 23 const std::string& error) { 24 if (!extension_service_weak) 25 return; 26 27 if (!unzip_dir.empty()) { 28 DCHECK(error.empty()); 29 UnpackedInstaller::Create(extension_service_weak.get()) 30 ->Load(unzip_dir); 31 return; 32 } 33 DCHECK(!error.empty()); 34 LoadErrorReporter::GetInstance()->ReportLoadError( 35 zip_file, error, extension_service_weak->profile(), 36 /*noisy_on_failure=*/true); 37 }, 38 service->AsWeakPtr()); 39 } 40 41 } // namespace extensions 42