blob: dd1838dcd6c1d0426b6e844bff134893c01f42a5 [file] [log] [blame]
// Copyright 2013 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 "extensions/browser/info_map.h"
#include "base/strings/string_util.h"
#include "extensions/browser/content_verifier.h"
#include "extensions/browser/unloaded_extension_reason.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
using content::BrowserThread;
namespace extensions {
namespace {
void CheckOnValidThread() { DCHECK_CURRENTLY_ON(BrowserThread::IO); }
} // namespace
InfoMap::InfoMap() {}
const ExtensionSet& InfoMap::extensions() const {
CheckOnValidThread();
return extensions_;
}
void InfoMap::AddExtension(const Extension* extension,
base::Time install_time,
bool incognito_enabled,
bool notifications_disabled) {
CheckOnValidThread();
extensions_.Insert(extension);
}
void InfoMap::RemoveExtension(const std::string& extension_id,
const UnloadedExtensionReason reason) {
CheckOnValidThread();
const Extension* extension = extensions_.GetByID(extension_id);
bool was_uninstalled = (reason != UnloadedExtensionReason::DISABLE &&
reason != UnloadedExtensionReason::TERMINATE);
if (extension) {
extensions_.Remove(extension_id);
} else if (!was_uninstalled) {
// NOTE: This can currently happen if we receive multiple unload
// notifications, e.g. setting incognito-enabled state for a
// disabled extension (e.g., via sync). See
// http://code.google.com/p/chromium/issues/detail?id=50582 .
NOTREACHED() << extension_id;
}
}
void InfoMap::SetContentVerifier(ContentVerifier* verifier) {
content_verifier_ = verifier;
}
InfoMap::~InfoMap() = default;
} // namespace extensions