// 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/autocomplete/shortcuts_extensions_manager.h"

#include "chrome/browser/autocomplete/shortcuts_backend_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "components/omnibox/browser/shortcuts_backend.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/common/extension.h"

ShortcutsExtensionsManager::ShortcutsExtensionsManager(Profile* profile)
    : registry_observer_(this), profile_(profile) {
  DCHECK(profile_);
  registry_observer_.Add(extensions::ExtensionRegistry::Get(profile_));
}

ShortcutsExtensionsManager::~ShortcutsExtensionsManager() {}

void ShortcutsExtensionsManager::OnExtensionUnloaded(
    content::BrowserContext* browser_context,
    const extensions::Extension* extension,
    extensions::UnloadedExtensionReason reason) {
  scoped_refptr<ShortcutsBackend> shortcuts_backend =
      ShortcutsBackendFactory::GetForProfileIfExists(profile_);
  if (!shortcuts_backend)
    return;

  // When an extension is unloaded, we want to remove any Shortcuts associated
  // with it.
  shortcuts_backend->DeleteShortcutsBeginningWithURL(extension->url());
}

void ShortcutsExtensionsManager::OnShutdown(
    extensions::ExtensionRegistry* registry) {
  registry_observer_.RemoveAll();
}
