#include "chrome/browser/extensions/preference/preference_helpers.h"
#include <memory>
#include <utility>
#include "base/json/json_writer.h"
#include "base/values.h"
#include "chrome/browser/extensions/extension_util.h"
#include "chrome/browser/profiles/profile.h"
#include "components/prefs/pref_service.h"
#include "extensions/browser/event_router.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_prefs_helper.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_util.h"
#include "extensions/common/extension_id.h"
#include "extensions/common/manifest_handlers/incognito_info.h"
#include "extensions/common/permissions/permissions_data.h"
namespace extensions {
namespace preference_helpers {
namespace {
constexpr char kNotControllable[] = …;
constexpr char kControlledByOtherExtensions[] = …;
constexpr char kControllableByThisExtension[] = …;
constexpr char kControlledByThisExtension[] = …;
constexpr char kLevelOfControlKey[] = …;
}
LevelOfControlGetter;
PrefService* GetProfilePrefService(Profile* profile, bool incognito) { … }
const char* GetLevelOfControl(Profile* profile,
const ExtensionId& extension_id,
const std::string& browser_pref,
bool incognito) { … }
void DispatchEventToExtensionsImpl(Profile* profile,
events::HistogramValue histogram_value,
const std::string& event_name,
base::Value::List args,
mojom::APIPermissionID permission,
bool incognito,
const std::string& browser_pref,
const LevelOfControlGetter level_getter) { … }
#if BUILDFLAG(IS_CHROMEOS_LACROS)
void DispatchEventToExtensionsWithAshControlState(
Profile* profile,
events::HistogramValue histogram_value,
const std::string& event_name,
base::Value::List args,
mojom::APIPermissionID permission,
bool incognito,
const std::string& browser_pref,
crosapi::mojom::PrefControlState control_state) {
DispatchEventToExtensionsImpl(
profile, histogram_value, event_name, std::move(args), permission,
incognito, browser_pref,
base::BindRepeating(&GetLevelOfControlWithAshControlState,
control_state));
}
const char* GetLevelOfControlWithAshControlState(
crosapi::mojom::PrefControlState control_state,
Profile* profile,
const ExtensionId& extension_id,
const std::string& browser_pref,
bool incognito) {
switch (control_state) {
case crosapi::mojom::PrefControlState::kNotExtensionControllable:
return preference_helpers::kNotControllable;
case crosapi::mojom::PrefControlState::kLacrosExtensionControllable:
return preference_helpers::kControllableByThisExtension;
case crosapi::mojom::PrefControlState::kLacrosExtensionControlled:
case crosapi::mojom::PrefControlState::kNotExtensionControlledPrefPath:
case crosapi::mojom::PrefControlState::kDefaultUnknown:
return extensions::preference_helpers::GetLevelOfControl(
profile, extension_id, browser_pref, incognito);
}
}
#endif
void DispatchEventToExtensions(Profile* profile,
events::HistogramValue histogram_value,
const std::string& event_name,
base::Value::List args,
mojom::APIPermissionID permission,
bool incognito,
const std::string& browser_pref) { … }
}
}