| // Copyright 2015 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/extensions/extension_migrator.h" | 
 |  | 
 | #include <utility> | 
 |  | 
 | #include "base/values.h" | 
 | #include "chrome/browser/defaults.h" | 
 | #include "chrome/browser/extensions/external_provider_impl.h" | 
 | #include "chrome/browser/profiles/profile.h" | 
 | #include "extensions/browser/extension_registry.h" | 
 | #include "extensions/common/extension_urls.h" | 
 |  | 
 | namespace extensions { | 
 |  | 
 | ExtensionMigrator::ExtensionMigrator(Profile* profile, | 
 |                                      const std::string& old_id, | 
 |                                      const std::string& new_id) | 
 |     : profile_(profile), old_id_(old_id), new_id_(new_id) {} | 
 |  | 
 | ExtensionMigrator::~ExtensionMigrator() { | 
 | } | 
 |  | 
 | void ExtensionMigrator::StartLoading() { | 
 |   auto prefs = std::make_unique<base::DictionaryValue>(); | 
 |  | 
 |   const bool should_have_extension = | 
 |       IsAppPresent(old_id_) || IsAppPresent(new_id_); | 
 |   if (should_have_extension) { | 
 |     std::unique_ptr<base::DictionaryValue> entry(new base::DictionaryValue); | 
 |     entry->SetKey(ExternalProviderImpl::kExternalUpdateUrl, | 
 |                   base::Value(extension_urls::GetWebstoreUpdateUrl().spec())); | 
 |  | 
 |     prefs->SetWithoutPathExpansion(new_id_, std::move(entry)); | 
 |   } | 
 |  | 
 |   LoadFinished(std::move(prefs)); | 
 | } | 
 |  | 
 | bool ExtensionMigrator::IsAppPresent(const std::string& app_id) { | 
 |   return !!ExtensionRegistry::Get(profile_)->GetInstalledExtension(app_id); | 
 | } | 
 |  | 
 | }  // namespace extensions |