#ifndef EXTENSIONS_BROWSER_API_DECLARATIVE_DECLARATIVE_RULE_H__
#define EXTENSIONS_BROWSER_API_DECLARATIVE_DECLARATIVE_RULE_H__
#include <limits>
#include <set>
#include <string>
#include <utility>
#include <vector>
#include "base/functional/callback.h"
#include "base/memory/ptr_util.h"
#include "base/time/time.h"
#include "base/values.h"
#include "components/url_matcher/url_matcher.h"
#include "extensions/common/api/events.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_id.h"
namespace base {
class Time;
}
namespace content {
class BrowserContext;
}
namespace extensions {
template<typename ConditionT>
class DeclarativeConditionSet { … };
template<typename ActionT>
class DeclarativeActionSet { … };
template<typename ConditionT, typename ActionT>
class DeclarativeRule { … };
template <typename ConditionT>
bool DeclarativeConditionSet<ConditionT>::IsFulfilled(
base::MatcherStringPattern::ID url_match_trigger,
const typename ConditionT::MatchData& match_data) const { … }
template<typename ConditionT>
void DeclarativeConditionSet<ConditionT>::GetURLMatcherConditionSets(
url_matcher::URLMatcherConditionSet::Vector* condition_sets) const { … }
template <typename ConditionT>
std::unique_ptr<DeclarativeConditionSet<ConditionT>>
DeclarativeConditionSet<ConditionT>::Create(
const Extension* extension,
url_matcher::URLMatcherConditionFactory* url_matcher_condition_factory,
const base::Value::List& condition_values,
std::string* error) { … }
template <typename ConditionT>
DeclarativeConditionSet<ConditionT>::DeclarativeConditionSet(
Conditions conditions,
const URLMatcherIdToCondition& match_id_to_condition,
const std::vector<const ConditionT*>& conditions_without_urls)
: … { … }
template<typename ActionT>
DeclarativeActionSet<ActionT>::DeclarativeActionSet(const Actions& actions)
: … { … }
template <typename ActionT>
std::unique_ptr<DeclarativeActionSet<ActionT>>
DeclarativeActionSet<ActionT>::Create(content::BrowserContext* browser_context,
const Extension* extension,
const base::Value::List& action_values,
std::string* error,
bool* bad_message) { … }
template <typename ActionT>
void DeclarativeActionSet<ActionT>::Apply(
const ExtensionId& extension_id,
const base::Time& extension_install_time,
typename ActionT::ApplyInfo* apply_info) const { … }
template <typename ActionT>
void DeclarativeActionSet<ActionT>::Reapply(
const ExtensionId& extension_id,
const base::Time& extension_install_time,
typename ActionT::ApplyInfo* apply_info) const { … }
template <typename ActionT>
void DeclarativeActionSet<ActionT>::Revert(
const ExtensionId& extension_id,
const base::Time& extension_install_time,
typename ActionT::ApplyInfo* apply_info) const { … }
template<typename ActionT>
int DeclarativeActionSet<ActionT>::GetMinimumPriority() const { … }
template <typename ConditionT, typename ActionT>
DeclarativeRule<ConditionT, ActionT>::DeclarativeRule(
const GlobalRuleId& id,
const Tags& tags,
base::Time extension_installation_time,
std::unique_ptr<ConditionSet> conditions,
std::unique_ptr<ActionSet> actions,
Priority priority)
: … { … }
template <typename ConditionT, typename ActionT>
std::unique_ptr<DeclarativeRule<ConditionT, ActionT>>
DeclarativeRule<ConditionT, ActionT>::Create(
url_matcher::URLMatcherConditionFactory* url_matcher_condition_factory,
content::BrowserContext* browser_context,
const Extension* extension,
base::Time extension_installation_time,
const JsonRule& rule,
ConsistencyChecker check_consistency,
std::string* error) { … }
template<typename ConditionT, typename ActionT>
void DeclarativeRule<ConditionT, ActionT>::Apply(
typename ActionT::ApplyInfo* apply_info) const { … }
template<typename ConditionT, typename ActionT>
int DeclarativeRule<ConditionT, ActionT>::GetMinimumPriority() const { … }
}
#endif