Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / extensions / browser / api / declarative / declarative_api.h
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_DECLARATIVE_API_H_
6 #define EXTENSIONS_BROWSER_API_DECLARATIVE_DECLARATIVE_API_H_
7
8 #include "base/compiler_specific.h"
9 #include "base/memory/ref_counted.h"
10 #include "extensions/browser/api/declarative/rules_registry.h"
11 #include "extensions/browser/extension_function.h"
12
13 namespace extensions {
14
15 class RulesFunction : public AsyncExtensionFunction {
16  public:
17   RulesFunction();
18
19  protected:
20   ~RulesFunction() override;
21
22   // ExtensionFunction:
23   bool HasPermission() override;
24   bool RunAsync() override;
25
26   // Concrete implementation of the RulesFunction that is being called
27   // on the thread on which the respective RulesRegistry lives.
28   // Returns false in case of errors.
29   virtual bool RunAsyncOnCorrectThread() = 0;
30
31   scoped_refptr<RulesRegistry> rules_registry_;
32 };
33
34 class EventsEventAddRulesFunction : public RulesFunction {
35  public:
36   DECLARE_EXTENSION_FUNCTION("events.addRules", EVENTS_ADDRULES)
37
38  protected:
39   ~EventsEventAddRulesFunction() override {}
40
41   // RulesFunction:
42   bool RunAsyncOnCorrectThread() override;
43 };
44
45 class EventsEventRemoveRulesFunction : public RulesFunction {
46  public:
47   DECLARE_EXTENSION_FUNCTION("events.removeRules", EVENTS_REMOVERULES)
48
49  protected:
50   ~EventsEventRemoveRulesFunction() override {}
51
52   // RulesFunction:
53   bool RunAsyncOnCorrectThread() override;
54 };
55
56 class EventsEventGetRulesFunction : public RulesFunction {
57  public:
58   DECLARE_EXTENSION_FUNCTION("events.getRules", EVENTS_GETRULES)
59
60  protected:
61   ~EventsEventGetRulesFunction() override {}
62
63   // RulesFunction:
64   bool RunAsyncOnCorrectThread() override;
65 };
66
67 }  // namespace extensions
68
69 #endif  // EXTENSIONS_BROWSER_API_DECLARATIVE_DECLARATIVE_API_H_