blob: fb68ee38551e4d6b726dd5b7164776bb1a0d7dd6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
// Copyright (c) 2011 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.
#ifndef CHROME_COMMON_EXTENSIONS_API_EXTENSION_API_H_
#define CHROME_COMMON_EXTENSIONS_API_EXTENSION_API_H_
#pragma once
#include <string>
#include "base/basictypes.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/singleton.h"
namespace base {
class DictionaryValue;
class ListValue;
}
namespace extensions {
// C++ Wrapper for the JSON API definitions in chrome/common/extensions/api/.
class ExtensionAPI {
public:
// Returns the single instance of this class.
static ExtensionAPI* GetInstance();
const base::ListValue* value() const {
return value_.get();
}
// Returns ture if |name| is a privileged API. Privileged APIs can only be
// called from extension code which is running in its own designated extension
// process. They cannot be called from extension code running in content
// scripts, or other low-privileged processes.
bool IsPrivileged(const std::string& name) const;
private:
friend struct DefaultSingletonTraits<ExtensionAPI>;
ExtensionAPI();
~ExtensionAPI();
// Find an item in |list| with the specified property name and value, or NULL
// if no such item exists.
base::DictionaryValue* FindListItem(base::ListValue* list,
const std::string& property_name,
const std::string& property_value) const;
// Returns true if the function or event under |namespace_node| with
// the specified |child_name| is privileged, or false otherwise. If the name
// is not found, defaults to privileged.
bool IsChildNamePrivileged(base::DictionaryValue* namespace_node,
const std::string& child_kind,
const std::string& child_name) const;
static ExtensionAPI* instance_;
scoped_ptr<base::ListValue> value_;
DISALLOW_COPY_AND_ASSIGN(ExtensionAPI);
};
} // extensions
#endif // CHROME_COMMON_EXTENSIONS_API_EXTENSION_API_H_
|