1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef EXTENSIONS_BROWSER_API_DECLARATIVE_TEST_RULES_REGISTRY_H__
6#define EXTENSIONS_BROWSER_API_DECLARATIVE_TEST_RULES_REGISTRY_H__
7
8#include "extensions/browser/api/declarative/rules_registry.h"
9
10namespace extensions {
11
12// This is a trivial test RulesRegistry that can only store and retrieve rules.
13class TestRulesRegistry : public RulesRegistry {
14 public:
15  TestRulesRegistry(content::BrowserThread::ID owner_thread,
16                    const std::string& event_name,
17                    const WebViewKey& webview_key);
18  TestRulesRegistry(
19      content::BrowserContext* browser_context,
20      const std::string& event_name,
21      content::BrowserThread::ID owner_thread,
22      RulesCacheDelegate* cache_delegate,
23      const WebViewKey& webview_key);
24
25  // RulesRegistry implementation:
26  virtual std::string AddRulesImpl(
27      const std::string& extension_id,
28      const std::vector<linked_ptr<RulesRegistry::Rule> >& rules) OVERRIDE;
29  virtual std::string RemoveRulesImpl(
30      const std::string& extension_id,
31      const std::vector<std::string>& rule_identifiers) OVERRIDE;
32  virtual std::string RemoveAllRulesImpl(
33      const std::string& extension_id) OVERRIDE;
34
35  // Sets the result message that will be returned by the next call of
36  // AddRulesImpl, RemoveRulesImpl and RemoveAllRulesImpl.
37  void SetResult(const std::string& result);
38
39 protected:
40  virtual ~TestRulesRegistry();
41
42 private:
43  // The string that gets returned by the implementation functions of
44  // RulesRegistry. Defaults to "".
45  std::string result_;
46
47  DISALLOW_COPY_AND_ASSIGN(TestRulesRegistry);
48};
49
50}  // namespace extensions
51
52#endif  // EXTENSIONS_BROWSER_API_DECLARATIVE_TEST_RULES_REGISTRY_H__
53