#include "chrome/browser/devtools/protocol/extensions_handler.h"
#include <memory>
#include <string>
#include "base/files/file_path.h"
#include "base/functional/bind.h"
#include "chrome/browser/devtools/protocol/extensions.h"
#include "chrome/browser/devtools/protocol/protocol.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/unpacked_installer.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "content/public/browser/devtools_agent_host.h"
#include "content/public/browser/service_worker_context.h"
#include "content/public/browser/web_contents.h"
#include "extensions/browser/api/storage/storage_area_namespace.h"
#include "extensions/browser/extension_system.h"
#include "extensions/browser/extension_util.h"
namespace {
std::optional<const extensions::Extension*> MaybeGetExtension(
const std::string& id,
scoped_refptr<content::DevToolsAgentHost> host) { … }
struct GetExtensionAndStorageFrontendResult { … };
GetExtensionAndStorageFrontendResult GetExtensionAndStorageFrontend(
const std::string target_id_,
const protocol::String& extension_id,
const protocol::String& storage_area) { … }
}
ExtensionsHandler::ExtensionsHandler(protocol::UberDispatcher* dispatcher,
const std::string& target_id,
bool allow_loading_extensions)
: … { … }
ExtensionsHandler::~ExtensionsHandler() = default;
void ExtensionsHandler::LoadUnpacked(
const protocol::String& path,
std::unique_ptr<ExtensionsHandler::LoadUnpackedCallback> callback) { … }
void ExtensionsHandler::OnLoaded(std::unique_ptr<LoadUnpackedCallback> callback,
const extensions::Extension* extension,
const base::FilePath& path,
const std::string& err) { … }
void ExtensionsHandler::GetStorageItems(
const protocol::String& id,
const protocol::String& storage_area,
protocol::Maybe<protocol::Array<protocol::String>> keys,
std::unique_ptr<ExtensionsHandler::GetStorageItemsCallback> callback) { … }
void ExtensionsHandler::OnGetStorageItemsFinished(
std::unique_ptr<ExtensionsHandler::GetStorageItemsCallback> callback,
extensions::StorageFrontend::GetResult result) { … }
void ExtensionsHandler::SetStorageItems(
const protocol::String& id,
const protocol::String& storage_area,
std::unique_ptr<protocol::DictionaryValue> values,
std::unique_ptr<SetStorageItemsCallback> callback) { … }
void ExtensionsHandler::OnSetStorageItemsFinished(
std::unique_ptr<SetStorageItemsCallback> callback,
extensions::StorageFrontend::ResultStatus status) { … }
void ExtensionsHandler::RemoveStorageItems(
const protocol::String& id,
const protocol::String& storage_area,
std::unique_ptr<protocol::Array<protocol::String>> keys,
std::unique_ptr<RemoveStorageItemsCallback> callback) { … }
void ExtensionsHandler::OnRemoveStorageItemsFinished(
std::unique_ptr<RemoveStorageItemsCallback> callback,
extensions::StorageFrontend::ResultStatus status) { … }
void ExtensionsHandler::ClearStorageItems(
const protocol::String& id,
const protocol::String& storage_area,
std::unique_ptr<ClearStorageItemsCallback> callback) { … }
void ExtensionsHandler::OnClearStorageItemsFinished(
std::unique_ptr<ClearStorageItemsCallback> callback,
extensions::StorageFrontend::ResultStatus status) { … }