chromium/chrome/browser/extensions/preference/preference_helpers.cc

// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#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[] =;

}  // namespace

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  // BUILDFLAG(IS_CHROMEOS_LACROS)

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) {}
}  // namespace preference_helpers
}  // namespace extensions