| Index: chrome/browser/extensions/api/declarative_webrequest/webrequest_rule.cc
|
| diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rule.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rule.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c64d2ed2d2eebf11bf3641457cd06441e5007b0a
|
| --- /dev/null
|
| +++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rule.cc
|
| @@ -0,0 +1,66 @@
|
| +// Copyright (c) 2012 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 "chrome/browser/extensions/api/declarative_webrequest/webrequest_rule.h"
|
| +
|
| +#include "base/logging.h"
|
| +#include "chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h"
|
| +#include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condition.h"
|
| +
|
| +namespace extensions {
|
| +
|
| +WebRequestRule::WebRequestRule(
|
| + const GlobalRuleId& id,
|
| + scoped_ptr<WebRequestConditionCollection> conditions,
|
| + scoped_ptr<WebRequestActionCollection> actions)
|
| + : id_(id),
|
| + conditions_(conditions.release()),
|
| + actions_(actions.release()) {
|
| + CHECK(conditions_.get());
|
| + CHECK(actions_.get());
|
| +}
|
| +
|
| +WebRequestRule::~WebRequestRule() {}
|
| +
|
| +// static
|
| +bool WebRequestRule::CheckConsistency(
|
| + WebRequestConditionCollection* conditions,
|
| + WebRequestActionCollection* actions,
|
| + std::string* error) {
|
| + // TODO(battre): Implement this.
|
| + return true;
|
| +}
|
| +
|
| +// static
|
| +scoped_ptr<WebRequestRule> WebRequestRule::Create(
|
| + URLMatcherConditionFactory* url_matcher_condition_factory,
|
| + const std::string& extension_id,
|
| + linked_ptr<RulesRegistry::Rule> rule,
|
| + std::string* error) {
|
| + scoped_ptr<WebRequestRule> error_result;
|
| +
|
| + scoped_ptr<WebRequestConditionCollection> conditions =
|
| + WebRequestConditionCollection::Create(
|
| + url_matcher_condition_factory, rule->conditions, error);
|
| + if (!error->empty())
|
| + return error_result.Pass();
|
| + CHECK(conditions.get());
|
| +
|
| + scoped_ptr<WebRequestActionCollection> actions =
|
| + WebRequestActionCollection::Create(rule->actions, error);
|
| + if (!error->empty())
|
| + return error_result.Pass();
|
| + CHECK(actions.get());
|
| +
|
| + if (!CheckConsistency(conditions.get(), actions.get(), error)) {
|
| + DCHECK(!error->empty());
|
| + return error_result.Pass();
|
| + }
|
| +
|
| + GlobalRuleId rule_id = make_pair(extension_id, *(rule->id));
|
| + return scoped_ptr<WebRequestRule>(
|
| + new WebRequestRule(rule_id, conditions.Pass(), actions.Pass()));
|
| +}
|
| +
|
| +} // namespace extensions
|
|
|