Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Unified Diff: extensions/renderer/binding_access_checker.h

Issue 2947843004: [Extensions Bindings] Introduce BindingAccessChecker (Closed)
Patch Set: lazyboy's Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/renderer/api_bindings_system.cc ('k') | extensions/renderer/binding_access_checker.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/renderer/binding_access_checker.h
diff --git a/extensions/renderer/binding_access_checker.h b/extensions/renderer/binding_access_checker.h
new file mode 100644
index 0000000000000000000000000000000000000000..b0122a89b7b23b8b3d6539550f58f2fc5c8eaff3
--- /dev/null
+++ b/extensions/renderer/binding_access_checker.h
@@ -0,0 +1,45 @@
+// Copyright 2017 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 EXTENSIONS_RENDERER_BINDING_ACCESS_CHECKER_H_
+#define EXTENSIONS_RENDERER_BINDING_ACCESS_CHECKER_H_
+
+#include <string>
+
+#include "base/callback.h"
+#include "base/macros.h"
+#include "v8/include/v8.h"
+
+namespace extensions {
+
+// A helper class to handle access-checking API features.
+class BindingAccessChecker {
+ public:
+ // The callback for determining if a given API feature (specified by |name|)
+ // is available in the given context.
+ using AvailabilityCallback =
+ base::Callback<bool(v8::Local<v8::Context>, const std::string& name)>;
+
+ BindingAccessChecker(const AvailabilityCallback& is_available);
+ ~BindingAccessChecker();
+
+ // Returns true if the feature specified by |full_name| is available to the
+ // given |context|.
+ bool HasAccess(v8::Local<v8::Context> context,
+ const std::string& full_name) const;
+
+ // Same as HasAccess(), but throws an exception in the |context| if it doesn't
+ // have access.
+ bool HasAccessOrThrowError(v8::Local<v8::Context> context,
+ const std::string& full_name) const;
+
+ private:
+ AvailabilityCallback is_available_;
+
+ DISALLOW_COPY_AND_ASSIGN(BindingAccessChecker);
+};
+
+} // namespace extensions
+
+#endif // EXTENSIONS_RENDERER_BINDING_ACCESS_CHECKER_H_
« no previous file with comments | « extensions/renderer/api_bindings_system.cc ('k') | extensions/renderer/binding_access_checker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698