automation.h revision 010d83a9304c5a91596085d917d248abff47903a
1// Copyright 2014 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 CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_AUTOMATION_H_
6#define CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_AUTOMATION_H_
7
8#include <string>
9
10#include "base/memory/scoped_ptr.h"
11#include "extensions/common/extension.h"
12#include "extensions/common/manifest_handler.h"
13#include "extensions/common/url_pattern_set.h"
14#include "extensions/common/user_script.h"
15
16namespace extensions {
17
18class URLPatternSet;
19
20namespace automation_errors {
21extern const char kErrorInvalidMatchPattern[];
22extern const char kErrorDesktopTrueInteractFalse[];
23extern const char kErrorDesktopTrueMatchesSpecified[];
24extern const char kErrorURLMalformed[];
25extern const char kErrorInvalidMatch[];
26extern const char kErrorNoMatchesProvided[];
27}
28
29// Parses the automation manifest entry.
30class AutomationHandler : public ManifestHandler {
31 public:
32  AutomationHandler();
33  virtual ~AutomationHandler();
34
35  virtual bool Parse(Extension* extensions, base::string16* error) OVERRIDE;
36
37 private:
38  virtual const std::vector<std::string> Keys() const OVERRIDE;
39
40  DISALLOW_COPY_AND_ASSIGN(AutomationHandler);
41};
42
43// The parsed form of the automation manifest entry.
44struct AutomationInfo : public Extension::ManifestData {
45 public:
46  static const AutomationInfo* Get(const Extension* extension);
47  static scoped_ptr<AutomationInfo> FromValue(
48      const base::Value& value,
49      std::vector<InstallWarning>* install_warnings,
50      base::string16* error);
51
52  virtual ~AutomationInfo();
53
54  // true if the extension has requested 'desktop' permission.
55  const bool desktop;
56
57  // Returns the list of hosts that this extension can request an automation
58  // tree from.
59  const URLPatternSet matches;
60
61  // Whether the extension is allowed interactive access (true) or read-only
62  // access (false) to the automation tree.
63  const bool interact;
64
65  // Whether any matches were specified (false if automation was specified as a
66  // boolean, or no matches key was provided.
67  const bool specified_matches;
68
69 private:
70  AutomationInfo();
71  AutomationInfo(bool desktop,
72                 const URLPatternSet& matches,
73                 bool interact,
74                 bool specified_matches);
75  DISALLOW_COPY_AND_ASSIGN(AutomationInfo);
76};
77
78}  // namespace extensions
79
80#endif  // CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_AUTOMATION_H_
81